extension of the remote_desktop function #20

Closed
minergenon wants to merge 2 commits from minergenon:extention_remote_desktop into master

View File

@ -494,23 +494,47 @@ EOF
}
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"
local desktop_display_name="$*" # Объединяем все аргументы в одну строку
local desktop_filename=""
if [[ -n "$desktop_display_name" ]] ; then
# Ищем файл ярлыка по его отображаемому имени (полю Name=)
for file in "$WH_MENU_DIR"/*.desktop; do
if [[ -f "$file" ]] && grep -q -E "^Name=${desktop_display_name}$" "$file"; then
desktop_filename=$(basename "$file" .desktop)
break
fi
done
if [[ -z "$desktop_filename" ]]; then
print_error "Ярлык с именем \"$desktop_display_name\" не найден."
return 1
fi
print_info "Найден ярлык: $desktop_filename.desktop. Удаление..."
# Используем найденное имя файла для удаления из всех мест
try_remove_file "$USER_WORK_PATH/$desktop_filename.desktop"
try_remove_file "$WH_MENU_DIR/$desktop_filename.desktop"
try_remove_file "$HOME/.local/share/applications/$desktop_filename.desktop"
try_remove_file "$(xdg-user-dir DESKTOP)/$desktop_filename.desktop"
else
print_error "Не указано имя ярлыка для удаления."
return 1
fi
# Удаляем категорию если она пуста
if [[ -d "$WH_MENU_DIR" ]] && [[ -z "$(ls -A "$WH_MENU_DIR")" ]]; then
print_info "Категория WineHelper пуста, удаляем ее из меню."
try_remove_dir "$WH_MENU_DIR"
try_remove_file "$WH_MENU_CATEGORY"
try_remove_file "$WH_MENU_CONFIG"
fi
# Обновляем кэш desktop файлов
print_info "Обновление базы данных приложений..."
update-desktop-database "$HOME/.local/share/applications"
print_ok "Удаление ярлыка \"$desktop_display_name\" завершено."
}
check_installed_programs () {
@ -1244,9 +1268,6 @@ remove_prefix() {
then print_error "Не указано имя префикса для удаления!"
fi
check_prefix_var
if [[ ! -d "$WINEPREFIX" ]]
then fatal "Префикса \"$PREFIX_NAME\" не существует!"
fi
if [[ ! $2 =~ --force|-y ]] ; then
echo "======================================================"
@ -1263,14 +1284,20 @@ remove_prefix() {
return 0
fi
fi
try_remove_dir "$WINEPREFIX"
if try_remove_dir "$WINEPREFIX" ; then
if [[ $? -eq 0 ]]; then
print_ok "Префикс "$PREFIX_NAME" успешно удален."
# Ищем и удаляем все ярлыки, связанные с этим префиксом
print_info "Поиск и удаление связанных ярлыков..."
for desktop_file in "$WH_MENU_DIR"/*.desktop; do
if grep -q "$WINEPREFIX" "$desktop_file"; then
desktop_name=$(basename "$desktop_file")
remove_desktop "${desktop_name%.*}"
if [[ -f "$desktop_file" ]] && grep -q "$WINEPREFIX" "$desktop_file"; then
# Извлекаем отображаемое имя (значение ключа Name=)
display_name=$(grep -m 1 -E "^Name=" "$desktop_file" | cut -d'=' -f2-)
if [[ -n "$display_name" ]]; then
remove_desktop "$display_name"
fi
fi
done
@ -1508,6 +1535,7 @@ wh_info () {
remove-all удалить WineHelper и все связанные данные
remove-prefix [имя_префикса] удалить префикс и все связанные данные
backup-prefix [имя_префикса] создать резерную копию префикса
remove-desktop [имя_ярлыка] удалить ярлык по имени (без .desktop)
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
Параметры:
@ -1552,6 +1580,7 @@ case "$arg1" in
backup-prefix) backup_prefix "$@" ;;
restore-prefix) restore_prefix "$@" ;;
remove-all) remove_winehelper "$@" ;;
remove-desktop) remove_desktop "$@" ;;
remove-prefix) remove_prefix "$@" ;;
*)
if [[ -f "$arg1" ]] ; then