Страницы

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

суббота, 11 января 2020 г.

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

#linux #ubuntu #linux_mint


Допустим, у меня по умолчанию в качестве текстого редактора используется Geany. Если
я в терминале наберу xdg-open something.desktop, то файл откроется в Geany, но мне
нужно чтобы он запускался!

На скриншоте вы видите, что в контекстном меню предлагают открыть ярлык офисом, т.е.
связанным приложением и это очень неудобно! Я не хочу открывать его офисом, я хочу
чтоб в этом меню предлагался текстовый редактор, но текстовый редактор уже является
приложением по умолчанию и по этому его там нет.

Мне нужно как-то перенести Geany из разряда "Приложение по умолчанию" в разряд "Связанные
приложения", а приложением по умолчанию назначить команду запуска. Подскажите пожалуйста,
как это сделать? 


    


Ответы

Ответ 1



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

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

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