Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
89
balaev84av
8 лет назад
GNU/Linux

Файлы ярлыков приложений (".desktop") и их меню⁠⁠

В Linux значки и описания программ (приложений) хранятся отдельно от исполняемых файлов. Для GUI-программ составляют "файлы рабочего стола" (desktop files), схожие по назначению с ярлыками в Windows. Более удобного имени нет, поэтому пусть и здесь будут ярлыками.


Расширение - ".desktop"; имя любое. Формат ярлыков схож с форматом файлов ".ini" в Windows. То есть это структурированный текст, разделённый на группы; имя группы в квадратных скобках; в группах заданы строки-параметры вида "ключ=значение"; строка-комментарий начинается с #.


Общие ярлыки приложений хранят в /usr/share/applications; свои - в ~/.local/share/applications. Для примера - сценарий оболочки и его ярлык.


Сценарий:


#/usr/bin/env bash


# Сценарий top10t.sh

# Хранить следует здесь: ~/.local/bin/

# Сделать исполняемым: chmod u+x ~/.local/bin/top10t.sh


# Десять самых жадных до процессора процессов/потоков.

# Процессы отсортированы по убыванию жадности.

# Ежесекундное обновление.


/usr/bin/watch -p -n 1 \

"ps k -%cpu -eL -o pid,comm,%cpu | head"


# Завершить - Ctrl C.


Ярлык:


# ~/.local/share/applications/top10t.sh.desktop


# Общее название группы для всех файлов ".desktop".

# Строка [Desktop Entry] - первая; прочие - в любом порядке.

[Desktop Entry]


# Какой версии спецификации соответствует сам этот файл.

# Свежая - 1.1. Не обязательно.

Version=1.0


# Кодировка самого файла. Обычно - UTF-8.

# Списки есть, например, у iconv. Не обязательно (устарело).

# Encoding=UTF-8


# Тип объекта: Application - приложение;

# Directory - категория; Link - ссылка на ресурс Интернета.

Type=Application


# "Категория" здесь - это заголовок подменю

# в общем меню приложений. Здесь не переводится.

# В значении может быть несколько частей,

# их отделять символом ;.

# И в конце строки рекомендуется поставить символ ;.

# Если символ ; используется сам по себе - экранировать: \;.

Categories=System;Utility;


# Команда для запуска. Желательно указать полный путь.

# Можно короткое имя, если программа доступна через $PATH.

# Если нужно запустить с правами суперпользователя,

# то нужно начинать команду, например, с gksudo -gk.

# Понадобится установить программу gksudo или kdesudo.

Exec=top10t.sh


# Рабочий каталог. Не обязательно.

Path=/home/student


# Нужно ли сначала открыть окно эмулятора терминала,

# а потом запустить в нём значение Exec.

# "Да" - true; "нет" - false. Обычно "нет".

Terminal=true


# Файл значка. Обычно указывают короткое имя без расширения.

# Стандартные форматы файлов: PNG, SVG (SVGZ).

# Значки обычно хранят в /usr/share/icons.

Icon=utilities-terminal


# Нужно ли оповещать о запуске: помигать указателем мыши

# или аплетом списка задач и тому подобное. Обычно "да".

StartupNotify=true


# Название ярлыка, видимое как подпись к значку или

# как имя пункта в меню. Здесь на английском.

Name=Top 10 greedy threads


# Желательно перевести. Список условных обозначений

# языков есть, например, у locale.

Name[ru]=Десять самых жадных потоков


# Описание, обычно видимое как всплывающая подсказка.

Comment=Shows Top 10 cpu eating processes/threads


# Желательно перевести.

Comment[ru]=Показывает 10 самых жрущих ЦПУ процессов/потоков


# Не показывать в меню. Обычно "нет".

# Файловые ассоциации, если есть, будут работать.

NoDisplay=false


# Не показывать в меню, убрать из файловых ассоциаций.

# И вообще сделать вид, что приложения не существует.

# Обычно "нет".

Hidden=false


# Показывать только в указанной рабочей среде:

# GNOME, KDE, Xfce, ещё какие-нибудь через ;.

