如您所知,许多应用程序都有一个通用名称。
例如,Audacious 的通用名称是:Music Player
。
如何让 Lubuntu 使用这个名称而不是常规名称。
我意识到很多应用程序具有相同的名称和通用名称,但没关系。
注意:我说的是 lxpanel 菜单。
答案1
您指的是程序菜单 (lxmenu) 中的快捷方式,还是桌面或面板栏上的快捷方式?对于这些,您应该能够添加具有通用名称(或任何名称)的新快捷方式。或者添加一个“个人”部分,其中只包含您常用的应用程序,您可以随意命名(这就是我的做法)。
但既然你澄清了这一点“我想一次性将所有名称更改为通用名称,而不是单独更改……每个应用程序在其 .desktop 文件中都有一个内置的通用名称”这是“如何做到这一点”的答案。
这使用一些命令行工具(例如grep
&)sed
来搜索“Name=...”部分并将其替换为“GernericName=...”部分。
笔记:
你应该使用 .desktop 文件的本地副本,将它们放在你的
~/.local/share/applications/
第一个文件夹中,cp -R --no-clobber -v /usr/share/applications/ ~/.local/share > ~/cp-applications.log
(这可能会添加比你想要或需要的更多的文件,但它会写入“日志”
~/cp-applications.log
复制到哪里(以防您以后想撤消它),但保留原始文件,并且不覆盖任何已经存在的本地文件。我还使用 的选项sed
来-i
制作名为 *.BAK 的文件的备份副本。并且。- 如果您想恢复 .desktop 文件的原始版本,您可以用其 .desktop.BAK 副本或来自 的原始文件覆盖 .desktop 文件
/usr/share/applications/
。 - 如果您想使用其他 .desktop 文件,您可以随处搜索它们
find / -type f -name "*.desktop"
(通过管道传输到 less 或者文件),但返回的结果会超出您的预期。 - 如果您想要特定于语言的通用名称,只需编辑即可(例如“GenericName [en_GB] =”)。
这只会改变第一次出现的“Name=”(因此它保留 Firefox 的“打开新窗口”之类的内容):
#!/bin/bash
targetdir=~/.local/share/applications/
for i in $(grep -l "^GenericName=" "$targetdir"/*.desktop)
do
echo Hit on $i
tmphit=$(sed -n 's/^GenericName=//p' "$i")
echo Generic name is:"$tmphit"
sed -iBAK "0,/^Name=/s/^Name=.*/Name=$tmphit/g" "$i" || echo "SED FAILED!!!!"
done
可能有办法用一行代码来做到这一点,perl
甚至sed
,,awk
但是“meh”。
也可以随意删除回声。有关更多信息,请参阅以下答案:
或者,如果您想从终端运行它们,只需添加一些指向实际程序的链接,使用任何您想要的通用名称。使用which
(通常/usr/bin
)查找程序的位置,然后使用 进行链接ln
。