diff options
| author | Victor Kareh <[email protected]> | 2026-03-03 15:23:30 -0500 |
|---|---|---|
| committer | Victor Kareh <[email protected]> | 2026-03-03 15:23:30 -0500 |
| commit | ae37271573f7b5ab88614679bd3220f86c05262f (patch) | |
| tree | 2d10856378eaae54605da5e618a1fdd6f52f7e02 | |
| parent | 89532fb843cedb669e3af7d20fc1c1ba5c618af6 (diff) | |
| download | mozo-new-app-name-filename.tar.bz2 mozo-new-app-name-filename.tar.xz | |
Use application name for generated .desktop filenamesnew-app-name-filename
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
| -rw-r--r-- | Mozo/MainWindow.py | 16 | ||||
| -rw-r--r-- | Mozo/util.py | 10 |
2 files changed, 26 insertions, 0 deletions
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 = '<small><i>' + html.escape(item.get_name()) + '</i></small>' 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 diff --git a/Mozo/util.py b/Mozo/util.py index 72df83e..a9bde70 100644 --- a/Mozo/util.py +++ b/Mozo/util.py @@ -18,6 +18,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import os +import re import xml.dom.minidom import gi gi.require_version('Gtk', '3.0') @@ -41,6 +42,15 @@ def fillKeyFile(keyfile, items): elif isinstance(item, str): keyfile.set_string(DESKTOP_GROUP, key, item) +def sanitizeFileName(name): + name = name.strip() + name = re.sub(r'[/\\<>:"|?*\x00-\x1f]', '-', name) + name = name.replace(' ', '-') + name = name.strip('.') + if not name: + name = 'mozo-made' + return name + def getUniqueFileId(name, extension): append = 0 while 1: |
