Un comando di riga per aggiungere nuovi elementi alla lista bianca com.canonical.Unity.Panel


8

Questo è più di come utilizzare la domanda di istruzioni della riga di comando più che come aggiungere elementi al pannello di notifica di Unity.

Devo avere una riga di comando a una riga per aggiungere un nuovo elemento alla lista bianca com.canonical.Unity.Panel.

La procedura standard per farlo è:

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

Noi abbiamo

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

Quindi eseguiamo il secondo comando

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

Anche se è fantastico e tutto, richiede alle persone di copiare e incollare il risultato dalla prima riga, e per uno script che sto scrivendo voglio farlo in un solo comando.

Finora questo è quello che ho:

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

Penso che mi manchi qualcosa.

In primo luogo, non sono sicuro se eseguo il piping della stringa in gsettings set funzioni correttamente. In secondo luogo, mentre penso di analizzare correttamente l'output di gsettings, non troverei un modo per aggiungere il "" attorno al risultato modificato usando sed, quindi ho dovuto inserire un altro comando awk in questo pasticcio.

Grazie a chiunque ti aiuti.


Qualcuno l'ha provato su Ubuntu 12.04? Non funziona per me (funzionava con le versioni precedenti)
saeedgnu il

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'] / ")" prova questo, sostituisci yourapp con quello che ti serve.
hansioux,

Risposte:


8

Dopo aver colpito l'errore dopo errore, ho finalmente capito perché non ha accettato le virgolette. Puoi semplicemente posizionare le virgolette attorno alla variabile effettiva, senza bisogno di inserirle nel comando effettivo.

Questo funzionerà:

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

(Inoltre, è necessario rimuovere 'in sed -e "s /'] $ / nel tuo esempio perché funzioni).

Modifica successiva: a proposito, non eseguire gsettings con sudo ... non funzionerà.


Questa nuova linea mi è venuta in mente. Questo rimuoverà tutte le voci precedenti che potrebbero essere la whitelist e aggiungendole di nuovo alla fine. Questo è per gli script di installazione. è forza bruta ma funziona. 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,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.