Как найти местоположение файла `.desktop` для конкретного приложения

РЕДАКТИРОВАТЬ: Это не дубликат, так как этот вопрос противоположен тому, что задает другой вопрос. Здесь мы знаем, что такое приложение, и мы хотим найти его файл .desktop, который также может быть расположен в нестандартных местах. В то время как другой вопрос о том, где можно разместить файлы .desktop.


Я хочу открывать изображения с FTP-сервера в средстве просмотра изображений по умолчанию, а не в браузере, поэтому я хотел узнать путь к файлу рабочего стола средства просмотра изображений по умолчанию в Ubuntu. Я попробовал следующее:

cd -- /usr/share/applications
/usr/share/applications

$ find . -name '*.desktop' | grep image
./gnome-disk-image-mounter.desktop
./gnome-disk-image-writer.desktop

$ find . -name '*.desktop' | grep view
./calibre-ebook-viewer.desktop
./calibre-lrfviewer.desktop
./evince-previewer.desktop
./shotwell-viewer.desktop
./okularApplication_ghostview.desktop
./gcr-viewer.desktop
./gnome-info-overview-panel.desktop
./org.gnome.font-viewer.desktop
./paraview.desktop

Но я все еще не мог найти это. Есть ли другие места, где хранятся файлы рабочего стола?

2
задан 24 July 2019 в 19:21

3 ответа

Намного более быстрый и более универсальный поиск с locate команда:

$ locate *image*desktop
/usr/share/app-install/desktop/gimagereader:gimagereader-gtk.desktop
/usr/share/app-install/desktop/gnome-disk-utility:gnome-disk-image-mounter.desktop
/usr/share/app-install/desktop/gnome-disk-utility:gnome-disk-image-writer.desktop
/usr/share/app-install/desktop/imagej:imagej.desktop
/usr/share/app-install/desktop/imagemagick-6.q16:display-im6.q16.desktop
/usr/share/app-install/desktop/imagemagick:display-im6.desktop
/usr/share/app-install/desktop/imagevis3d:imagevis3d.desktop
/usr/share/app-install/desktop/kimagemapeditor:kde4__kimagemapeditor.desktop
/usr/share/app-install/desktop/simple-image-reducer:simple-image-reducer.desktop
/usr/share/app-install/desktop/trimage:trimage.desktop
/usr/share/applications/gnome-disk-image-mounter.desktop
/usr/share/applications/gnome-disk-image-writer.desktop
/usr/share/applications/screensavers/tessellimage.desktop

locate может искать миллионы файлов через несколько секунд, где это взяло бы find много много минут:

$ time find / -name '*image*.desktop'
real    0m52.563s
user    0m6.271s
sys     0m9.002s

$ time locate *image*desktop
real    0m0.705s
user    0m0.693s
sys     0m0.012s

Заметьте как grep был устранен из исходного метода и find команда была исправлена.

Недостаток locate база данных, ежедневно обновляется. Если Вы просто установили приложение, Вы ищете на сегодняшний день, необходимо будет сначала работать:

sudo updatedb
2
ответ дан 2 December 2019 в 02:11

Название desktop один только файл не может показать достаточную информацию. Фундаментальный подход должен искать содержание всех .desktop файлы системы для нахождения соответствующей (s).

Например, программа просмотра изображений отображена как Image Viewer в обзоре Приложений. Gnome Shell получил ту маркировку из .desktop файл. Найти .desktop файл (или файлы), который содержит эту строку, выполниться

find / -name '*.desktop' -exec grep -H 'Image Viewer' {} \; 2>/dev/null

Это использует find найти все .desktop файлы в системе. Для каждого из найденных файлов, grep вызывается, который ищет строку в файле в этом примере Image Viewer. 2>/dev/null подавляет ошибки разрешения, Вы неизбежно получаете поиск корневого диска без корневых полномочий.

2
ответ дан 2 December 2019 в 02:11

Ну, мое решение очень простое, и вот как это сделать, если вы ищете приложение со значком в своих приложениях

ls -la /usr/share/applications | grep <name_of_app_you_are_looking_for>

Например, я хочу найти местоположение для некоторых приложений в мой Ubuntu --- я хочу найти файл рабочего стола для Google Chrome enter image description here

Но это работает только для приложений внутри /usr/share/applications

0
ответ дан 6 November 2020 в 06:37

Другие вопросы по тегам:

Похожие вопросы: