From 65b32afa7483d509d8bee017b7a3f8c1d56226df Mon Sep 17 00:00:00 2001 From: "N0\\A" Date: Thu, 23 Oct 2025 19:14:17 +0200 Subject: [PATCH] deduplicate apps --- core/app_launcher.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/core/app_launcher.py b/core/app_launcher.py index 0b72268..2f4769c 100644 --- a/core/app_launcher.py +++ b/core/app_launcher.py @@ -56,19 +56,32 @@ def parse_desktop_file(file_path: Path) -> App: return app def list_apps() -> list[App]: - all_apps = [] + seen_apps = {} + for desktop_dir in get_desktop_dirs(): for file_path in desktop_dir.glob("*.desktop"): - app = parse_desktop_file(file_path) - if not app.hidden: - all_apps.append(app) + try: + app = parse_desktop_file(file_path) + + if app.hidden or not app.name: + continue + + app_key = (app.name, app.exec) + + if app_key not in seen_apps: + seen_apps[app_key] = app + + except Exception as e: + print(f"Warning: Could not parse {file_path}: {e}") + continue - return all_apps + return list(seen_apps.values()) def launch(app: App): os.system(f"{app.exec}") if __name__ == "__main__": apps = list_apps() - for app in apps: + print(f"Found {len(apps)} applications:\n") + for app in sorted(apps, key=lambda x: x.name.lower()): print(app) \ No newline at end of file