diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py index acc0681628..1e7977a4fa 100644 --- a/src/calibre/gui2/preferences/look_feel.py +++ b/src/calibre/gui2/preferences/look_feel.py @@ -14,6 +14,7 @@ from PyQt5.Qt import ( QWidget, QSizePolicy, QBrush, QPixmap, QSize, QPushButton, QVBoxLayout) from calibre import human_readable +from calibre.constants import islinux, isbsd from calibre.gui2.preferences import ConfigWidgetBase, test_widget, CommaSeparatedList from calibre.gui2.preferences.look_feel_ui import Ui_Form from calibre.gui2 import config, gprefs, qt_app, open_local_file, question_dialog @@ -179,6 +180,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): r('show_avg_rating', config) r('disable_animations', config) r('systray_icon', config, restart_required=True) + if islinux or isbsd: + self.opt_systray_icon.setEnabled(False) + self.opt_systray_icon.setText(_('System tray icon is disabled because of bugs in Qt 5')) r('show_splash_screen', gprefs) r('disable_tray_notification', config) r('use_roman_numerals_for_series_number', config) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index e159af32a2..0dd569a736 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -21,7 +21,7 @@ from PyQt5.Qt import (Qt, QTimer, QHelpEvent, QAction, QDialog, QSystemTrayIcon, QApplication) from calibre import prints, force_unicode -from calibre.constants import __appname__, isosx, filesystem_encoding, DEBUG +from calibre.constants import __appname__, isosx, filesystem_encoding, DEBUG, islinux, isbsd from calibre.utils.config import prefs, dynamic from calibre.utils.ipc.server import Server from calibre.db.legacy import LibraryDatabase @@ -271,7 +271,10 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ self.system_tray_icon.setToolTip('calibre') self.system_tray_icon.tooltip_requested.connect( self.job_manager.show_tooltip) - if not config['systray_icon']: + systray_ok = config['systray_icon'] and not (islinux or isbsd) + # System tray icons are broken on linux, see + # https://bugreports.qt-project.org/browse/QTBUG-31762 + if not systray_ok: self.system_tray_icon.hide() else: self.system_tray_icon.show()