Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

С чем ассоциировать .desktop файл, чтобы он просто запускался?

Допустим, у меня по умолчанию в качестве текстого редактора используется Geany. Если я в терминале наберу xdg-open something.desktop, то файл откроется в Geany, но мне нужно чтобы он запускался!
На скриншоте вы видите, что в контекстном меню предлагают открыть ярлык офисом, т.е. связанным приложением и это очень неудобно! Я не хочу открывать его офисом, я хочу чтоб в этом меню предлагался текстовый редактор, но текстовый редактор уже является приложением по умолчанию и по этому его там нет.
Мне нужно как-то перенести Geany из разряда "Приложение по умолчанию" в разряд "Связанные приложения", а приложением по умолчанию назначить команду запуска. Подскажите пожалуйста, как это сделать?


Ответ

ответ будет (в последней части) пересекаться с другим моим ответом: Каким образом программно зарегистрировать в ОС программу для открытия определенного типа файлов по умолчанию?, но уже не в общесистемном, а в пользовательском контексте.
для начала надо уметь извлечь из desktop-файла имя программы (оно указывается в строке, начинающейся с exec=):
с помощью такого скрипта:
#!/bin/bash f=$1 shift $(sed -n '/^Exec=/{s/^Exec=//;s/%.//;p}' $f) "$@" & или такого
#!/usr/bin/python from gi.repository import Gio import sys def main(myname, desktop, *uris): launcher = Gio.DesktopAppInfo.new_from_filename(desktop) launcher.launch_uris(uris, None) if __name__ == "__main__": main(*sys.argv)
сохраните его под произвольным именем (например, deskopen) в каком-нибудь из каталогов, перечисленных в переменной окружения $PATH (например, в /usr/local/bin) и присвойте биты исполнимости ($ chmod +x /путь/к/файлу).
теперь desktop-файлы можно «запускать» с помощью этого скрипта:
$ deskopen /путь/к/файлу.с.суффиксом.desktop теперь надо создать desktop-файл, служащий «обёрткой» для вызова этого скрипта:
[Desktop Entry] Name=deskopen Exec=deskopen %U MimeType=application/x-desktop Terminal=false Type=Application
для использования только текущим пользователем его надо поместить под именем deskopen.desktop в каталог ~/.local/share/applications в том же каталоге (~/.local/share/applications) эту ассоциацию — между mime-типом application/x-desktop и созданной на предыдущем шаге «обёрткой» надо сделать «умолчальной». в один из файлов — defaults.list или mimeapps.list — добавьте в секцию [Default Applications] строку:
application/x-desktop=deskopen.desktop
если ни одного из этих двух файлов не существовало — создайте любой из них. тогда он будет выглядеть так:
[Default Applications] application/x-desktop=deskopen.desktop
всё. теперь команда
$ xdg-open /путь/к/файлу.с.суффиксом.desktop
будет запускать упомянутую в этом файле программу, а не редактор для редактирования этого файла.
соответственно, и «файловые менеджеры» будут вести себя аналогично при «щелчке» по такому файлу.

Комментариев нет:

Отправить комментарий