dorkbox / SystemTray

Cross-platform SystemTray support for Swing/AWT, macOS, GtkStatusIcon, and AppIndicator on Java 8+
Other
430 stars 58 forks source link

Crashes on Arch Linux/KDE Plasma #142

Closed AriaMoradi closed 3 years ago

AriaMoradi commented 3 years ago

Original issue: Suwayomi/Tachidesk#38

Summary

Users get repeated errors like below and then experience a crash that I failed to fix with a try-catch

(java:343959): Gdk-CRITICAL **: 12:13:43.182: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

The issue seems to be connected to gtk themes.

solonovamax commented 3 years ago

More stuff (was gonna make an issue, but then I forgot and AriaMoradi made it for me):

Also, here are some system details for context (click to expand):

Version Info |Name| Value | |:-|:-| |Operating System| Arch Linux x86_64 5.10.11-arch1-1 |Display Server| X11 |DE|Plasmashell 5.21.3 |Qt|5.15.2 |KDE Frameworks| 5.80.0 |GPU|Nvidia RTX 2070 |GPU Drivers|460.67-3 |Breeze|5.21.3-1, packages `breeze` and `breeze-gtk` from the AUR

And I also made a full dump of the output from gtk-query-settings with a working and non-working config, so some smart people might be able to understand that:

