Il s’agit plus d’une question d’utilisation des instructions d’instruction de ligne de commande que d’ajout d’éléments au panneau de notification de Unity.
Je dois disposer d'un CLI d'une ligne pour ajouter un nouvel élément à la liste systray-whitelist de com.canonical.Unity.Panel.
La procédure standard pour le faire est la suivante:
Sudo gsettings get com.canonical.Unity.Panel systray-whitelist
On a
['JavaEmbeddedFrame', 'Wine', 'Skype']
Ensuite, nous faisons la deuxième commande
Sudo gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'Skype', 'shutter']"
Bien que ce soit excellent et tout, il faut que les gens copient et collent le résultat de la première ligne, et pour un script, j’écris, je veux le faire en une seule commande.
Jusqu'ici c'est ce que j'ai:
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 "\""}'
Je pense que je manque quelque chose.
Tout d'abord, je ne sais pas si je suis en train de diriger la chaîne dans gsettings set correctement. Deuxièmement, bien que je pense analyser correctement la sortie de gsettings get, je ne trouvais pas le moyen d'ajouter le "" autour du résultat modifié à l'aide de sed, je devais diriger une autre commande awk dans ce désordre.
Merci à tous ceux qui aident.
Après avoir rencontré erreur sur erreur, j'ai finalement compris pourquoi il n'acceptait pas les devis. Vous pouvez simplement placer les guillemets autour de la variable réelle, inutile de les entrer dans la commande réelle.
Cela fonctionnera:
gsettings set com.canonical.Unity.Panel systray-whitelist "$(gsettings get com.canonical.Unity.Panel systray-whitelist | sed -e "s/]$/, 'shutter']/")"
(En outre, vous devez supprimer le 'in sed -e "s /'] $/dans votre exemple pour que cela fonctionne).
Édition ultérieure: au fait, ne lancez pas gsettings avec Sudo ... ça ne marchera pas.