From b376cb359c57e7caa975b542deeafe9d42f10923 Mon Sep 17 00:00:00 2001 From: trigg Date: Tue, 7 May 2024 22:32:20 +0100 Subject: [PATCH] - Remove Gtk3 - Remove exo open - Remove kioclient - Remove gettext --- src/script/arch-update-tray.py | 139 ++------------------------------- 1 file changed, 6 insertions(+), 133 deletions(-) diff --git a/src/script/arch-update-tray.py b/src/script/arch-update-tray.py index 3f16c7a..34b732d 100755 --- a/src/script/arch-update-tray.py +++ b/src/script/arch-update-tray.py @@ -1,36 +1,12 @@ #!/usr/bin/env python3 """Arch-Update System Tray.""" -import gettext import logging import os import sys -import shutil import subprocess - -# Import toolkits and list availability -available_tk_list = [] - -# Test for GTK3 availability -try: - # pylint: disable=import-outside-toplevel - import gi - gi.require_version('AppIndicator3', '0.1') - gi.require_version("Gtk", "3.0") - from gi.repository import Gtk, Gio - from gi.repository import AppIndicator3 as ai - available_tk_list.append("gtk3") -except ImportError: - pass - -# Test for QT6 availability -try: - # pylint: disable=import-outside-toplevel - from PyQt6.QtGui import QIcon - from PyQt6.QtWidgets import QApplication, QSystemTrayIcon - from PyQt6.QtCore import QFileSystemWatcher - available_tk_list.append("qt6") -except ImportError: - pass +from PyQt6.QtGui import QIcon +from PyQt6.QtWidgets import QApplication, QSystemTrayIcon +from PyQt6.QtCore import QFileSystemWatcher # Create logger log = logging.getLogger(__name__) @@ -46,93 +22,11 @@ log.error("Statefile does not exist: %s", STATE_FILE) sys.exit(1) -# Find translations -paths = [] -if 'XDG_DATA_DIRS' in os.environ: - paths.extend(os.environ['XDG_DATA_DIRS'].split(":")) -if 'XDG_DATA_HOME' in os.environ: - paths.extend(os.environ['XDG_DATA_HOME'].split(":")) - -_ = None -for path in paths: - french_translation_file = os.path.join( - path, "locale", "fr", "LC_MESSAGES", "Arch-Update.mo") - if os.path.isfile(french_translation_file): - t = gettext.translation('default', '.', fallback=True) - _ = t.gettext - break -if not _: - log.error("No translations found") - sys.exit(1) - -# Find user preference -TOOLKIT_PREFERENCE = "qt6" -if 'ARCH_UPDATE_TK' in os.environ: - match os.environ['ARCH_UPDATE_TK']: - case 'gtk3': - TOOLKIT_PREFERENCE = "gtk3" - case 'qt6': - TOOLKIT_PREFERENCE = 'qt6' - case _: - log.error("Unknown toolkit preference: %s", - os.environ['ARCH_UPDATE_TK']) - def arch_update(): - """ Find a way to launch with terminal """ + """ Launch with terminal """ update = "/usr/share/applications/arch-update.desktop" - if shutil.which("kioclient"): - subprocess.run(["kioclient", "exec", update], check=False) - elif shutil.which("gio"): - subprocess.run(["gio", "launch", update], check=False) - elif shutil.which("exo-open"): - subprocess.run(["exo-open", update], check=False) - else: - log.error("Unable to start updater") - sys.exit(1) - - -class ArchUpdateGtk3: - """ System Tray using GTK3 library """ - - def file_changed(self, _a=None, _b=None, _c=None, _d=None): - """ Called when statefile contents change """ - try: - with open(self.statefile, encoding="utf-8") as f: - contents = f.readline().strip() - except FileNotFoundError: - log.error("Statefile Missing") - sys.exit(1) - if contents.startswith("arch-update"): - self.ind.set_icon(contents) - - def update(self, _button=None): - """ Start arch-update """ - arch_update() - - def __init__(self, statefile): - """ Start Gtk3 System Tray """ - self.statefile = statefile - - self.ind = ai.Indicator.new( - 'arch-update', 'arch-update', ai.IndicatorCategory.SYSTEM_SERVICES) - self.ind.set_status(ai.IndicatorStatus.ACTIVE) - - # Gtk won't allow indicators without a menu - menu = Gtk.Menu() - item = Gtk.MenuItem.new_with_label(_("Update now")) - item.show() - menu.append(item) - self.ind.set_menu(menu) - - item.connect('activate', self.update) - - # File monitor - gtkstatefile = Gio.File.new_for_path(self.statefile) - monitor = gtkstatefile.monitor_file(0, None) - monitor.connect("changed", self.file_changed) - - Gtk.main() + subprocess.run(["gio", "launch", update], check=False) class ArchUpdateQt6: @@ -181,26 +75,5 @@ def __init__(self, statefile): app.exec() -def start(toolkit): - """ Start one of the System trays """ - match toolkit: - case 'qt6': - ArchUpdateQt6(STATE_FILE) - case 'gtk3': - ArchUpdateGtk3(STATE_FILE) - case _: - log.error("Unknown toolkit selected: %s", toolkit) - - if __name__ == "__main__": - # Starting point - - if TOOLKIT_PREFERENCE in available_tk_list: - # User preference first - start(TOOLKIT_PREFERENCE) - elif len(available_tk_list) > 0: - # Use any other, if preference isn't available - start(available_tk_list[0]) - else: - # Uh oh - log.error("No available toolkits") + ArchUpdateQt6(STATE_FILE)