From 861df898e2fa2ffc0724d15696a631f4067ee3f4 Mon Sep 17 00:00:00 2001 From: Xarvex <60973030+xarvex@users.noreply.github.com> Date: Mon, 17 Mar 2025 20:35:45 -0500 Subject: [PATCH] feat(resources): provide desktop file (#870) * feat(resources): provide desktop file Co-authored-by: Florian Zier <9168602+zierf@users.noreply.github.com> * fix(ts_qt): remove duplicate logic * fix(ts_qt): add fallback values --------- Co-authored-by: Florian Zier <9168602+zierf@users.noreply.github.com> --- nix/package/default.nix | 8 ++++++++ src/tagstudio/qt/ts_qt.py | 13 +++++++++---- src/tagstudio/resources/tagstudio.desktop | 10 ++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 src/tagstudio/resources/tagstudio.desktop diff --git a/nix/package/default.nix b/nix/package/default.nix index a4723f1c..4b53e5bc 100644 --- a/nix/package/default.nix +++ b/nix/package/default.nix @@ -64,6 +64,14 @@ buildPythonApplication { syrupy ]; + # TODO: Install more icon resolutions when available. + preInstall = '' + mkdir -p $out/share/applications $out/share/icons/hicolor/512x512/apps + + cp $src/src/tagstudio/resources/tagstudio.desktop $out/share/applications + cp $src/src/tagstudio/resources/icon.png $out/share/icons/hicolor/512x512/apps/tagstudio.png + ''; + makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ ffmpeg-headless ]}" ] ++ lib.optional stdenv.hostPlatform.isLinux "--prefix LD_LIBRARY_PATH : ${ diff --git a/src/tagstudio/qt/ts_qt.py b/src/tagstudio/qt/ts_qt.py index 7f7298a3..14b75afd 100644 --- a/src/tagstudio/qt/ts_qt.py +++ b/src/tagstudio/qt/ts_qt.py @@ -299,10 +299,15 @@ class QtDriver(DriverMixin, QObject): appid = "cyanvoxel.tagstudio.9" ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(appid) # type: ignore[attr-defined,unused-ignore] - if sys.platform != "darwin": - icon = QIcon() - icon.addFile(str(self.rm.get_path("icon"))) - app.setWindowIcon(icon) + app.setApplicationName("tagstudio") + app.setApplicationDisplayName("TagStudio") + if platform.system() != "Darwin": + fallback_icon = QIcon() + fallback_icon.addFile(str(self.rm.get_path("icon"))) + app.setWindowIcon(QIcon.fromTheme("tagstudio", fallback_icon)) + + if platform.system() != "Windows": + app.setDesktopFileName("tagstudio") # Initialize the Tag Manager panel self.tag_manager_panel = PanelModal( diff --git a/src/tagstudio/resources/tagstudio.desktop b/src/tagstudio/resources/tagstudio.desktop new file mode 100644 index 00000000..3f5644e5 --- /dev/null +++ b/src/tagstudio/resources/tagstudio.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=TagStudio +GenericName=Tag Management System +Comment=Tag, find, and organize files +Icon=tagstudio +Exec=tagstudio +Terminal=false +Categories=AudioVideo;Qt; +Keywords=files;folders;tags;