web-dev-qa-db-ja.com

Dockyのbashスクリプトを手伝ってください

このスクリプトをキーボードショートカットに割り当てて、Dockyの自動非表示をすばやく切り替えることができるようにします。

Autohideを再びオフにする2番目のスクリプトを作成し、それに別のキーボードショートカットを割り当てます。

Dockyを閉じて再起動する理由は、Dockyが構成の設定を更新しないためです。 Sudoコマンドを作成しましたが、機能しないと思われます。

したい:

  1. Sudoコマンドなしで実行します
  2. 可能であれば(重要ではありません)、「なし」と「インテリハイド」を切り替えるだけの1つの統合スクリプトを用意します。これにより、2つの別個のキーを用意する必要がなくなります。
  3. 可能であれば、Dockyに構成の値を更新させ、終了して再度起動する必要はありません。
#!/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に設定されます。

&&&と同じではないことに注意してください。 &は、上記のようにコマンドをバックグラウンドに送信します。wantが何かをバックグラウンドに送信しない限り、コマンドは必要ありません。さまざまなシェル演算子の詳細については、 ここ を参照してください。

4
terdon