From 79ccbff5bdcc96ed8f13226b88f707644ec4699c Mon Sep 17 00:00:00 2001 From: Ali Mirjamali Date: Sun, 28 Jul 2024 12:53:39 +0330 Subject: [PATCH] Unify qubes-os XDG config directory fixes: https://github.com/QubesOS/qubes-issues/issues/8694 Removing space and upper-case letters from qubes-manager configuration directory. Migrating old config to new unified config directory. --- qubesmanager/utils.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/qubesmanager/utils.py b/qubesmanager/utils.py index 44551fb2..8744b9e7 100644 --- a/qubesmanager/utils.py +++ b/qubesmanager/utils.py @@ -32,6 +32,9 @@ import qasync from qubesadmin import events from qubesadmin import exc +import xdg.BaseDirectory +import pathlib +import shutil from PyQt5 import QtWidgets, QtCore, QtGui # pylint: disable=import-error @@ -49,6 +52,25 @@ # - just a list, no properties or defaults, just a nice list with a "current" # value - initialize_widget +def set_organization(): + """set the organization and config home directory for Qt based Apps.""" + # migrate old config file to the unified config directory + # TODO: remove the below block when Qubes R4.3 becomes End-of-Life + old_config_home = xdg.BaseDirectory.xdg_config_home + \ + '/The Qubes Project' + new_config_home = xdg.BaseDirectory.xdg_config_home + '/qubes-os' + config_file = 'qubes-qube-manager.conf' + old_config_file = old_config_home + '/' + config_file + new_config_file = new_config_home + '/' + config_file + if os.path.isfile(old_config_file) and \ + not os.path.isfile(new_config_file): + pathlib.Path(new_config_home).mkdir(parents=True, exist_ok=True) + shutil.copy(old_config_file, new_config_file) + + QtCore.QCoreApplication.setOrganizationName('qubes-os') + QtCore.QCoreApplication.setOrganizationDomain('qubes-os.org') + QtCore.QCoreApplication.setApplicationName('qubes-qube-manager') + def is_internal(vm): """checks if the VM is either an AdminVM or has the 'internal' features""" try: @@ -497,6 +519,7 @@ def handle_exception(exc_type, exc_value, exc_traceback): def run_asynchronous(window_class): + set_organization() qt_app = QtWidgets.QApplication(sys.argv) translator = QtCore.QTranslator(qt_app) @@ -508,8 +531,6 @@ def run_asynchronous(window_class): qt_app.installTranslator(translator) QtCore.QCoreApplication.installTranslator(translator) - qt_app.setOrganizationName("The Qubes Project") - qt_app.setOrganizationDomain("http://qubes-os.org") qt_app.lastWindowClosed.connect(loop_shutdown) qubes_app = qubesadmin.Qubes() @@ -537,6 +558,7 @@ def run_asynchronous(window_class): def run_synchronous(window_class): + set_organization() qt_app = QtWidgets.QApplication(sys.argv) translator = QtCore.QTranslator(qt_app) @@ -548,9 +570,6 @@ def run_synchronous(window_class): qt_app.installTranslator(translator) QtCore.QCoreApplication.installTranslator(translator) - qt_app.setOrganizationName("The Qubes Project") - qt_app.setOrganizationDomain("http://qubes-os.org") - sys.excepthook = handle_exception qubes_app = qubesadmin.Qubes()