新しいアイテムをcom.canonical.Unity.Panel systray-whitelistに追加するための1行のコマンド


8

これは、Unity通知パネルにアイテムを追加する方法ではなく、コマンドラインの指示の質問を使用する方法の詳細です。

新しいアイテムをcom.canonical.Unity.Panel systray-whitelistに追加するには、1行のCLIが必要です。

そのための標準的な手順は次のとおりです。

sudo gsettings get com.canonical.Unity.Panel systray-whitelist

我々が得る

['JavaEmbeddedFrame', 'Wine', 'Skype']

次に、2番目のコマンドを実行します

sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"

それはすばらしいことですが、最初の行から結果をコピーして貼り付ける必要があります。私が書いているスクリプトの場合は、1つのコマンドで実行したいと考えています。

これまでのところ、これは私が持っているものです:

sudo gsettings set com.canonical.Unity.Panel systray-whitelist | gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/']$/,'shutter']/" | awk 'NF{print "\"" $0 "\""}'

何かが足りないと思います。

まず、文字列をgsettings set functionに正しくパイプしているかどうかわかりません。次に、gsettings get functionからの出力を正しく解析していると思いますが、sedを使用して変更された結果の周りに「」を追加する方法がわからないため、別のawkコマンドをこの混乱にパイプする必要がありました。

助けてくれた人に感謝します。


Ubuntu 12.04でこれをテストした人はいますか?それは私にとっては機能しません(以前のバージョンで機能していました)
saeedgnu

gsettings set com.canonical.Unity.Panel systray-whitelist "$(gsettings get com.canonical.Unity.Panel systray-whitelist | sed" s /、* 'yourapp' * // g "| sed" s / 'yourapp' *、* // g "| sed -e" s /] $ /、 'yourapp'] / ")"これを試して、yourappを必要なものに置き換えてください。
hansioux

回答:


8

エラーを何度も繰り返した後、私はついに引用符を受け入れない理由を理解しました。実際の変数に引用符を配置するだけでよく、実際のコマンドに引用符を入力する必要はありません。

これは動作します:

gsettings set com.canonical.Unity.Panel systray-whitelist "$(gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/]$/, 'shutter']/")"

(また、これを機能させるには、例の 'sed -e "s /'] $ /を削除する必要があります)。

後で編集:ちなみに、sudoでgsettingsを実行しないでください...機能しません。


私が思いついたこの新しい一行。これにより、ホワイトリストである可能性のある以前のエントリが削除され、最後に再び追加されます。これはインストールスクリプト用です。それは総当たりですが、機能します。gsettings set com.canonical.Unity.Panel systray-whitelist "$(gsettings get com.canonical.Unity.Panel systray-whitelist | sed" s /、* 'yourapp' * // g "| sed" s / 'yourapp' *、* // g "| sed -e" s /] $ /、 'yourapp'] / ")"
hansioux
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.