J'ai déjà posé la question sur stackoverflow, mais je me suis dit que cela pourrait être un meilleur endroit pour obtenir une réponse: je veux approvisionner une machine virtuelle avec Ubuntu 16 LTS en utilisant vagrant et ansible (local). Une partie du provisionnement consiste à ajouter et à supprimer des icônes de lanceur Unity pour un utilisateur également créé par le même script. Le script est lancé à partir de l'utilisateur vagrant
. Après avoir parcouru plusieurs questions connexes, j’ai essayé différentes variantes de
dbus-launch --exit-with-session
avant la commande gsettingsbecome_flags: '-i'
become_flags: '-H'
become_flags: '-E'
sur la commande de base suivante ansible
- name: Remove Launcher Icons
command: gsettings set com.canonical.Unity.Launcher favorites "['application://org.gnome.Nautilus.desktop', 'application://firefox.desktop', 'application://gnome-terminal.desktop', 'application://atom.desktop', 'application://unity-control-center.desktop', 'unity://running-apps', 'unity://expo-icon', 'unity://devices']"
become: true
become_user: "{{ user }}"
Jusqu'à présent, aucun succès, MAIS exécuter la commande en tant qu'utilisateur connecté fonctionne.
EDIT Ma meilleure solution pour une solution serait de lancer un script Shell depuis ansible au lieu de faire le changement directement dans ansible. Cependant, je ne sais pas à quoi cela devrait ressembler.
Je vous recommande de placer un fichier .desktop
dans le dossier ~/.config/autostart
de chaque utilisateur qui appellera le script de configuration du programme de lancement. Vous pouvez également placer le fichier .desktop
dans /etc/xdg/autostart
afin que le script s'exécute pour tous les utilisateurs. Vous devrez ensuite saisir un nom d'utilisateur et rechercher la configuration du programme de lancement de l'utilisateur dans une forme de base de données. Je utilise personnellement le script Python qui lit le fichier json avec le nom d’utilisateur: launcher list valies, car c’est simple.
J'ai également eu du mal à définir les favoris du lanceur via ansible.
Pour moi, la solution consistait à utiliser le module ansible dconf
au lieu de gsettings
:
- name: set icons/applications
dconf:
key: /com/canonical/unity/launcher/favorites
value: "{{ launcher_favorites }}"
state: present
Je suppose que cela fonctionne aussi avec d'autres utilisateurs via become_user
(mais je ne l'ai pas testé).