对于大量运行 12.04 和 gnome-classic 的机器。我想编写脚本将启动器添加到 gnome 面板的左上角。
我知道如何手动添加它们但这是一个繁琐的过程。
有人知道是否可以编写这个脚本吗?
答案1
为了使脚本更简单,做出假设:
默认顶部面板
'top-panel-0'
来自:gsettings get org.gnome.gnome-panel.layout toplevel-id-list
面板中尚未有很多图标,只是为了避免覆盖具有相同索引的其他对象(例如
'object-0-9'
:),取自:gsettings get org.gnome.gnome-panel.layout object-id-list
目标脚本:
gsettings set org.gnome.gnome-panel.object:/org/gnome/gnome-panel/layout/objects/object-0-9/ object-iid 'PanelInternalFactory::Launcher' gsettings set org.gnome.gnome-panel.object:/org/gnome/gnome-panel/layout/objects/object-0-9/ toplevel-id 'top-panel-0' gsettings set org.gnome.gnome-panel.object:/org/gnome/gnome-panel/layout/objects/object-0-9/ pack-type 'start' gsettings set org.gnome.gnome-panel.object:/org/gnome/gnome-panel/layout/objects/object-0-9/ pack-index 1 gsettings set org.gnome.gnome-panel.launcher:/org/gnome/gnome-panel/layout/objects/object-0-9/instance-config/ location '/usr/share/applications/gedit.desktop' gsettings set org.gnome.gnome-panel.layout object-id-list "[`gsettings get org.gnome.gnome-panel.layout object-id-list | awk '{ gsub("\[|\]",""); print;}'`, 'object-0-9']"
要重置/删除所有启动器,我无法处理
gsettings reset
没有架构存储的数据(API 可能不支持),而dconf reset
可以:for o in $(dconf list /org/gnome/gnome-panel/layout/objects/); do if [ ! "${o##object*}" ] ; then dconf reset -f /org/gnome/gnome-panel/layout/objects/$o; fi; done dconf write /org/gnome/gnome-panel/layout/object-id-list "`dconf read /org/gnome/gnome-panel/layout/object-id-list | awk '{ gsub(/(, [:\47]object-[0-9]-[0-9][:\47]|[:\47]object-[0-9]-[0-9][:\47], )*/,""); print; }'`"
笔记:
- 最好使用它
dconf-editor
来查看或快速进行关键更改以进行测试。 使用监视器 dconf 的变化以及脚本正在执行的操作:
dconf watch /org/gnome/gnome-panel/