Я собираюсь назначить этот сценарий сочетанию клавиш, чтобы быстро переключать режим автоматического скрытия для Docky.
Я собираюсь сделать второй сценарий, который снова отключает Autohide, и назначить ему другое сочетание клавиш.
Причина закрытия и повторного запуска Docky заключается в том, что Docky не обновляет параметры конфигурации в противном случае. Я написал команду sudo
и подозреваю, что она не будет работать.
Я хочу:
sudo
#!/bin/bash
gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "Intellihide" &
sudo killall dockey &
docky
Ну, в первую очередь, Вы закрываете неправильную программу. Ваш сценарий имеет 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
Отметьте это &&
не то же как &
. &
отправляет команды в фон, как описано выше и не нужен, если Вы не хотите отправить что-то в фон. Для получения дополнительной информации на различных операторах оболочки, посмотрите здесь.