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


14

由于某种原因,我从应用程序(例如Gnome Do,Synapse,Leafpad)中获得了一堆剩余的开始菜单项,并且想知道是否存在一种方法可以删除不再安装的应用程序的所有孤立项?

Answers:


33

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

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

我怀疑您会发现您的大多数图标都位于主文件夹中,因为软件包管理器不会自动清除这些图标。如果是这种情况,并且您想一次将其全部废弃 安装垃圾桶cli,则可以使用前面命令的修改:

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

或者,当然,也可以~/.local/share/applications/在Nautilus中浏览并通过图形界面将其丢弃。


做到了!无论如何,当这种情况再次发生时,我是否可以将其转换为可以运行的快捷方式?
艾伦(Alan)

3

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

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


嗨,欧金尼奥。没错,但是我必须仔细检查每一个,确认它是否真的是孤立的,然后再将其删除。我正在寻找一种可以为我完成所有操作的方法,因为我有40多个条目要删除。
艾伦(Alan)

可能是最友好的答案。+1
tir38

3

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

如果工作方式不同,则说明它是特定软件包的错误或系统上的问题。我不敢相信您有40多名孤儿。这就是问题的征兆。


十分奇怪,直到升级到Natty Narwhal,我才遇到这个问题。我可能会降级为10.04LTS,请稍等片刻,直到11.04更没有bug了。
艾伦(Alan)

有些程序会主动进行自我安装,但本身并没有实际的安装程序。如果二进制文件被移动,它们将变成孤立的。
尖尖的

2

好吧,这很难,但是我至少要告诉你是什么问题。

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

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

那有点超出我的范围,因为每个命令(dpkg,apt-get等)在未安装软件包时总是返回一个好的出口,因此我们必须阅读该应用的出口以进行搜索一个字符串(例如“未安装”),进行检查,如果该字符串存在,则表示未安装该应用程序,可以删除.desktop。

因此,如果需要,您可以只输入文件夹(/ usr / share / applications)并单击与程序相对应的文件。它们将从“应用程序”菜单中消失。要自动执行此操作,我想我们在我说的赛道上需要一个不错的bash脚本。

我希望这会有所帮助。


大卫,您好,感谢您的帮助!与在菜单编辑器中逐一删除断开的链接相比,进入/ usr / share / applications的提示当然可以节省时间。
艾伦(Alan)

0

选择:

在@ændrük回答之后,这是一个类似的解决方案,它支持path和子文件夹中的空格,可以在特定的文件夹或整个磁盘上使用它来查找损坏的.desktop文件(快捷方式)

find {/usr,~/.local,/usr/local,}/share/applications/ -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line;  done

对于整个磁盘

find / -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line;  done

注意:任何方法都可以对两次找到的文件进行误报检查,然后再删除它们


0

这可能是一个过时的问题,但我认为无论如何我都应该鸣叫,因为我遇到了同样的问题,但是这些建议都没有奏效,但是我在互联网上发现一个非常聪明的人,知道一个叫做Alacarte的程序(易于GNOME菜单编辑)它使用软件管理器安装的程序,我很高兴它仍然可用,因为它默认情况下使用,但是现在还不是众所周知的程序,但是我很高兴它仍然可以通过软件管理器来使用,并且如此易于使用,只需单击以突出显示您要摆脱的已卸载程序条目,然后单击右侧的“删除”即可完成。如果其他建议对您不起作用,这可能会有所帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.