我要将此脚本分配给键盘快捷键,以便我可以快速切换 Docky 的自动隐藏功能。
我将制作第二个脚本来再次关闭自动隐藏,并为其分配不同的键盘快捷键。
关闭并重新启动 Docky 的原因是,否则 Docky 不会刷新配置的设置。我写了一个sudo
命令,但我怀疑它不起作用。
我想要:
sudo
无需任何命令即可完成- 如果可能的话(不重要),有一个统一的脚本可以在“无”和“Intellihide”之间切换,这样我就不需要有两个单独的键。
- 如果可能的话,让 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
。也就是说,绝对没有理由sudo
,docky
已经由你的用户启动,所以你可以在没有任何特殊权限的情况下杀死它。你也不需要将它发送到后台(这就是 所做的&
)。
您尚未解释为什么脚本不起作用,但可能发生的情况是,您运行它但看不到任何反应(请在提问时始终解释症状是什么)。这是因为您使用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
当前状态Autohide
。grep
只有与 匹配时 才会成功None
。如果匹配,则设置为Intellihide
,如果不匹配,则设置为None
请注意&&
不同于&
。&
如上所述, 会将命令发送到后台,除非您想将某些内容发送到后台。有关各种 shell 操作符的详细信息,请参阅这里。