这更多是一个如何使用命令行指令的问题,而不是如何向 Unity 通知面板添加项目。
我必须有一个单行 CLI 才能将新项目添加到 com.canonical.Unity.Panel 系统托盘白名单。
这样做的标准程序是:
sudo gsettings get com.canonical.Unity.Panel systray-whitelist
Run Code Online (Sandbox Code Playgroud)
我们得到
['JavaEmbeddedFrame', 'Wine', 'Skype']
Run Code Online (Sandbox Code Playgroud)
然后我们执行第二个命令
sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"
Run Code Online (Sandbox Code Playgroud)
虽然这很好,但它需要人们从第一行复制和粘贴结果,对于我正在编写的脚本,我想在一个命令中完成它。
到目前为止,这就是我所拥有的:
sudo gsettings set com.canonical.Unity.Panel systray-whitelist | gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/']$/,'shutter']/" | awk 'NF{print "\"" $0 "\""}'
Run Code Online (Sandbox Code Playgroud)
我想我错过了一些东西。
首先,我不确定我是否正确地将字符串输入到 gsettings set 函数中。其次,虽然我认为我正在正确解析 gsettings get 函数的输出,但我想不出一种方法来使用 sed 在修改后的结果周围添加“”,所以我不得不将另一个 awk 命令通过管道传输到这个烂摊子中。
感谢任何有帮助的人。
我正在 Qt 中开发一个程序,该程序将帮助用户在 Unity 启动器中管理(创建、编辑和删除)他们的快速列表。
我已经到了创建 .desktop 文件的地步,但我不知道如何以编程方式将该文件放在 Unity 启动器上。
我找到了两种(不好的)方法来做到这一点:
因此,我正在搜索在第一个“拖放”方法上调用的函数或系统命令,以便我可以在我的程序中执行它,而无需用户手动执行。
我什至不知道在哪里(或如何)搜索我的解决方案,因此任何建议都会有所帮助。
根据官方文档:
为了将您的启动器添加到左侧的 Unity Launcher,您可以选择它并将其拖到 Launcher 面板上。或者,您可以将 .desktop 文件放在 /usr/share/applications/ 或 ~/.local/share/applications/。将文件移到那里后,在 Dash 中搜索它(Windows 键 -> 键入应用程序的名称)并将其拖放到 Unity Launcher。现在您的启动器(.desktop 文件)已锁定在 Unity 启动器上!
这意味着,您可以通过“拖放”手动添加启动器。但是,是否可以以编程方式执行此操作?
我可以解释为什么我要问它:
我有自己的 scpirt,它下载最新版本的 Eclipse IDE,创建 eclipse.desktop 文件而不与用户进行迭代。
在最后一步,我想将 Eclipse.desktop 文件添加到 Unity Launcher,我不想让用户这样做。
我分析了 *.desktop 文件的规格并确实得到了答案。
请提供建议。