Почему запуск моего собственного скрипта из пусковой установки работает только один раз?

3

Я создал сценарий оболочки, скажем,

echo hi
sleep 5
echo bye
exit

Затем я создал файл .desktop для запуска сценария оболочки. Двойной щелчок на нем работает отлично:

[Desktop Entry]
Version=1.0
Name=Test
Comment=Bash Cript
Exec=bash /example/test.sh
Terminal=true
Type=Application
Categories=Utility;Application;

После перетаскивания файла .desktop-File в Unity Launcher я могу нажать на него. <Сильный> РАЗ. После первого запуска значок остается в панели запуска, но щелчок по нему ничего не делает.

Нажатие на мышь Middle-Mouse снова запускает приложение

Что я делаю неправильно?

    
задан Alex 16.06.2016 в 19:22
источник

1 ответ

5

Работает работает

... даже проверил его, но значок запуска не отвечает в течение примерно 7 секунд после нажатия. Если вы нажмете снова через эти 7 секунд, он снова будет работать.

Этот «разрыв» вызван значком, ожидающим появления окна. Это не произойдет, поскольку отображаемый gnome-terminal -window «заявлен» с помощью значка пусковой установки gnome-terminal , и ваш значок «домашний» не распознает окно как «его».

Решение?

Вы могли решить проблему, добавив строку в свою пусковую установку (14.04)

StartupWMClass=gnome-terminal

или (16.04):

StartupWMClass=gnome-terminal-server

однако , делать это только по причинам тестирования, do not использовать это как постоянное решение; имея mutiple .desktop файлов, возможно, утверждая, что тот же WM_CLASS в своей основной команде - плохая идея, это вызовет столкновения в том, как gnome-terminal появляется в пусковой установке Unity.

Лучшее решение

Лучше добавьте свой скрипт в качестве параметра правой кнопки мыши в существующий gnome-terminal launcher:

  1. Скопируйте глобальный gnome-terminal запуска из /usr/share/applications в

~/.local/share/applications :

    cp /usr/share/applications/gnome-terminal.desktop ~/.local/share/applications
  1. Откройте файл gedit :

    gedit ~/.local/share/applications/gnome-terminal.desktop
    
  2. Измените строку:

    Actions=New;
    

    в

    Actions=New;My Script;
    

    и добавьте раздел:

    [Desktop Action My Script]
    Name=My Script
    Exec=gnome-terminal -e "bash /absolute/path/to/your/script.sh"
    

    до самого конца файла. Затем выйдите из системы и вернитесь, и ваш скрипт будет доступен как quicklist-shortcut в панели запуска gnome-terminal .

ответ дан Jacob Vlijm 16.06.2016 в 21:05