Satu perintah baris untuk menambahkan item baru ke com.canonical.Unity.Panel systray-whitelist

8

Ini lebih merupakan cara menggunakan pertanyaan instruksi baris perintah lebih dari bagaimana menambahkan item ke panel notifikasi Unity.

Saya harus memiliki CLI satu baris untuk menambahkan item baru ke com.canonical.Unity.Panel systray-whitelist.

Prosedur standar untuk melakukannya adalah:

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

Kita mendapatkan

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

Lalu kita lakukan perintah kedua

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

Meskipun hebat dan semuanya, itu mengharuskan orang untuk menyalin dan menempelkan hasil dari baris pertama, dan untuk skrip yang saya tulis saya ingin melakukannya dalam satu perintah.

Sejauh ini yang saya miliki:

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 "\""}'

Saya pikir saya kehilangan sesuatu.

Pertama, saya tidak yakin apakah saya memipet string ke gsettings mengatur fungsi dengan benar. Kedua, sementara saya pikir saya mem-parsing output dari gsettings mendapatkan fungsi dengan benar, saya tidak akan menemukan cara untuk menambahkan "" di sekitar hasil modifikasi menggunakan sed, jadi saya harus menyalurkan perintah awk lain ke dalam kekacauan ini.

Terima kasih kepada siapa pun yang membantu.

hansioux
sumber
Adakah yang mengujinya di Ubuntu 12.04? Ini tidak bekerja untuk saya (itu bekerja pada versi sebelumnya)
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'] / ")" coba yang ini, ganti apl Anda dengan yang Anda butuhkan.
hansioux

Jawaban:

8

Setelah memukul kesalahan demi kesalahan, saya akhirnya tahu mengapa tidak menerima tanda kutip. Anda cukup menempatkan tanda kutip di sekitar variabel aktual, tidak perlu memasukkannya dalam perintah aktual.

Ini akan berhasil:

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

(Juga, Anda perlu menghapus 'in sed -e "s /'] $ / dalam contoh Anda agar ini berfungsi).

Sunting nanti: omong-omong, jangan jalankan gsettings dengan sudo ... itu tidak akan berfungsi.

Alin Andrei
sumber
Baris baru ini saya buat. Ini akan menghapus semua entri sebelumnya yang mungkin menjadi daftar putih, dan menambahkannya lagi di akhir. Ini untuk menginstal skrip. itu kekuatan brutal tetapi berhasil. 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