如何删除孤立的开始菜单条目?

出于某种原因,我有一堆来自应用程序的遗留开始菜单条目(例如,Gnome Do,Synapse,Leafpad。)并且想知道是否有办法删除不再安装的应用程序的所有孤立条目?

您可以使用以下命令列出链接到不存在的程序的应用程序图标:

for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done 

我怀疑你会发现你的大多数都是你的主文件夹中的自定义图标,因为包管理器不会自动清理这些图标。 如果是这种情况,你想要垃圾 安装trash-cli 他们一下子就可以使用上一个命令的修改:

 for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done 

或者,当然,浏览到Nautilus中的~/.local/share/applications/并通过图形界面将其删除。

如果通过开始菜单表示“应用程序”菜单,您可以通过以下方式进行编辑:系统 – >首选项 – >主菜单。

您可以随意添加,重新排列,编辑和删除条目。

卸载应用程序时,应删除它安装的菜单项。 它在我的机器上以这种方式工作。

如果它的工作方式不同,则是特定包的错误或系统上的问题。 我无法相信你有40多个孤儿入境。 这将是问题的症状。

嗯,这个很难,但我想,至少,要告诉你这是什么问题。

Gnome将已安装的应用程序存储在/ usr / share / applications中,文件以.desktop结尾(因此vlc程序由vlc.desktop启动)

在每个部分中,都有一个“类别”部分,您可以在其中设置应用程序菜单的哪个部分您想要的程序。 问题是:我认为可以做到的唯一方法就是使用bash脚本来询问是否安装了与.desktop相关的包。 如果不是,请删除.desktop文件。 当您删除文件时,它将不在菜单中,当您的应用程序属于某个类别时,该文件不会显示。

那个有点超出我的范围,因为每个命令(dpkg,apt-get等等)总是在他们说没有安装包时返回一个好的退出,所以我们必须从该应用程序中读取退出搜索一个字符串(“未安装”),检查它,如果字符串存在,则表示未安装该应用程序,并且可以删除.desktop。

因此,如果需要,您只需输入文件夹(/ usr / share / applications)并单击与程序对应的文件即可。 它们将从“应用程序”菜单中消失。 为了自动完成,我想我们需要在轨道上使用一个好的bash脚本。

我希望这在某种程度上有所帮助。