Bash脚本用于向Unity启动器添加/删除桌面快捷方式?

我正在尝试编写一个脚本,在新安装后设置我的桌面环境。有一件事我搞不明白,就是如何通过一个bash脚本将项目固定/取消固定到Unity启动器上。你有什么想法吗?

你考虑过复制配置文件吗? - ctrl-alt-delor
不知道他们是什么或者在哪里? - Dave
它们位于您的主目录下,并以点开头,因此是隐藏的。键入 ls -dF .* 我不知道您需要哪些文件,因为几乎每个应用程序都有相应的文件。 - ctrl-alt-delor
启动器上的项目列表不是一个简单的配置文件,也不是一个包含文件的目录本身。 - dobey
添加启动器很容易,但问题是在每个在线可用的解决方案中,你必须进行一个不美观的重启... - hytromo
2个回答

使用gsettings:
gsettings get com.canonical.Unity.Launcher favorites

给你一个启动器上的列表:
['nautilus-home.desktop', '/opt/google/chrome/google-chrome.desktop', 'apps.desktop', 'geany.desktop', 'libreoffice-startcenter.desktop', 'gnome-terminal.desktop', 'gcalctool.desktop', 'Science.desktop', 'gimp.desktop', 'inkscape.desktop', 'ubuntu-software-center.desktop', 'alarm-clock-applet.desktop']

所以你可以在bash中这样做:

#!/bin/bash
myfile='firefox.desktop'
list=`gsettings get com.canonical.Unity.Launcher favorites`
newlist=`echo $list | sed s/]/", '${myfile}']"/`
gsettings set com.canonical.Unity.Launcher favorites "$newlist"

我测试过了,将Firefox添加到启动器是可行的,但是图标不会立即显示出来。你需要注销/登录或执行unity --replace命令。

如果你想要为其他用户更改设置,请使用sudo -u username dbus-launch --exit-with-session gsettings set com.canonical.Unity.Launcher favorites "$newlist"。参考链接:http://stackoverflow.com/a/23849268/2746945 - uzhoasit

运行以下命令:
xdg-desktop-menu install --novendor /path/to/app-name.desktop

"app-name.desktop" 文件看起来会像这样:
[Desktop Entry]
Name=App Name
Comment=A description of the app
Exec=/path/to/app
TryExec=/path/to/app
Icon=/path/to/app-icon.ico
StartupNotify=false
Terminal=false
Type=Application
Categories=App-Category

谢谢你的帮助,但这并不能证明是Unity启动器的问题。 - Dave
unity --replace? - SirCharlo
虽然这个程序(Dash home)把它添加了进去,但是即使使用 unity --replace 命令,它也没有被固定在侧边栏上。不过,我可以通过从 Dash 菜单中把它拖到侧边栏来很容易地将其固定。 - dlamblin