Working GTK Settings ``` gtk-double-click-time: 400 gtk-double-click-distance: 5 gtk-cursor-blink: TRUE gtk-cursor-blink-time: 1200 gtk-cursor-blink-timeout: 10 gtk-split-cursor: TRUE gtk-cursor-aspect-ratio: 0.040000 gtk-theme-name: "Breeze-dark-gtk" gtk-icon-theme-name: "We10X-black-dark" ! gtk-fallback-icon-theme: NULL gtk-key-theme-name: NULL gtk-menu-bar-accel: "F10" gtk-dnd-drag-threshold: 8 gtk-font-name: "Noto Sans, 10" ! gtk-icon-sizes: NULL gtk-modules: "colorreload-gtk-module:window-decorations-gtk-module" gtk-xft-antialias: 1 gtk-xft-hinting: 1 gtk-xft-hintstyle: "hintslight" gtk-xft-rgba: "rgb" gtk-xft-dpi: 98304 gtk-cursor-theme-name: "Adwaita" gtk-cursor-theme-size: 24 gtk-alternative-button-order: FALSE gtk-alternative-sort-arrows: FALSE ! gtk-show-input-method-menu: FALSE ! gtk-show-unicode-menu: FALSE ! gtk-timeout-initial: 500 ! gtk-timeout-repeat: 50 ! gtk-timeout-expand: 500 ! gtk-color-scheme: "" gtk-enable-animations: TRUE ! gtk-touchscreen-mode: FALSE ! gtk-tooltip-timeout: 500 ! gtk-tooltip-browse-timeout: 60 ! gtk-tooltip-browse-mode-timeout: 500 ! gtk-keynav-cursor-only: FALSE ! gtk-keynav-wrap-around: TRUE gtk-error-bell: TRUE ! color-hash: ((GHashTable*) 0x55bbaa3f8980) ! gtk-file-chooser-backend: NULL gtk-print-backends: "file,lpr,cloudprint,cups" gtk-print-preview-command: "evince --unlink-tempfile --preview --print-settings %s %f" gtk-enable-mnemonics: TRUE gtk-enable-accels: TRUE ! gtk-recent-files-limit: 50 gtk-im-module: NULL gtk-recent-files-max-age: 30 gtk-fontconfig-timestamp: 0 gtk-sound-theme-name: "freedesktop" gtk-enable-input-feedback-sounds: TRUE gtk-enable-event-sounds: TRUE ! gtk-enable-tooltips: TRUE ! gtk-toolbar-style: GTK_TOOLBAR_BOTH_HORIZ ! gtk-toolbar-icon-size: GTK_ICON_SIZE_LARGE_TOOLBAR ! gtk-auto-mnemonics: TRUE gtk-primary-button-warps-slider: TRUE ! gtk-visible-focus: GTK_POLICY_AUTOMATIC gtk-application-prefer-dark-theme: TRUE ! gtk-button-images: TRUE gtk-entry-select-on-focus: TRUE gtk-entry-password-hint-timeout: 0 ! gtk-menu-images: TRUE ! gtk-menu-bar-popup-delay: 0 ! gtk-scrolled-window-placement: GTK_CORNER_TOP_LEFT ! gtk-can-change-accels: FALSE ! gtk-menu-popup-delay: 225 ! gtk-menu-popdown-delay: 1000 gtk-label-select-on-focus: TRUE ! gtk-color-palette: "black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90" ! gtk-im-preedit-style: GTK_IM_PREEDIT_CALLBACK ! gtk-im-status-style: GTK_IM_STATUS_CALLBACK gtk-shell-shows-app-menu: FALSE gtk-shell-shows-menubar: FALSE gtk-shell-shows-desktop: TRUE gtk-decoration-layout: "icon:minimize,maximize,close" gtk-titlebar-double-click: "toggle-maximize" gtk-titlebar-middle-click: "none" gtk-titlebar-right-click: "menu" gtk-dialogs-use-header: FALSE gtk-enable-primary-paste: TRUE gtk-recent-files-enabled: TRUE gtk-long-press-time: 500 gtk-keynav-use-caret: FALSE gtk-overlay-scrolling: TRUE ```
Broken GTK Settings ``` gtk-double-click-time: 400 gtk-double-click-distance: 5 gtk-cursor-blink: TRUE gtk-cursor-blink-time: 1200 gtk-cursor-blink-timeout: 10 gtk-split-cursor: TRUE gtk-cursor-aspect-ratio: 0.040000 gtk-theme-name: "Breeze" gtk-icon-theme-name: "We10X-black-dark" ! gtk-fallback-icon-theme: NULL gtk-key-theme-name: NULL gtk-menu-bar-accel: "F10" gtk-dnd-drag-threshold: 8 gtk-font-name: "Noto Sans, 10" ! gtk-icon-sizes: NULL gtk-modules: "colorreload-gtk-module:window-decorations-gtk-module" gtk-xft-antialias: 1 gtk-xft-hinting: 1 gtk-xft-hintstyle: "hintslight" gtk-xft-rgba: "rgb" gtk-xft-dpi: 98304 gtk-cursor-theme-name: "Adwaita" gtk-cursor-theme-size: 24 gtk-alternative-button-order: FALSE gtk-alternative-sort-arrows: FALSE ! gtk-show-input-method-menu: FALSE ! gtk-show-unicode-menu: FALSE ! gtk-timeout-initial: 500 ! gtk-timeout-repeat: 50 ! gtk-timeout-expand: 500 ! gtk-color-scheme: "" gtk-enable-animations: TRUE ! gtk-touchscreen-mode: FALSE ! gtk-tooltip-timeout: 500 ! gtk-tooltip-browse-timeout: 60 ! gtk-tooltip-browse-mode-timeout: 500 ! gtk-keynav-cursor-only: FALSE ! gtk-keynav-wrap-around: TRUE gtk-error-bell: TRUE ! color-hash: ((GHashTable*) 0x558377be9aa0) ! gtk-file-chooser-backend: NULL gtk-print-backends: "file,lpr,cloudprint,cups" gtk-print-preview-command: "evince --unlink-tempfile --preview --print-settings %s %f" gtk-enable-mnemonics: TRUE gtk-enable-accels: TRUE ! gtk-recent-files-limit: 50 gtk-im-module: NULL gtk-recent-files-max-age: 30 gtk-fontconfig-timestamp: 0 gtk-sound-theme-name: "freedesktop" gtk-enable-input-feedback-sounds: TRUE gtk-enable-event-sounds: TRUE ! gtk-enable-tooltips: TRUE ! gtk-toolbar-style: GTK_TOOLBAR_BOTH_HORIZ ! gtk-toolbar-icon-size: GTK_ICON_SIZE_LARGE_TOOLBAR ! gtk-auto-mnemonics: TRUE gtk-primary-button-warps-slider: TRUE ! gtk-visible-focus: GTK_POLICY_AUTOMATIC gtk-application-prefer-dark-theme: TRUE ! gtk-button-images: TRUE gtk-entry-select-on-focus: TRUE gtk-entry-password-hint-timeout: 0 ! gtk-menu-images: TRUE ! gtk-menu-bar-popup-delay: 0 ! gtk-scrolled-window-placement: GTK_CORNER_TOP_LEFT ! gtk-can-change-accels: FALSE ! gtk-menu-popup-delay: 225 ! gtk-menu-popdown-delay: 1000 gtk-label-select-on-focus: TRUE ! gtk-color-palette: "black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90" ! gtk-im-preedit-style: GTK_IM_PREEDIT_CALLBACK ! gtk-im-status-style: GTK_IM_STATUS_CALLBACK gtk-shell-shows-app-menu: FALSE gtk-shell-shows-menubar: FALSE gtk-shell-shows-desktop: TRUE gtk-decoration-layout: "icon:minimize,maximize,close" gtk-titlebar-double-click: "toggle-maximize" gtk-titlebar-middle-click: "none" gtk-titlebar-right-click: "menu" gtk-dialogs-use-header: FALSE gtk-enable-primary-paste: TRUE gtk-recent-files-enabled: TRUE gtk-long-press-time: 500 gtk-keynav-use-caret: FALSE gtk-overlay-scrolling: TRUE ```
dorkbox commented 3 years ago

