Docky 的 bash 脚本帮助

Docky 的 bash 脚本帮助

我要将此脚本分配给键盘快捷键,以便我可以快速切换 Docky 的自动隐藏功能。

我将制作第二个脚本来再次关闭自动隐藏,并为其分配不同的键盘快捷键。

关闭并重新启动 Docky 的原因是,否则 Docky 不会刷新配置的设置。我写了一个sudo命令,但我怀疑它不起作用。

我想要:

  1. sudo无需任何命令即可完成
  2. 如果可能的话(不重要),有一个统一的脚本可以在“无”和“Intellihide”之间切换,这样我就不需要有两个单独的键。
  3. 如果可能的话,让 Docky 刷新配置的值,而无需退出并重新启动。
#!/bin/bash 
gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "Intellihide" & 
sudo killall dockey & 
docky

答案1

嗯,首先,你杀死了错误的程序。你的脚本有,sudo killall dockey &但你想杀死docky,而不是dockey。也就是说,绝对没有理由sudodocky已经由你的用户启动,所以你可以在没有任何特殊权限的情况下杀死它。你也不需要将它发送到后台(这就是 所做的&)。

您尚未解释为什么脚本不起作用,但可能发生的情况是,您运行它但看不到任何反应(请在提问时始终解释症状是什么)。这是因为您使用sudo ...向后台发送命令&sudo需要密码:

$ sudo ls
[sudo] password for terdon: 

因此,当您运行它时,它会提示您输入密码。由于您在后台运行它,因此您永远不会看到该提示,并且脚本将卡住,等待您回答。

我没有使用过docky,也不知道是否可以在不重启的情况下执行此操作,但重启似乎是最简单的选择。只需将脚本更改为:

#!/bin/bash

gconftool-2 --get  /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide | grep -q None &&
    gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "Intellihide" ||
    gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "None"    

killall docky && docky

的意思&&AND,换句话说就是“只有前一个命令成功时才运行下一个命令”。||( OR) 则相反,“如果前一个命令失败,则运行下一个命令”。因此,上面的脚本将首先查询 的gconf当前状态Autohidegrep只有与 匹配时 才会成功None。如果匹配,则设置为Intellihide,如果不匹配,则设置为None

请注意&&不同于&&如上所述, 会将命令发送到后台,除非您将某些内容发送到后台。有关各种 shell 操作符的详细信息,请参阅这里

相关内容