将启动器添加到顶部 gnome 面板的脚本

将启动器添加到顶部 gnome 面板的脚本

对于大量运行 12.04 和 gnome-classic 的机器。我想编写脚本将启动器添加到 gnome 面板的左上角。

我知道如何手动添加它们但这是一个繁琐的过程。

有人知道是否可以编写这个脚本吗?

答案1

  • 为了使脚本更简单,做出假设:

    1. 默认顶部面板'top-panel-0'来自:

      gsettings get org.gnome.gnome-panel.layout toplevel-id-list
      
    2. 面板中尚未有很多图标,只是为了避免覆盖具有相同索引的其他对象(例如'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/
    

相关内容