can you enable SystemTray.DEBUG and post the output?

AriaMoradi commented 3 years ago

can you enable SystemTray.DEBUG and post the output?

Already there: https://github.com/Suwayomi/Tachidesk/blob/d29e942a72a48a1bc0e16934030ee596925821eb/server/src/main/kotlin/ir/armor/tachidesk/util/Util.kt#L27

And full logs is there on OP: https://github.com/Suwayomi/Tachidesk/issues/38#issue-839911711

solonovamax commented 3 years ago

I opened an issue on the KDE bug tracker here, as this might be an issue with Breeze: https://bugs.kde.org/show_bug.cgi?id=434955 (I'll close it if it's a SystemTray issue and not a Breeze issue.)

solonovamax commented 3 years ago

ran the latest build to tachidesk with server.debugLogsEnabled = true and I get the following:

17:14:33.787 [main] DEBUG net.harawata.appdirs.AppDirsFactory - os.name linux is resolved to *nix
17:14:35.107 [main] DEBUG dorkbox.systemTray.SystemTray - OS: Linux
17:14:35.108 [main] DEBUG dorkbox.systemTray.SystemTray - Arch: amd64
17:14:35.108 [main] DEBUG dorkbox.systemTray.SystemTray - Oracle Corporation OpenJDK 64-Bit Server VM 1.8.0_282
17:14:35.108 [main] DEBUG dorkbox.systemTray.SystemTray - Is Auto sizing tray/menu? true
17:14:35.108 [main] DEBUG dorkbox.systemTray.SystemTray - Is JavaFX detected? false
17:14:35.108 [main] DEBUG dorkbox.systemTray.SystemTray - Is SWT detected? false
17:14:35.149 [main] DEBUG dorkbox.systemTray.SystemTray - Java Swing L&F: Metal
17:14:35.149 [main] DEBUG dorkbox.systemTray.SystemTray - Auto-detecting tray type
17:14:35.149 [main] DEBUG dorkbox.systemTray.SystemTray - Force GTK2: false
17:14:35.149 [main] DEBUG dorkbox.systemTray.SystemTray - Prefer GTK3: true
17:14:35.188 [main] DEBUG dorkbox.systemTray.SystemTray - Currently using the 'KDE' desktop environment
Arch Linux release
LSB_VERSION=1.4
DISTRIB_ID=Arch
DISTRIB_RELEASE=rolling
DISTRIB_DESCRIPTION="Arch Linux"
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux

17:14:35.403 [main] DEBUG dorkbox.systemTray.SystemTray - KDE Plasma Version: 5.21
17:14:35.463 [main] DEBUG dorkbox.util.jna.linux.GtkLoader - GTK: libgtk-3.so.0
17:14:35.464 [GTK Native Event Loop] DEBUG d.util.jna.linux.GtkEventDispatch - Running GTK Native Event Loop
17:14:35.566 [main] DEBUG dorkbox.systemTray.SystemTray - GTK Version: 3.24.27
17:14:35.566 [main] DEBUG dorkbox.systemTray.SystemTray - Is the system already running GTK? false
17:14:35.573 [main] WARN  dorkbox.util.jna.linux.GtkTheme - Unable to get tray image size. Using default.
17:14:35.609 [main] DEBUG dorkbox.systemTray.SystemTray - Tray indicator image size: 24
17:14:35.609 [main] DEBUG dorkbox.systemTray.SystemTray - Tray menu image size: 16

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.630: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): Gdk-CRITICAL **: 17:14:35.633: gdk_x11_get_xatom_by_name_for_display: assertion 'GDK_IS_DISPLAY (display)' failed

(java:359028): dbind-WARNING **: 17:14:35.741: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-S8eFMpHB00: No such file or directory

the main difference I noticed between those logs and the logs from a working theme (ignoring the fact that it, you know, works) is that the following is logged when it works:

+(java:359859): dbind-WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-S8eFMpHB00: No such file or directory

(which is interesting, because you think the warning would only be logged when it doesn't work? Other than that, I don't see much useful info.)

dorkbox commented 3 years ago

Fixed.

I've got it working on Manjaro-KDE, and Arch-Gnome. SWT on Arch-Gnome has some... errors?, but it still works. I will be recording those, and pushing the fix to 4.1, since the systemtray still works, but with errors, and only with SWT.

The only errors now that I have seen, which are out of my control, is (java:10704): Gdk-WARNING **: 18:40:43.680: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.