Выполнить скрипт 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