Скажите, что у нас есть этот файл, start-term-tabs.sh
:
gnome-terminal \
--tab --title="Term 1" \
--working-directory=/tmp \
-e "bash -i" \
--tab-with-profile=Default --title="Term 2" \
--working-directory=/home \
-e "bash -i" \
--tab-with-profile=Default --title="Term 3" \
--working-directory=/etc \
-e "bash -i"
Поскольку это - долгая команда, и по причинам readibility, мне нравится разделять ее в нескольких строках путем выхода из перевода строки на каждой строке. Путем выполнения chmod +x start-term-tabs.sh
, Я могу дважды щелкнуть start-term-tabs.sh
на рабочем столе и это запустится, но это покажет суперраздражение, 'Вы хотите выполнить "start-term-tabs.desktop" или отобразить его содержание?':
... на который я должен нажать "Run" каждый раз.
Теперь, я мог сделать a test.desktop
файл как это:
[Desktop Entry]
Name=start-term-tabs test
Terminal=false
Type=Application
Icon=/usr/share/app-install/icons/terminal-tango.svg
Exec=/home/USER/Desktop/start-term-tabs.sh
... и после выполнения chmod +x test.desktop
, все работает; но затем я должен управлять двумя файлами, и я вместо этого хотел бы управлять только одним файлом.
Так, я пытался прикрыть все выше gnome-terminal
командная строка там, и когда это как одна строка в поле Exec:
Exec=gnome-terminal --tab --title="Term 1" --working-directory=/tmp -e "bash -i" --tab-with-profile=Default --title="Term 2" --working-directory=/home -e "bash -i" --tab-with-profile=Default --title="Term 3" --working-directory=/etc -e "bash -i"
... это также хорошо работает, но для меня довольно трудно управлять им, когда это находится только на одной строке.
Но когда я пытаюсь разделить его в .desktop файле, который является:
[Desktop Entry]
Name=start-term-tabs test
Terminal=false
Type=Application
Icon=/usr/share/app-install/icons/terminal-tango.svg
Exec=gnome-terminal \
--tab --title="Term 1" \
--working-directory=/tmp \
-e "bash -i" \
--tab-with-profile=Default --title="Term 2" \
--working-directory=/home \
-e "bash -i" \
--tab-with-profile=Default --title="Term 3" \
--working-directory=/etc \
-e "bash -i"
... затем, как только я сохраняю это, значок больше не показывают на .desktop файле, который является им, начинает быть похожим на это:
... и таким образом, это не рассматривают как допустимый .desktop файл, поэтому когда по этому дважды щелкают, снова я добираюсь, "Делают Вы хотите выполнить..." подсказку, и даже если я говорю, что Выполнение, никакой терминал гнома не запущен, таким образом, что-то заканчивается ужасно здесь.
Так, как я мог разделить долгую команду для поля Exec в .desktop файле в нескольких строках, - возможно использование своего рода выхода - и все еще это работало правильно?
Я видел https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables, и я попытался использовать \\
везде вместо просто \
, но это не помогает - и я иначе не могу сказать то, что я должен сделать для получения этой работы...
У меня есть супер взлом, который включает установку переменной удара к содержанию скрипта, который Вы хотите запустить, затем повторяя ее в .desktop файл. Читайте мимо деталей моего определенного сценария, но обратите внимание на кавычки и точки с запятой. Взлом кодирует программу переменной оболочки, затем использует эхо, чтобы свернуть все новые строки в одну строку и добавить его в настольный файл средства запуска Gnome.
Для контекста, у меня есть файл по имени Win10.desktop, который соединяется с бездисплейным экземпляром VirtualBox; это реконфигурировало сетевой адаптер на основе того, прикрепляется ли ноутбук или автономен. Я нахожусь на RHEL 7.6 / Gnome 3.
(я, возможно, записал сценарий w/o пробелы, но это трудно считать. Я сохраняю оригинал в файле README_REINSTALL где-то в другом месте, в случае, если я когда-либо повреждаю свою систему и должен воссоздать ее с нуля.)
PROG='
PATH=/usr/lib/virtualbox:/usr/bin:bin ;
VM="{045c7bf0-555e-4675-b95c-f8814d689077}" ;
WNIC="wlo1" ;
DNIC="enp58s0u1u2" ;
VMNAME="Win10" ;
ACTION=$(zenity --list --text "Choose action for $VMNAME" --radiolist --column "" --column ""
--hide-header
TRUE "Full GUI Start/Resume"
FALSE "Suspend") ;
case $ACTION in
Full*)
echo "Starting" ;
grep -q $DNIC /proc/net/dev && vboxmanage modifyvm $VM --bridgeadapter1 $DNIC ||
vboxmanage modifyvm $VM --bridgeadapter1 $WNIC ;
exec vboxmanage startvm $VM --type gui
;;
Suspend*)
echo "Suspending" ;
vboxmanage modifyvm $VM --bridgeadapter1 $WNIC ;
exec vboxmanage controlvm $VM savestate
;;
esac'
echo Exec=/usr/bin/bash -c \'$PROG\' >> Win10.desktop