Как создать ярлык в Ubuntu для запуска sh (shell) скрипта.


Есть программы в системе, которые вы запускаете с помощью sh скриптов.
В этой статье покажу как создать ярлык на sh (shell) скрипт в Главном меню Dash.


Советую почитать полезную статью про запуск sh скриптов в Ubuntu:



Буду показывать на примере приложения Intellij Idea.

Итак, запускается оно с помощью скрипта idea.sh :


В этой же папке находится и картинка (иконка), которую будем использовать для иконки ярлыка.

Приступим к созданию ярлыка для sh скрипта.

Открываем терминал.
Переходим по адресу, где лежат все наши ярлыки приложений: cd /usr/share/applications/
Теперь создаем ярлык нашего нового приложения командой: sudo gedit idea.desktop Вместо idea можно написать ваше название. Расширение desktop обязательно.

И вставляем в наш текстовый файл следующее содержимое:
[Desktop Entry]
Name=
Comment=
GenericName=
Keywords=
Exec=
Terminal=false
Type=Application
Icon=
Path=
Categories=
NoDisplay=false
Должно получиться как на скриншоте:


Теперь разберем эти свойства подробнее:
Name- имя приложения, которое будет отображаться под иконкой в Главном меню;
Keywords- слова, по которым будет искаться данный ярлык в Главном меню;
Exec- строка запуска приложения;
Terminal- (true или false)- запускать или нет приложение в окне терминала4);
Type- определяет «раздел» в Главном меню, где будет находится ярлык приложения;
Icon- путь или общесистемное название иконки;
Path- путь к рабочему каталогу приложения);
Categories- категории, к которым будет относится ярлык вашего приложения при выборе в Главном меню фильтров. Проще всего подсмотреть в ярлыке другого приложения, категория которого вам подходит.
NoDisplay(true или false)- Не отображать иконку в Главном меню(если true);

Заполним поля нашего приложения.

Нам достаточно заполнить Name и Exec.
Итак прописываем в Name то имя, которое хотим, чтобы отображалось в меню Dash Unity.

Остановимся поподробнее на поле Exec, сюда нужно прописать следующее, чтобы запустился sh скрипт:
Сначала команду запуска скриптов sh, затем путь до cкрипта sh (полностью путь до скрипта):
sh /home/edward/idea-IU-129.713/bin/idea.sh
В моем случае путь до скрипта это: /home/edward/idea-IU-129.713/bin/idea.sh
Ваш путь можно легко скопировать, если вызвать свойства файла скрипта в файловом менеджере Наутилусе:


В поле Icon прописываем путь до нашей картинки (полностью):
/home/edward/idea-IU-129.713/bin/idea.png

В итоге должно получиться подобное заполнение:


Сохраняем закрываем.

Теперь можно найти наш ярлык в главном меню Dash:


И переместить его на панель быстрого запуска Unity.

Вот и всё. Как видите ничего сложного. :)

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

