foudfou / FireTray

Mozilla icon tray. DISCONTINUED
https://foudfou.github.io/FireTray/
Other
102 stars 64 forks source link

Thunderbird 57+ support #238

Closed salaros closed 4 years ago

salaros commented 6 years ago

This message is for contributors (people who fork this repo): please implement mozilla57+ migrations in order to make this addon compatible with TB 57+

UksusoFF commented 6 years ago

@salaros https://foudil.fr/blog/209/the-web-is-not-the-platform/

yannours commented 6 years ago

@salaros You can still use the actual firetray for thunderbird 50+ by force download the addon & install it manually in the option, I did it for 52.6.0 (64-bit) and it works properly.

salaros commented 6 years ago

@yannours yeah, it worked on versions <= 52, but as you can see I opened this ticker for versions >= 57 If you don't believe me, just try upgrading to Thunderbird 57/58 👍

yannours commented 6 years ago

@salaros Ofc I believe you :) My bad wasn't wondering a 57+ disrupting, no way for me to upgrade so :D

salaros commented 6 years ago

@yannours some massive API changes took place in 52 -> 57/58 transition, with many breaking changes That's why I wanted some to take a look at it, before I got with a rewrite (probably I will have to, right after TB 57/58 goes stable)

ghost commented 6 years ago

Is someone planning to fork this project?

salaros commented 6 years ago

@jonlandrum I'm planning to do it if I fail to find a new maintainer for TB 57+ version here, I already maintain tons of open-source projects (some of them are mine, some were adopted), that's why I'm hesitating and trying to find some help before attempting a rewrite by myself

kelvinau commented 6 years ago

It will be great for 60+ version too :)

s-m-e commented 6 years ago

In case anyone is considering a fork or devoting some time into making just any tray add-on for Thunderbird 60+ work again, I am hereby cross-referencing MinTrayR issue 238.

CubicF commented 6 years ago

I forked FireTray yesterday (because it seems to be the only minimize-to-tray extension that shows the number of currently unread messages) to see how far I can get (I had no experience with JS yet).

I did some minor updates according to the Thunderbird/Add-ons Guide 57 but ran into the problem that the .xpi file was not unpacked during installation (addon.pack in XPIInstall.jsm in line 1858 is not set).

I managed to install the extension using a text file to reference the unpacked extension files as described here. But after the installation of the extension Thunderbird crashes within seconds after every application start.

I was not able to figure out how to properly debug the extension on startup. So my next approach would be to turn the extension into a bootstrapped extension to make debugging easier. I already began the work in the bootstrap branch, but step 6 seems to be a bit more work that I won't have time for in the next few weeks.

rodricels commented 6 years ago

@CubicF FYI, I tried your fork (bootstrap and thunderbird_quantion branches), thanks!

I found:

Thunderbird 60, Ubuntu 18.04 with Cinnamon 3.8

jamesrobb commented 6 years ago

@CubicF I also tried your fork. It installed, but it didn't seem to do anything.

There didn't appear to be any configuration menu available from the add-ons menu, and I didn't see any icons in my system tray. I'm not sure what exactly the expected behaviour should be.

Thunderbird 60, Manjaro Linux 17.1.12 with Gnome 3.28.2

CubicF commented 6 years ago

@jamesrobb If you tried to install the .xpi file it was presumably not unpacked during installation (at least this was the case for me). Therefore some icons can not be found (as you can see in the error console, which can be found in the "Tools -> developer tools" menu).

As I already mentioned, I tried to circumvent that problem by install the extension via referencing the unpacked sources. But if I do this, Thunderbird crashes at start-up before I can open the error console to see what went wrong.

Despite converting to a boot-strapped extension for better debugging (which would need some time because I have virtually no knowledge of the subject) I'm pretty clueless.

kolinger commented 6 years ago

