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

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

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

答案1

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

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

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

答案2

如果您所说的开始菜单是指“应用程序”菜单,那么您可以通过以下方式编辑它:系统->首选项->主菜单。

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

答案3

当应用程序被卸载时,它应该删除它所安装的菜单项。在我的计算机上它就是这样工作的。

如果工作方式不同,则可能是某个软件包存在错误,或者您的系统存在问题。我无法相信您有超过 40 个条目处于孤立状态。这可能是问题的征兆。

答案4

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

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

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

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

因此,如果您愿意,您可以直接进入文件夹 (/usr/share/applications) 并单击与程序相对应的文件。它们将从应用程序菜单中消失。要自动执行此操作,我想我们需要一个好的 bash 脚本。

我希望这会有所帮助。

相关内容