Хочу представить простую Gui утилиту для создания desktop файла на YAD.
В поисковике на запрос о программе, для простого создания desktop файла, ответов было много ,но они то ли устарели (библиотеки), то ли интерфейс переусложненый, а мне нужна ,брат попросил, была утилита крайне простая, мой брат использует linux давно, но он любит больше мышкой работать, те программы что пробовал ему бы не подошли, потому пришел к решению писать своё.
Для работы скрипта необходимо установить yad .
Как использовать?
Запустить скрипт, откроется окно и делать то что пишут в заголовке поэтапно открывающихся окон. Скрипт крайне простой , и сделан в основном для новичков, или любящих мышь, мне например быстрее desktop файл написать в текстовом, но каждому своё... Думаю этот скрипт, может быть полезным. На форуме видел скрипт на эту тему, на basic, у меня не заработал...
---------------
обновил скрипт, убрал некоторые ошибки, улучшил вывод инструкций, ввел некоторое форматирование
---------------
#!/bin/bash
#set -x
mkdir -p $HOME/.local/share/applications
# Запрос имени desktop файла
DESKTOP_NAME=$(yad --title "Введите имя desktop файла" --text "Введите имя desktop файла\n-------------------------------------------" --entry --width=400 --height=100)
# Запрос пути к исполняемому файлу
SCRIPT_PATH=$(yad --file --title "Выберите исполняемый файл" --text "Выберите исполняемый файл\n------------------------------------------------" --width=400 --height=100)
# Запрос комментария
COMMENT=$(yad --title "Введите комментарий" --text "Введите комментарий\n-----------------------------------" --entry --width=400 --height=100)
# Запрос пути к иконке
ICON_PATH=$(yad --file --title "Выберите иконку" --text "Выберите иконку\n----------------------------" --width=400 --height=100)
# Запрос опции открытия в терминале
TERMINAL_OPTION=$(yad --title "Выберите опцию открытия в терминале" --text "Выберите опцию открытия в терминале\n--------------------------------------------------------------" --list --radiolist --column "Выбор" --column "Опция" FALSE "false" TRUE "true" --width=450 --height=200)
# Обработка опции открытия в терминале
TERMINAL=$(echo "$TERMINAL_OPTION" | sed 's/TRUE//i; s/|//g')
# Запрос категорий
CATEGORIES=$(yad --title "Выберите категории" --text "Выберите категории\n---------------------------------" --form --field="Network:CHK" "FALSE" --field="AudioVideo:CHK" "FALSE" --field="Settings:CHK" "FALSE" --field="System:CHK" "FALSE" --field="Utility:CHK" "FALSE" --separator=" " --width=400 --height=100)
# Вывод отмеченных категорий
echo "Selected categories:"
# Преобразование в массив
IFS=' ' read -ra SELECTED_CATEGORIES <<< "$CATEGORIES"
# Ассоциативный массив для связи чекбоксов и имен категорий
declare -A CATEGORY_NAMES=( ["0"]="Network" ["1"]="AudioVideo" ["2"]="Settings" ["3"]="System" ["4"]="Utility" )
# Формирование строки для категорий
CATEGORIES_STRING=""
for index in "${!SELECTED_CATEGORIES[@]}"; do
if [ "${SELECTED_CATEGORIES[$index]}" == "TRUE" ]; then
CATEGORIES_STRING+="${CATEGORY_NAMES[$index]};"
fi
done
# Запрос каталога для сохранения
SAVE_PATH="$HOME/.local/share/applications"
# Генерация desktop файла
DESKTOP_FILE_CONTENT="[Desktop Entry]
Name=${DESKTOP_NAME}
Comment=${COMMENT}
Exec=${SCRIPT_PATH}
Icon=${ICON_PATH}
Terminal=${TERMINAL}
Type=Application
Categories=${CATEGORIES_STRING}"
# Проверка, был ли выбран путь сохранения
if [ -n "$SAVE_PATH" ]; then
DESKTOP_FILE_PATH="$SAVE_PATH/$DESKTOP_NAME.desktop"
echo "$DESKTOP_FILE_CONTENT" > "$DESKTOP_FILE_PATH"
yad --title "Готово" --info --text="Desktop файл успешно создан и сохранен по пути:\n$DESKTOP_FILE_PATH" --width=400 --height=100
else
yad --title "Ошибка" --error --text="Выберите каталог для сохранения desktop файла." --width=400 --height=100
fi