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