Выполнить скрипт sh из файла *.desktop?

Что я хочу сделать, так это создать сценарий, на котором есть значок. Поэтому я знаю только один способ - файл file.desktop со значком. Значок настроек на нем был успешным, но мне не повезло, установив значение EXEC:/

Может кто-нибудь объяснить мне немного, как создать исполняемый скрипт с иконкой на нем? создать файл.desktop и связать его с этим сценарием? Может кто-нибудь дать мне структуру этого файла.desktop?

4 ответа

Вы не упомянули, что вы пытались, поэтому попробуйте это:

[Desktop Entry]
Name=someName
Comment=
Exec=/path/to/script.sh
Icon=/path/to/icon
Terminal=false
Type=Application  

Убедитесь, что ваш скрипт исполняемый, вот так:

sudo chmod +x /path/to/script.sh  

Это также не будет работать, если ваш скрипт использует sudo команда, или что-нибудь еще, что требует ввода пользователя.

Если вы хотите, чтобы он открывал окно терминала при запуске (если вам нужно было добавить ввод или посмотреть вывод), установите Terminal к истине.

Terminal=true

Использование gnome-desktop-item-edit:

gnome-desktop-item-edit --create-new /path/to/new/launcher

# Usually, one does (create launcher in current directory) :
gnome-desktop-item-edit --create-new .

Вам будет графически предложено для этих настроек. Вот одна из моих программ запуска, которые я создал с помощью этого инструмента:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_GB]=/path/to/icon/for/en_GB.png
Name[en_GB]=Name_for_en_GB
Exec=/path/to/shell/script.sh
Comment[en_GB]=Some comment for en_GB
Name=Launcher Name
Comment=Some comment.
Icon=/path/to/icon/file.png

en_GB конкретные настройки не являются обязательными. Не стесняйтесь заполнять одинаковыми значениями.

Убедитесь, что первая команда сценария bash - cd "${0%/*}" если ничего не появляется: эта команда изменяет текущий рабочий каталог на каталог, содержащий сценарий, поскольку большинство сценариев оболочки работают с относительными путями, начиная с их каталога.

Создайте файл testicon.desktop и поместите его на рабочий стол.

      $ more testicon.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Icon=/home/robin/Desktop/testicon.png
Name=TestIcon
Exec=/home/robin/Desktop/testicon.sh
Comment=Some comment for en_GB
Name=TestIcon
Comment=Some comment.
Icon=/home/robin/Desktop/testicon.png

Вот исполняемый bash-скрипт. Поместите его на рабочий стол и запустите, и он опишет создание значка, запускающего скрипт.

      $ more testicon.sh
#!/bin/bash

# this forces bash to use the Desktop directory i.e. where this bash script is located
cd "${0%/*}"

echo "to make a shell script run from an icon"
echo " make a file like this "
sleep 1
echo "====================================================="
cat ./testicon.desktop
echo "====================================================="
echo "called something like testicon.desktop"
sleep 2
echo " chmod +x the .desktop file"
echo " make a png file for the icon call it testicon.png"
echo " now right click on .desktop file and allow launching"
echo "should work"
sleep 10
echo "bye, disapparing in ten seconds"
sleep 10
 NUC 2023-11-16_16:05 ~/Desktop

Это работает для

      $ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
Другие вопросы по тегам