如何查找特定应用程序的“.desktop”文件位置

如何查找特定应用程序的“.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

但我仍然找不到它。桌面文件还存储在其他地方吗?

答案1

使用命令可以实现更快、更通用的搜索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

安装

在较新版本的 Ubuntu 中,你可以locate通过安装以下包来安装plocate

sudo apt install plocate

答案2

.desktop按内容搜索启动器

文件名desktop本身可能不足以揭示足够的信息。基本方法是.desktop搜索系统所有文件的内容找到相关的一个(些)。

例如,图像查看器将显示为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会抑制在没有 root 权限的情况下搜索 root 驱动器时不可避免地出现的权限错误。

桌面启动器搜索顺序

系统上可能存在多个.desktop同名的启动器。实际使用的启动器取决于其所在位置。

系统首先.desktop在您的本地~/.local/share/applications目录中搜索文件,然后搜索applications变量中包含的目录下存在的目录$XDG_DATA_DIRS

例如,可以显示的内容XDG_DATA_DIRS如下

$ printenv XDG_DATA_DIRS
/usr/share/ubuntu: /usr/local/share/:/usr/share/:/var/lib/snapd/desktop

系统首先搜索~/.local/share/applications,然后搜索/usr/share/ubuntu/applications等等。.desktop在这个搜索路径中或者系统其他地方,具有相同名称的启动器不会被使用。

答案3

好吧,我的解决方案非常简单,如果您在应用程序中寻找带有图标的应用程序,请按照以下方法操作

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

例如,我想在我的 Ubuntu 中找到一些应用程序的位置 --- 我想找到 Google Chrome 的桌面文件 在此处输入图片描述

但它只适用于里面的应用程序/usr/share/applications

相关内容