appindicator support#2885
Conversation
Except for the fact that we would love to add this implementation to the |
I thought we decided against it? 🙂 At least, it doesn't make sense to me. If this is still wanted, I'd bring up my question from the linked comment again / I would need directions on how to do it. |
|
@purejava
Just move the implementation that you did here to the other repo. 😉 |
Thanks for the directions of what to do. After moving stuff to integrations-linux, a 'split jar' problem showed up: I'll have to fix this in kdewallet and make a new release before this PR will compile. |
|
Here is the required PR on This should be it! This PR is ready for review now. Please note, testing everything together brought up one last point: Error Code S7V8:7KAL:7KAL
java.lang.UnsupportedClassVersionError: org/cryptomator/jfuse/api/Fuse (class file version 63.65535) was compiled with preview features that are unsupported. This version of the Java Runtime only recognizes preview features for class file version 64.65535
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1091)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:182)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassInModuleOrNull(BuiltinClassLoader.java:741)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:665)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.cryptomator.frontend.fuse@2.0.5/org.cryptomator.frontend.fuse.mount.LinuxFuseMountProvider$LinuxFuseMountBuilder.mount(LinuxFuseMountProvider.java:105)
at org.cryptomator.desktop/org.cryptomator.common.mount.Mounter.mount(Mounter.java:134)
at org.cryptomator.desktop/org.cryptomator.common.vaults.Vault.unlock(Vault.java:150)
at org.cryptomator.desktop/org.cryptomator.ui.keyloading.KeyLoadingStrategy.use(KeyLoadingStrategy.java:79)
at org.cryptomator.desktop/org.cryptomator.ui.unlock.UnlockWorkflow.attemptUnlock(UnlockWorkflow.java:70)
at org.cryptomator.desktop/org.cryptomator.ui.unlock.UnlockWorkflow.call(UnlockWorkflow.java:60)
at org.cryptomator.desktop/org.cryptomator.ui.unlock.UnlockWorkflow.call(UnlockWorkflow.java:31)
at javafx.graphics@20.0.1/javafx.concurrent.Task$TaskCallable.call(Task.java:1426)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1623)jfuse seems to need an update too. |
A JDK 20 release of jfuse is already prepared. We're making the switch really soon. |
Nevertheless, it doesn't explain why we don't have env vars for cryptomator/.github/workflows/appimage.yml Lines 82 to 96 in da84108 Therefore, I would like this to be changed to --java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\"" |
I had an eye on the other integrations for the keyring, and they still do work. If you feel like, you can test it yourself with the AppImage mentioned above. It needs to be noted, that it was build with |
Sorry. I misunderstood your question in the first place. This can be changed. Testing it right now in my branch, where I can run the GitHub workflow to create a new AppImage. |
|
@overheadhunter your suggested change works. Done with 3fbc5e8. |
Is With these instructions, I identified one of the icons that is used in the xfce4-panel and used it for the Cryptomator AppImage too. It looks like this:
Same as with your test @overheadhunter. |
infeo
left a comment
There was a problem hiding this comment.
Seems to work! No blocker on my side.
|
@infeo what about your last requests for changes? I would at least want to update to the final API version before merging this. Otherwise no complaints from my side. |
|
Oohh, right there was also this request, seems like it got lost. @purejava see #2885 (comment) |
It contains latest appindicator version 1.3.3, so any of these libs should be found, when installed. There were OSes, were initially none of these is installed, but I can't tell out of my mind, if this is the case for the KUbuntu (version?, vanilla or not?) you are using. @infeo Did you check, whether one of the libs is installed?
Great! I am happy, that all of the PRs got merged! 😃 |
I wish there was a way for a SVG icon to adjust its colors to theme changes for every Linux desktop environment. We are aware of this (see #2885 (review), #2885 (comment) and following comments in this issue). What Linux desktop environment and distribution are you using? |
I'm using Kubuntu 23.04 (KDE Plasma 5.27.4) |
|
@aberenguel can you open a new bug report for your specific distro and desktop environment? |
Thanks. Problems with KDE have been reported before. Unfortunately, I cannot reproduce this. I set up two VMs, in which I installed your version of KUbuntu. |


This PR changes the tray icon support for Linux away from AWT towards the libayatana-appindicator and the libappindicator library as suggested in #1645.
It displays SVG versions of the Cryptomator icon, that scale and should look ok on all desktop environments.
Some notes on requirements to get appindicator support:
libayatana-appindicator3-1, on Arch linux it's calledlibayatana-appindicator.Please note, that it might be necessary to install a required package in order to make the lib visible to java. It's a dev-package calledlibayatana-appindicator3-dev.libappindicator3-1, on Arch linux it's calledlibappindicator-gtk3.The dev package is namedlibappindicator3-dev.On Debian*ish systems, libraries are located under/usr/lib/x86_64-linux-gnu/. To run Cryptomators AppImage version, you need to start it with a precedingLD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu.A note from the development perspective:
All requests from the previous PR have been implemented.
Edit: added LD_LIBRARY_PATH requirement
Edit 2: reduced requirements due to release 1.3.3 of appindicator-gtk3-java