From ae37271573f7b5ab88614679bd3220f86c05262f Mon Sep 17 00:00:00 2001 From: Victor Kareh Date: Tue, 3 Mar 2026 15:23:30 -0500 Subject: Use application name for generated .desktop filenames Instead of naming user-created launchers mozo-made.desktop, mozo-made-1.desktop, etc., derive the filename from the Name field (e.g. "My App" becomes My-App.desktop). This makes it easier to identify launcher files in ~/.local/share/applications/. Fixes #27 --- Mozo/MainWindow.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Mozo/MainWindow.py') diff --git a/Mozo/MainWindow.py b/Mozo/MainWindow.py index 31b2135..070c738 100644 --- a/Mozo/MainWindow.py +++ b/Mozo/MainWindow.py @@ -270,11 +270,26 @@ class MainWindow: name = '' + html.escape(item.get_name()) + '' self.item_store.append((show, icon, name, item)) + def _renameToNameBased(self, file_path, extension): + try: + keyfile = GLib.KeyFile() + keyfile.load_from_file(file_path, util.KEY_FILE_FLAGS) + name = keyfile.get_string(GLib.KEY_FILE_DESKTOP_GROUP, 'Name') + name = util.sanitizeFileName(name) + except Exception: + return file_path + new_file_id = util.getUniqueFileId(name, extension) + new_path = os.path.join(os.path.split(file_path)[0], new_file_id) + if new_path != file_path: + os.rename(file_path, new_path) + return new_path + #this is a little timeout callback to insert new items after #mate-desktop-item-edit has finished running def waitForNewItemProcess(self, process, parent_id, file_path): if process.poll() is not None: if os.path.isfile(file_path): + file_path = self._renameToNameBased(file_path, '.desktop') self.editor.insertExternalItem(os.path.split(file_path)[1], parent_id) return False return True @@ -286,6 +301,7 @@ class MainWindow: if os.path.isfile(broken_path): os.rename(broken_path, file_path) if os.path.isfile(file_path): + file_path = self._renameToNameBased(file_path, '.directory') self.editor.insertExternalMenu(os.path.split(file_path)[1], parent_id) return False return True -- cgit v1.2.1