Учитывая путь к исполняемому файлу (скажем, /usr/bin/gvim
), как я могу найти файл .desktop Gnome для этого приложения?
Я слоняюсь по питону, так что специфичный для питона ответ был бы наиболее полезным.
Если вы хотите сделать это программно, используйте python-gmenu. Он включает API libgnome-menu2 для Python.
Этот API-интерфейс позволяет перебирать все каталоги рабочего стола, которые в данный момент настроены, и включает любые переопределения или модификации, настроенные пользователем. Затем вы просто запрашиваете каждый файл, чтобы увидеть, соответствует ли его строка Exec тому, что вы ожидаете.
Я не смог найти никакой документации ни для одной библиотеки, но либеральное использование «import gmenu; dir (gmenu)» и просмотр /usr/include/gnome-menus/gmenu-tree.h должны помочь.
Файлы .desktop для большинства приложений хранятся в:
/usr/share/applications
некоторые файлы .desktop также могут храниться в:
/usr/local/share/applications
или (для пользовательских настроек) :
~/.local/share/applications
Если ваш пакет установлен из пакета (не из источника), вы можете использовать (в Bash):
dpkg -L $(dpkg -S /usr/bin/pidgin | cut -f1 -d: ) | grep \.desktop$
В случае gvim
он ничего не выводит. У вас есть другая проблема, фактически, gvim
является альтернативой . «Истина» gvim
может быть несколькими программами. На моем компьютере это /usr/bin/vim.gnome
. Давайте попробуем с этим. Это тоже не работает ... потому что нет .desktop
в том же пакете, что и vim.gnome
. Фактически, в этом сложном случае, .desktop
находится в другом пакете, общем для всех графических интерфейсов Vim: vim-gui-common
Вы можете искать по всем файлам рабочего стола. Например, чтобы найти файл рабочего стола, связанный с gedit
:
grep -li exec=gedit $(locate -r '\.desktop)
Вы можете выполнить 1. sudo find /path_to_folder/ -iname *.desktop
в общем. А 2. sudo find / -iname *.desktop
в вашем случае.