Support for unpacked extension was removed (https://blog.mozilla.org/addons/2018/02/22/removing-support-unpacked-extensions/). This is why "unpack true" will not work anymore. I tried to load native libraries via ctypes from packed xpi file but this always fails (ctypes.open, error 126/file not found).

https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open This page is saying that ctypes.open() will load from xpi/jar but it doesn't work. I checked everything. Packed xpi file is okay, libraries are in there, in correct folder. Path is generated exactly as said in documentiation. But it fails. With "jar:" without "jar:". Any combination. Always fails with "not found" error.

Ugly hack can be implemented (like placing native libraries outside xpi, in some predefined path). This will break instalation process and extra steps will be needed. This solution will be unusable for less experienced users. Using unpacked extension in dev mode (via proxy file) is also ugly/not portable hack.

Even if hacked then this may not work for long. Firefox did kill ctypes already (https://bugzilla.mozilla.org/show_bug.cgi?id=1444502). Also firefox will soon (or already did) drop support for "legacy" extensions. WebExtensions is the future. WebExtensions will not support ctypes either https://discourse.mozilla.org/t/ctypes-possible-in-webextensions/12490. Thunderbird slowly follows this path.

I don't see any way how to fix this issue properly. There is no long term solution.


This issues is hard to fix and fix may not work for long. Firefox/Thunderbird is killing powerful utilities for extensions (because of security). And tray extensions need these powerful utilities to work.

This should by implemented in firefox/thunderbird natively. Great solution for everyone. But it won't happen https://bugzilla.mozilla.org/show_bug.cgi?format=default&id=208923.

So Firefox/Thunderbird will not implement this but they remove support for extensions. Yea... We can't do much. This is about direction what Firefox and Thunderbird is heading...

I hope they will change their mind about native implementation. There is no other way.

Prove me wrong. Please.

firetray-updates commented 6 years ago

I continued what CubicF started and got FireTray up and running. The addon seems to work fine, but I barely used it and didn't try everything.

The changes I made are here: https://github.com/firetray-updates/FireTray/tree/thunderbird-57

kilobyte commented 6 years ago

@firetray-updates: your version does show an icon with new mail count, but closing the window kills Thunderbird, and minimizing it keeps it on the task bar. (Debian, xfce)

YamashitaRen commented 6 years ago

@kilobyte Not having theses issues on Plasma5/SystemTray. Didn't try appindicator. Using it without appindicator prevents you from getting the new mail count though...

firetray-updates commented 6 years ago

@kilobyte FireTray is disabling the chat plugin here because it's not supported, so I missed the firetray.Messaging.Accounts() there. I updated the code (force-pushed), try it now.

kilobyte commented 6 years ago

@firetray-updates: yay it works!

jamesrobb commented 6 years ago

@firetray-updates Can confirm! I don't seem to have a way to configure it yet, but the tray icon is indeed back. Thanks!

ZTHawk commented 6 years ago

Tried it on windows 10. Minimizing TB will keep it in taskbar. SysTray icon is visible but I cannot interact with that icon.

Thrilleratplay commented 6 years ago

@firetray-updates Also can confirm with using XFCE. Thank you for fixing this. Mind publishing this as an official add on?

firetray-updates commented 6 years ago

@ZTHawk I'm sorry, I didn't try this on Windows. I suspect your problem is related to the unpacking issue that CubicF mentioned. I assume it's a Windows specific problem, because I didn't have to do anything special to install the addon.

@Thrilleratplay I'm not planning on supporting this ATM, I just fixed it because I like it and apparently it still needs some changes.

leledumbo commented 6 years ago

Nice! At least tray icon appears and close to tray works, clicking it also brings back the app which is all I need for this addon.

AdmiralAsshat commented 6 years ago

@firetray-updates, working well on Cinnamon. Thanks!

ghost commented 6 years ago

I wonder if Thunderbird contributors ever use Thunderbird themselves, since apparently this has been a feature request since 2003 and nobody in 15 years got uncomfortable enough to implement this core functionality in the application (I have never seen any other application that has "minimize to tray" functionality implemented as an addon, this is hilarious and absurd). Unfortunately, I am useless here, so, please, if you consider developing a new extension like FireTray, instead consider first implementing this in Thunderbird itself, be it AppIndicator, GtkTrayIcon -- basically, whatever at this point, since it will never be accepted upstream (ticket about this was marked as RESOLVED WONTFIX, also absurd), and we can just compile it ourselves.

kilobyte commented 6 years ago

@light2yellow: I for one use Thunderbird because of this functionality, and will look for another mail client the moment it stops working (in Debian, TB52 is still in stable and testing, only unstable has 60). The fix by @CubicF and @firetray-updates is great. My use case for Thunderbird is twofold: 1. glorified biff, 2. something to read that HTML mail from a business critter; for anything else I use mutt. No close-to-tray means the first — my main — use is out. And I receive ~1000 text mails per day (LKML is spammy...) vs maybe 12 HTMLs I elect to even open per year.

The only reason for WONTFIX was that "operating systems deprecate system tray". Except that Windows 10 recommendations explicitly list new mail notifications as valid use of the tray, and the only Linux environment that hypocritically deprecates tray despite using it itself is GNOME.

ZTHawk commented 6 years ago

@kilobyte If you found evidence that win10 recommends systray then you should post it on mozilla bug tracker to state the old reason as invalid.

kilobyte commented 6 years ago

" You are not allowed to make an additional comment on this bug. "

Here's Microsoft docs about notifications and systray icons. It lists Outlook as an example of "Correct" purpose of tray icon, and provides a long list of conditions that are required for a permanent icon to be acceptable, Thunderbird matching them all.

As for Linux: GNOME is a lost cause, and I have nothing but pity for its users. People who use any other environment can, and often want to, use systray.

jamesrobb commented 6 years ago

I think this is definitely something that should be brought up with the Thunderbird developers. I think its hasty to say that system trays are a thing of the past considering the majority of people today still use OSX and Windows, which to date still have system trays. For Linux, I don't think its fair to point out a single DE and use their ever evolving design paradigm as justification for not implementing a very common feature of a mail/messaging client.

YamashitaRen commented 6 years ago

I sure would have loved to make some passive-agressive comment about how "and on linux this isn't really a thing" is wrong. The bug report has been closed for wrong reasons and another one should be reopened. Unfortunately I can't be bothered with spearheading a bug report toward such close-minded developers...

kelvinau commented 6 years ago

I have switched to Evolution (https://wiki.gnome.org/Apps/Evolution). It can show the number of unread messages in the tray icon. That's enough for me already.

lisuml commented 6 years ago

For anyone interested, I created Arch AUR package that builds @firetray-updates fork.

ZTHawk commented 6 years ago

I have created a new bug report here: https://bugzilla.mozilla.org/show_bug.cgi?id=1490368

firetray-updates commented 6 years ago

@ZTHawk I have a VM with Windows 10, so yesterday I tried the addon there to see what's going on.

For some reason FireTray is unable to load the images stored inside the xpi. This is the reason why it does nothing on Windows, the addon starts and immediately stops working. Removing bits of code here and there to skip the loading of the images made the addon work. However, everything works fine only for a bunch of seconds, then Thunderbird crashes. I should probably use a debugger to know what's going on, because right now I'm clueless.

hajj3 commented 6 years ago

@firetray-updates If you could make a compiled .xpi of this so that i can install it even if it is buggy i'd appreciate it.

kilobyte commented 6 years ago

@hajj3: I don't know how to build the xpi, but if you're on Debian (or a derivative like Ubuntu or Mint), here's a package: https://angband.pl/debian/pool/main/f/firetray/ — built after mindlessly applying the diffs. It uses some mozilla-devscripts scheme that I didn't even look inside. Works perfectly for me.

Still no word from the maintainers; if no one says a word I'll propose a NMU shortly.

hajj3 commented 6 years ago

@hajj3: I don't know how to build the xpi, but if you're on Debian (or a derivative like Ubuntu or Mint), here's a package: https://angband.pl/debian/pool/main/f/firetray/ — built after mindlessly applying the diffs. It uses some mozilla-devscripts scheme that I didn't even look inside. Works perfectly for me.

Still no word from the maintainers; if no one says a word I'll propose a NMU shortly.

I'm using Windows 10 unfortunately.

ghost commented 6 years ago

Here is the xpi from https://github.com/foudfou/FireTray/issues/238#issuecomment-419705792 (with debug symbols): firetray-0.6.1.xpi.zip

To use, unzip it first (github didn't allow to upload .xpi directly).

hajj3 commented 6 years ago

Here is the xpi (with debug symbols): firetray-0.6.1.xpi.zip

To use, unzip it first (github didn't allow to upload .xpi directly).

thanks, unfortunately it won't minimize to the tray or close to the tray, i tried changing the options. I tested using thunderbird 60.0 x64 on win 10 x64.

firetray-updates commented 6 years ago

@kilobyte cd src && make ;)

@hajj3 the addon dies as soon as it tries to populate the menu of the tray, which includes the images.

ghost commented 6 years ago

thanks, unfortunately it won't minimize to the tray or close to the tray

It didn't work (i.e. installed and launched correctly, just nothing happens) for me in TB 60 either (Arch Linux, XFCE), although I didn't have much hope about it.

The state of desktop mail clients is quite pathetic. Geary and Evolution have numerous bugs and glitches, and don't implement the standard used in XFCE for tray icons, KMail has a tray icon, but it refused to send an email from Gmail account (which is, like, the essential thing). Something like N1 fork (whatever name it has) requires additional cloud account. Mutt[4e] will just take too much time to figure out. There is no middle ground.

kilobyte commented 6 years ago

Being broken in Arch+XFCE on TB60 sounds weird — I wouldn't expect Debian's XFCE to be meaningfully different, yet updated firetray (as the package I linked) works fine for me.

ghost commented 6 years ago

So, you said that, and I went digging a little bit further -- just thought it's <=57. Managed to get it working in my environment too. I noticed that while opening the application there was something happening in xfce4-panel's systray: the visual space was allocated for an icon and then instantly deallocated. I gdb'ed the panel and noticed that the icon was the same as the one used for 'notifications' widget.

Then I went to Add-ons -> FireTray and selected a custom icon:

And that fixed it for me. Thanks.

firetray-updates commented 5 years ago

I tried the addons on Windows once more. The problem with the icons not loading is due to the fact that the addon is not unpacked, despite the unpack flag set in install.rdf. Apparently Windows needs an unpacked extension: XPI_unpacking. If I manually extract the addon, everything starts working as expected.

The crash I'm experiencing is instead caused by an access violation related to something attachWndProc() does. If I replace this function with a stub, Thunderbird stops crashing. That function should be needed to handle multiple windows and indeed FireTray only handles the main window after the change, but at least it won't crash the application.

firetray-updates commented 5 years ago

There's something I forgot to mention. The addon is entirely written in JS, the bits of native code are not used. The Makefile simply packages the xpi taking only the files used while stripping all the log.debug() calls. This means you can just download the source code, rename the src directory to {9533f794-00b4-4354-aa15-c2bbda6989f8} and place it in ~/.thunderbird/PROFILE/extensions (Linux) or %APPDATA%\Roaming\Thunderbird\PROFILE\extensions (Windows). You'll have all the log.debug() lines and some extra files, but that's not a big deal. You may have to restart Thunderbird a couple of times, once to let it find the extension and once more to let it load it.

If you want to test the addon on Windows, I suggest you to comment out this. Not ideal, but at least Thunderbird will not crash.

bryanmc57 commented 5 years ago

@firetray-updates Would you be willing to take a minute or two to list the step by step for installing this? Running debian 9 but am not quite sure how to use the api to get firetray back up and running after the latest thunderbird 60 update. Thanks

kilobyte commented 5 years ago

For Debian, you can take it from the official archive: http://ftp.debian.org/debian/pool/main/f/firetray/xul-ext-firetray_0.6.1+dfsg-1.1_all.deb — for now unstable only, but I asked for inclusion in stable updates.

firetray-updates commented 5 years ago

@bryanmc57

git clone https://github.com/firetray-updates/FireTray
cd FireTray/src
make build
ls ../build-*/*.xpi    # <-- your xpi, ready to be installed

(you can use a packed extension on Linux, so the xpi is fine)

As I also mentioned in my previous comment, you can just download the source code (even via github), take the src/ directory, rename it to {9533f794-00b4-4354-aa15-c2bbda6989f8} and place it in ~/.thunderbird/PROFILE/extensions. The default profile is something like XXXX.default, read ~/.thunderbird/profiles.ini for the exact name.

vayulove commented 5 years ago

For Debian, you can take it from the official archive: http://ftp.debian.org/debian/pool/main/f/firetray/xul-ext-firetray_0.6.1+dfsg-1.1_all.deb — for now unstable only, but I asked for inclusion in stable updates.

I had firetray working with Thunderbird 52.4 all along. I had xul-ext-firetray (0.6.1+dfsg-1) installed from debian packages. I'm on sid. I had Thunderbird held, unfortunately I didn't have firetray held. Today I did a system upgrade and this new firetray came in and broke my working firetray. I tried reinstalling the old version but it still doesn't work. I'm severely bummed. How do I get it working again, is there a check for versions somewhere I can override?