From 5c0a62ff026dfd00e614bed994252e9b5b1581d3 Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Wed, 30 Apr 2025 11:55:00 +0300 Subject: [PATCH] updated create menu and desktop files --- winehelper | 91 ++++++++++++++++++++++++++++++++++++++++---- winehelper.directory | 5 --- 2 files changed, 83 insertions(+), 13 deletions(-) delete mode 100644 winehelper.directory diff --git a/winehelper b/winehelper index 9d546c9..a593cff 100755 --- a/winehelper +++ b/winehelper @@ -51,6 +51,10 @@ WH_DB_DIR="$DATA_PATH/database" WH_AUTOINSTALL_DIR="$DATA_PATH/autoinstall" WH_MANUALINSTALL_DIR="$DATA_PATH/manualinstall" +WH_MENU_DIR="$HOME/.local/share/applications/WineHelper" +WH_MENU_CATEGORY="$HOME/.local/share/desktop-directories/WineHelper.directory" +WH_MENU_CONFIG="$HOME/.config/menus/applications-merged/WineHelper.menu" + # export WINEDLLOVERRIDES=mshtml,mscoree=" check_variables WINEESYNC "0" @@ -357,6 +361,7 @@ var_ld_library_path_update () { create_desktop () { local name_desktop="$1" local exe_file="$2" + local desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|")" local icon_file="$WH_IMAGE_PATH/$3.png" if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then @@ -379,25 +384,77 @@ create_desktop () { fi fi + create_new_dir "$WH_MENU_DIR" + [[ ! -f "$icon_file" ]] && icon_file=wine + # Создаем .desktop файл { echo "[Desktop Entry]" echo "Name=$name_desktop" echo "Exec=env \"$RUN_SCRIPT\" \"$exe_file\" %F" echo "Type=Application" - echo "Categories=WineHelper;Application;Other;" + echo "Categories=WineHelper;" echo "StartupNotify=true" echo "Path=$DATA_PATH" echo "Icon=$icon_file" - } > "$USER_WORK_PATH/$name_desktop.desktop" - chmod +x "$USER_WORK_PATH/$name_desktop.desktop" + } > "$USER_WORK_PATH/$desktop_filename.desktop" + chmod +x "$USER_WORK_PATH/$desktop_filename.desktop" - create_new_dir "$HOME/.local/share/applications/WineHelper/" - cp -f "$USER_WORK_PATH/$name_desktop.desktop" "$HOME/.local/share/applications/WineHelper/" - cp -f "$USER_WORK_PATH/$name_desktop.desktop" "$(xdg-user-dir DESKTOP)" - update-desktop-database "$HOME/.local/share/applications/" - print_info "В меню и на рабочем столе создан $name_desktop.desktop" + cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/" + + # Создаем файл категории для меню + create_new_dir "$HOME/.local/share/desktop-directories" + if [[ ! -f "$WH_MENU_CATEGORY" ]] ; then + cat > "$WH_MENU_CATEGORY" < "$WH_MENU_CONFIG" < + + Applications + + WineHelper + WineHelper.directory + + WineHelper + + + +EOF + # Обновляем меню + if check_command update-menus ; then + update-menus + fi + fi + + # Обновляем кэш desktop файлов + if check_command update-desktop-database ; then + update-desktop-database "$HOME/.local/share/applications" + fi + + if [[ $4 != "nocopy" ]] ; then + if [[ -n $4 ]] ; then + local desktop_path="$(xdg-user-dir DESKTOP)/$4" + create_new_dir "$desktop_path" + print_info "В меню создан $desktop_filename.desktop и скопирован на рабочий стол в каталог $4" + else + local desktop_path="$(xdg-user-dir DESKTOP)" + print_info "В меню и на рабочем столе создан $desktop_filename.desktop" + fi + cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$desktop_path" + else + print_info "В меню создан $desktop_filename.desktop" + fi if [[ -n "$INSTALL_SCRIPT_NAME" ]] \ && [[ -f "$exe_file" ]] @@ -417,9 +474,27 @@ create_desktop () { remove_desktop () { if [[ -n "$1" ]] ; then try_remove_file "$USER_WORK_PATH/$1.desktop" + try_remove_file "$WH_MENU_DIR/$1.desktop" try_remove_file "$HOME/.local/share/applications/$1.desktop" try_remove_file "$(xdg-user-dir DESKTOP)/$1.desktop" fi + + # Удаляем категорию если она пуста + if [[ -d "$WH_MENU_DIR" ]] && [[ -z "$(ls -A "$WH_MENU_DIR")" ]]; then + try_remove_dir "$WH_MENU_DIR" + try_remove_file "$WH_MENU_CATEGORY" + try_remove_file "$WH_MENU_CONFIG" + # Обновляем меню + if check_command update-menus ; then + update-menus + fi + fi + + # Обновляем кэш desktop файлов + if check_command update-desktop-database ; then + update-desktop-database "$HOME/.local/share/applications" + fi +fi } ##### INSTALLED PROGRAMS ##### diff --git a/winehelper.directory b/winehelper.directory deleted file mode 100644 index f053757..0000000 --- a/winehelper.directory +++ /dev/null @@ -1,5 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Type=Directory -Name=WineHelper -Icon=wine