55 коммент. :

  1. Огромное СПАСИБО!!! Давно искал подобную статью.

    ОтветитьУдалить
  2. Есть графическая программа alacarte, она позволяет сделать в принципе то же самое, но в графическом интерфейсе, без редактирования файлов вручную. Установить:
    sudo apt-get install alacarte
    Чтобы запустить: поискать в Dash по запросу Главное меню, или alacarte в терминале.

    ОтветитьУдалить
    Ответы
    1. Alpom, спасибо - твоим способом намного быстрее и проще

      Удалить
  3. А какие варианты могут быть в строке "Categories-" и как создать скрипт для исполняемого файла?

    ОтветитьУдалить
    Ответы
    1. Откройте другой ярлык текстовым редактором, посмотрите категории.

      Удалить
  4. Спасибо. Тоже нашел для себя полезное.

    ОтветитьУдалить
  5. Здорово, спасибо. А я не знал про alacarte и написал свою программу, вот блин!((((

    ОтветитьУдалить
  6. А то я bash начал изучать. А тут сразу нашел, спс

    ОтветитьУдалить
  7. автору - лучи любви

    ОтветитьУдалить
  8. Сделал все как в гайде, в итоге скрипт запускается в фоновом режиме, а хочется чтобы консоль не закрывалась после выполнения, такое возможно?

    ОтветитьУдалить
    Ответы
    1. Terminal=false
      Вот этот параметр в ярлыке измените на true
      Terminal=true

      Удалить
    2. Не получается( Терминал открывается и сразу пропадает

      Удалить
    3. В exec прописать:
      gnome-terminal -x /Путь_доскрипта/скрипт.sh

      Удалить
    4. Получилось, спасибо) только путь в кавычки нужно взять)

      Удалить
  9. Ответы
    1. Для всех гномоподобных окружений рабочего стола.

      Удалить
  10. Создал ярлык для программы, но есть нюанс - все работает кроме того что нет изображения ярлыка. Путь до ярлыка задан верно. пробовал менять картинку на другие фалйы - ничего не помогает.
    Подскажите куда копать?

    ОтветитьУдалить
    Ответы
    1. Значит неверный путь до картинки,

      берем пишем в консоле:
      shotwell путь_до_ярлыка
      К примеру
      shotwell /home/edward/idea-IU-129.713/bin/idea.png

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

      Удалить
    2. Возможно есть пробелы, то их нужно экранировать с помощью \

      Удалить
  11. "Icon- путь или общесистемное название иконки;" Когда указываем путь к иконке, в меню Dash он выглядит увеличенной, более крупной, чем если бы было задано просто имя этой обсистемной иконки. Проблема в том, что получается какую бы сторонню иконку я не выбрал для своего приложения она будет крупней стандартной. Как это можно исправить и обойти? Просьба не предлагать увеличить поля иконки отредактировав её, это принесёт другие проблемы...

    ОтветитьУдалить
  12. Респекти!!! Пишите ещё!!! Очень интересно читать статьи! Как жаль что я на убунту пересел пару дней назад, а не 5 лет :(((

    ОтветитьУдалить
  13. Как создать скрипт для запуска 3мес. календаря, команда в терминале:"cal -3" ?
    При создании "xfce4-terminal --command='cal -3'" запускается и сразу закрывается.

    ОтветитьУдалить
  14. Спасибо, уже нашёл
    Ubuntu Manpage: xfce4-terminal - Эмулятор терминала для X
    http://manpages.ubuntu.com/manpages/raring/ru/man1/xfce4-terminal.1.html

    ОтветитьУдалить
    Ответы
    1. Поэтому я и советую добавлять вопросы на сайт:
      http://ask.linuxrussia.com/

      Комментарии теряются.

      Удалить
  15. Чаще многие требуют добавлять именно в ветку описания.

    ОтветитьУдалить
  16. Здравствуйте, возникла такая проблема: сделал все по инструкции, но не запускается программа(игра)
    Те
    [Desktop Entry]
    Name= Hotline Miami 2: Wrong Number
    Comment=
    GenericName=
    Keywords= hotline; miami; 2;
    Exec= sh /home/test/Miami/start.sh
    Terminal= false
    Type= Application
    Icon= /home/test/Miami/support/gog-hotline-miami-2-wrong-number.png
    Path=
    Categories= game
    NoDisplay= false

    Если запускать hotline с скрипта, то все нормально работает, а таким способом нет

    ОтветитьУдалить
    Ответы
    1. Замените Exec= sh /home/test/Miami/start.sh на
      Exec="/home/test/Miami/start.sh"
      Будет работать.

      Удалить
    2. У меня та же проблема. Сделала всё так, как написано в статье - ярлык не запустился.
      Поставила значение поля Exec в кавычки, то же самое. Всё равно не запускается.
      Я ярлык также для игры создавала.

      Удалить
    3. Возможно путь с пробелами не заэкранированный.
      А если запустить просто в терминале, то ошибки не выдает и игра запускается?
      пришлите сюда ваш текст ярлыка.

      Удалить
    4. С кавычками заработало.

      Удалить
    5. Также не запускалось при полном указании пути и варианте с кавычками (и без sh).
      Прописал Path и в Exec - sh имя_скрипта.sh и полетело.

      Удалить
  17. Привет! А можно сделать так, чтобы запускать idea.sh из терминала из любой папки по команде idea?

    ОтветитьУдалить
  18. Все делал по примеру:
    [Desktop Entry]
    Name=AssaultCube(client)
    Comment=
    GenericName=
    Keywords=assaultcube
    Exec="home/assaultcube/AC-master/assaultcube.sh"
    Terminal=false
    Type=Application
    Icon=/home/assaultcube/AC-master/ac.ico
    Path=
    Categories=
    NoDisplay=false

    Но по щелчуку не запускается. Какие еще есть варианты

    ОтветитьУдалить
    Ответы
    1. проверьте, что в свойствах sh стоит флаг "разрешить запускать как программу".

      Удалить
    2. Попробуй кавычки из пути убрать.

      Удалить
  19. Насчёт категорий, весь список тут: http://standards.freedesktop.org/menu-spec/latest/apa.html
    Рекомендую добавить в статью.

    ОтветитьУдалить
  20. Создал скрипт с таким содержанием:
    [Desktop Entry]
    Name=MATLAB
    Comment=
    GenericName=
    Keywords=matlab;
    Exec=/home/dima/matlab/bin/matlab
    Terminal=false
    Type=Application
    Icon=/home/dima/matlab/matlab_logo.png
    Path=/home/dima/matlab/
    Categories=Science
    NoDisplay=false

    1) почему-то программа оказалась в категории "прочие", gedit распознал Science и отметил её циановым цветом, хотя остальные категории отмечает жирым чёрым на красном фоне.
    (Решение- Education;Science;)
    2) программа вылетает как через кнопку "выполнить" в файловом менеджере. Нормально запускается через терминал именно этой коммандой: matlab/bin/matlab
    (пока писал коммент нашел решение: Terminal=true, но открывается лишнее окно терминала sh)

    ОтветитьУдалить
  21. Здравствуйте.
    Вот я создал ярлык, он работает. Подскажите каким образом можна возле иконки показать бейдж (число новых уведомлений)? Примерно как тут - https://toster.ru/q/251385

    ОтветитьУдалить
    Ответы
    1. Посмотри как в ярлыке, что на примере, это работает.

      Удалить
    2. А конкретнее? Что вы имеете в виду?

      Удалить
    3. Найти файл этого ярлыка в /usr/share/applications и глянуть, что такого интересного в него добавили. Я в интернете находил полную инструкцию по всем возможностям, там очень много читать.

      Удалить
    4. Этот комментарий был удален автором.

      Удалить
    5. Похоже, это фичи юнити, и они лежат где-то в другом месте. Нашел похожее, но в .desktop его нет.

      Удалить
  22. Большое спасибо. Этот же способ работает для запуска исполняемого файла eclipse.

    ОтветитьУдалить
  23. Статья помогла понять,как это всё работает - с п а с и б о.И ALPOM за наводку на прогу с гуи.

    ОтветитьУдалить
  24. Ubuntu Gnome 16.04 LTS, без строчки
    Encoding=UTF-8
    ничего не получалось.

    ОтветитьУдалить
  25. Неужели только я понимаю как раньше просто было создать ярлык
    кликнув правой мышкой на пустом месте ???
    девелоперы убунты издеваются!!!
    Особенно фраза в конце порадовала - "Ничего сложного"...
    Укурились там все ???

    ОтветитьУдалить