Допустим, у меня по умолчанию в качестве текстого редактора используется 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
будет запускать упомянутую в этом файле программу, а не редактор для редактирования этого файла.
соответственно, и «файловые менеджеры» будут вести себя аналогично при «щелчке» по такому файлу.
Комментариев нет:
Отправить комментарий