# OnlyShowIn=GNOME;


# Не показывать в указанных рабочих средах.

# В файле должен быть только один из параметров:

# либо OnlyShowIn, либо NotShowIn.

NotShowIn=KDE;


Такие файлы можно помещать на Рабочий стол по необходимости: перетаскиванием; или же копированием/ссылкой файла в ~/Рабочий стол (англоязычный - ~/Desktop). Расположение каталога рабочего стола может быть указано в файле ~/.config/user-dirs.dirs. Его читает программа xdg-user-dirs-update, создавая указанные каталоги.


Проверить синтаксическую корректность ярлыка можно программой desktop-file-validate.


Если нужно на Рабочий стол добавить каталог, то может быть достаточно символьной ссылки. Или составить ярлык, где в Exec будет имя диспетчера файлов либо xdg-open, а потом аргумент - путь к каталогу:


Exec=xdg-open /home/student/Загрузки


В среде GNOME разработчики пытаются запретить размещение файлов на Рабочем столе. Может понадобиться специальное расширение для GNOME Shell.


Ярлык для адреса Интернета имеет другое значение Type и вместо ключа Exec содержит URL:


# Помимо прочего:

Type=Link

URL=https://www.freedesktop.org/wiki/


Адрес будет открыт браузером по умолчанию. Если нужен другой браузер, следует сделать обычный ярлык с Type=Application, далее в Exec задать имя браузера с аргументом-URL.


Есть сколько-то общепринятых категорий в спецификации к файлам меню: Audio, Education, Graphics, System и другие. Файлы категорий синтаксически аналогичны файлам ярлыков. Расширение - ".directory". Хранят их обычно в /usr/share/desktop-directories. Свои - в ~/.local/share/desktop-directories. Пример файла для категории "Система" (условное имя файла - system.directory). Не используйте его как есть.


[Desktop Entry]

Version=1.0

Type=Directory

Icon=preferences-system

Name=System

Name[ru]=Система

Comment=System tools and utilities

Comment[ru]=Средства администрирования системы


Графическая среда обычно автоматически при запуске каждого сеанса пересобирает меню из имеющихся ярлыков и категорий для каждого пользователя.


Формат файлов меню - XML. Расширение - ".menu". Только пример, без пояснений. Не используйте его как есть.


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE Menu

PUBLIC '-//freedesktop//DTD Menu 1.0//EN'

'http://standards.freedesktop.org/menu-spec/menu-1.0.dtd'>

<Menu>

<Name>System</Name>

<Directory>system.directory</Directory>

<DefaultAppDirs/>

<DefaultDirectoryDirs/>

<MergeDir>applications-merged</MergeDir>

<Layout>

<Merge type="menus" />

<Filename>top10t.sh.desktop</Filename>

<Merge type="files" />

</Layout>

</Menu>


Проверить синтаксическую корректность меню можно программой xmllint. Все меню не проходят валидацию (не находится DTD), вероятно, из-за беспорядка на сайте FreeDesktop.org.


Редакторы меню для GUI: KMenuEdit для KDE; LXMenuEditor (lxmed) для LXDE, требует Java; MenuLibre для GNOME, XFCE; Mozo для Mate.


Свои меню хранят в ~/.config/menus. Точнее, в $XDG_CONFIG_DIRS/menus/${XDG_MENU_PREFIX}applications.menu. Здесь XDG_MENU_PREFIX - это "gnome-", "kde-" и тому подобное.


Своё меню вроде как должно перекрывать (заменять собой) автоматическое. Добавочные (не перекрывание, а слияние) меню хранят в $XDG_CONFIG_DIRS/menus/applications-merged/.


Документация: ярлыки; меню. Для семейства программ xdg-* и desktop-* есть man-страницы. XDG (X Desktop Group) - старое название сообщества FreeDesktop.org.


У Debian (и производных) есть своя система меню, отличающаяся от XDG. Эти меню применяют в разных небольших диспетчерах окон: awesome, fvwm, openbox и других. Документация - в пакете menu.

Показать полностью
[моё] Длиннопост Для начинающих Меню приложений Ярлыки Linux Текст
21
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии