updated create menu and desktop files

This commit is contained in:
Mikhail Tergoev 2025-04-30 11:55:00 +03:00
parent 20f2f6d112
commit 5c0a62ff02
2 changed files with 83 additions and 13 deletions

@ -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" <<EOF
[Desktop Entry]
Type=Directory
Name=WineHelper
Icon=wine
EOF
fi
# Создаем файл меню для всех приложений
create_new_dir "$HOME/.config/menus/applications-merged"
if [[ ! -f "$WH_MENU_CONFIG" ]] ; then
cat > "$WH_MENU_CONFIG" <<EOF
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Name>Applications</Name>
<Menu>
<Name>WineHelper</Name>
<Directory>WineHelper.directory</Directory>
<Include>
<Category>WineHelper</Category>
</Include>
</Menu>
</Menu>
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 #####

@ -1,5 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Type=Directory
Name=WineHelper
Icon=wine