From 243a1fb696769024fabcffcacf3cf68aad2e024c Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Thu, 25 Nov 2021 16:37:31 -0300 Subject: [PATCH] [api] refactoring: .desktop files are now installed at /usr/share/applications for the root user --- CHANGELOG.md | 1 + README.md | 4 ++-- bauh/api/paths.py | 2 +- bauh/gems/appimage/__init__.py | 1 - bauh/gems/appimage/controller.py | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96618bb1..04425803 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - configuration: `/etc/bauh` - temp dir: `/tmp/bauh@root` (`/tmp/bauh@$USER` for non root users) - autostart: `/etc/xdg/autostart` (only used by the Web gem at the moment) + - desktop entries: `/usr/share/applications` - custom themes: `/usr/share/bauh/themes` - UI diff --git a/README.md b/README.md index a0d07e6b..4956e408 100644 --- a/README.md +++ b/README.md @@ -154,7 +154,7 @@ rm -rf bauh_env` (just remove the directory) To create a shortcut for bauh on your desktop menu: -- Copy the files from [bauh/desktop](https://raw.githubusercontent.com/vinifmor/bauh/master/bauh/desktop/bauh.desktop) to `~/.local/share/applications` +- Copy the files from [bauh/desktop](https://raw.githubusercontent.com/vinifmor/bauh/master/bauh/desktop/bauh.desktop) to `~/.local/share/applications` (or `/usr/share/applications` for **root**) - Replace the `Exec` field on theses files by the bauh binary path. e.g: `Exec=/usr/bin/bauh` (or `bauh_env/bin/bauh`) - Copy [logo.svg](https://raw.githubusercontent.com/vinifmor/bauh/master/bauh/view/resources/img/logo.svg) to `/usr/share/icons/hicolor/scalable/apps` as `bauh.svg` @@ -192,7 +192,7 @@ bauh is officially distributed through [PyPi](https://pypi.org/project/bauh) and - `Update database`: manually synchronize the AppImage database - Installed applications are store at `~/.local/share/bauh/appimage/installed` -- Desktop entries (menu shortcuts) of the installed applications are stored at **~/.local/share/applications** (name pattern: `bauh_appimage_appname.desktop`) +- Desktop entries (menu shortcuts) of the installed applications are stored at **~/.local/share/applications** (or `/usr/share/applications` for **root**). Name pattern: `bauh_appimage_appname.desktop` - Symlinks are created at **~/.local/bin**. They have the same name of the application (if the name already exists, it will be created as 'app_name-appimage'. e.g: `rpcs3-appimage`) - Downloaded database files are stored at **~/.cache/bauh/appimage** as **apps.db** and **releases.db** - Databases are updated during the initialization process if they are considered outdated diff --git a/bauh/api/paths.py b/bauh/api/paths.py index 621fb649..98a33be4 100644 --- a/bauh/api/paths.py +++ b/bauh/api/paths.py @@ -7,7 +7,7 @@ from bauh.api import user CACHE_DIR = f'/var/cache/{__app_name__}' if user.is_root() else f'{Path.home()}/.cache/{__app_name__}' CONFIG_DIR = f'/etc/{__app_name__}' if user.is_root() else f'{Path.home()}/.config/{__app_name__}' USER_THEMES_DIR = f'/usr/share/{__app_name__}/themes' if user.is_root() else f'{Path.home()}/.local/share/{__app_name__}/themes' -DESKTOP_ENTRIES_DIR = '{}/.local/share/applications'.format(str(Path.home())) +DESKTOP_ENTRIES_DIR = '/usr/share/applications' if user.is_root() else f'{Path.home()}/.local/share/applications' TEMP_DIR = f'/tmp/{__app_name__}@{getuser()}' LOGS_DIR = f'{TEMP_DIR}/logs' AUTOSTART_DIR = f'/etc/xdg/autostart' if user.is_root() else f'{Path.home()}/.config/autostart' diff --git a/bauh/gems/appimage/__init__.py b/bauh/gems/appimage/__init__.py index 6a7583d4..9fcd7e0f 100644 --- a/bauh/gems/appimage/__init__.py +++ b/bauh/gems/appimage/__init__.py @@ -18,7 +18,6 @@ APPIMAGE_CACHE_DIR = f'{CACHE_DIR}/appimage' DATABASE_APPS_FILE = f'{APPIMAGE_CACHE_DIR}/apps.db' DATABASE_RELEASES_FILE = f'{APPIMAGE_CACHE_DIR}/releases.db' DATABASES_TS_FILE = f'{APPIMAGE_CACHE_DIR}/dbs.ts' -DESKTOP_ENTRIES_PATH = '{}/.local/share/applications'.format(str(Path.home())) SUGGESTIONS_CACHED_FILE = f'{APPIMAGE_CACHE_DIR}/suggestions.txt' SUGGESTIONS_CACHED_TS_FILE = f'{APPIMAGE_CACHE_DIR}/suggestions.ts' DOWNLOAD_DIR = f'{TEMP_DIR}/appimage/download' diff --git a/bauh/gems/appimage/controller.py b/bauh/gems/appimage/controller.py index 362dce96..bcf766f0 100644 --- a/bauh/gems/appimage/controller.py +++ b/bauh/gems/appimage/controller.py @@ -23,13 +23,14 @@ from bauh.api.abstract.model import SoftwarePackage, PackageHistory, PackageUpda SuggestionPriority, CustomSoftwareAction from bauh.api.abstract.view import MessageType, ViewComponent, FormComponent, InputOption, SingleSelectComponent, \ SelectViewType, TextInputComponent, PanelComponent, FileChooserComponent, ViewObserver +from bauh.api.paths import DESKTOP_ENTRIES_DIR from bauh.commons import resource from bauh.commons.boot import CreateConfigFile from bauh.commons.html import bold from bauh.commons.system import SystemProcess, new_subprocess, ProcessHandler, run_cmd, SimpleProcess from bauh.gems.appimage import query, INSTALLATION_PATH, LOCAL_PATH, ROOT_DIR, \ APPIMAGE_CONFIG_DIR, UPDATES_IGNORED_FILE, util, get_default_manual_installation_file_dir, DATABASE_APPS_FILE, \ - DATABASE_RELEASES_FILE, DESKTOP_ENTRIES_PATH, APPIMAGE_CACHE_DIR, get_icon_path, DOWNLOAD_DIR + DATABASE_RELEASES_FILE, APPIMAGE_CACHE_DIR, get_icon_path, DOWNLOAD_DIR from bauh.gems.appimage.config import AppImageConfigManager from bauh.gems.appimage.model import AppImage from bauh.gems.appimage.util import replace_desktop_entry_exec_command @@ -657,7 +658,7 @@ class AppImageManager(SoftwareManager): if not de_content: de_content = pkg.to_desktop_entry() - Path(DESKTOP_ENTRIES_PATH).mkdir(parents=True, exist_ok=True) + Path(DESKTOP_ENTRIES_DIR).mkdir(parents=True, exist_ok=True) with open(self._gen_desktop_entry_path(pkg), 'w+') as f: f.write(de_content) @@ -678,9 +679,8 @@ class AppImageManager(SoftwareManager): handler.handle(SystemProcess(new_subprocess(['rm', '-rf', out_dir]))) return TransactionResult.fail() - def _gen_desktop_entry_path(self, app: AppImage) -> str: - return '{}/bauh_appimage_{}.desktop'.format(DESKTOP_ENTRIES_PATH, app.get_clean_name()) + return f'{DESKTOP_ENTRIES_DIR}/bauh_appimage_{app.get_clean_name()}.desktop' def is_enabled(self) -> bool: return self.enabled