私はすでにstackoverflowで質問をしましたが、答えを得るためのより良い場所になる可能性があると考えました:vagrantとansible(ローカル)を使用してUbuntu 16 LTSで仮想マシンをプロビジョニングしたいです。プロビジョニングの一部は、同じスクリプトによって作成されたユーザーのUnityランチャーアイコンを追加および削除することです。スクリプトは、vagrant
ユーザーから開始されます。関連するいくつかの質問を検索した後、さまざまなバリエーションを試しました
dbus-launch --exit-with-session
gsettingsコマンドの前become_flags: '-i'
become_flags: '-H'
become_flags: '-E'
次の基本的な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 }}"
これまでのところ、成功していませんが、ログインしたユーザーとしてコマンドを実行しても機能します。
EDITソリューションに対する私の最善のアプローチは、ansibleを直接変更するのではなく、ansibleからシェルスクリプトを起動することです。ただし、どのように見えるかはわかりません。
ランチャーセットアップスクリプトを呼び出す.desktop
ファイルを各ユーザーの~/.config/autostart
フォルダーに配置することをお勧めします。または、.desktop
ファイルを/etc/xdg/autostart
に配置して、すべてのユーザーに対してスクリプトが実行されるようにしますが、ユーザー名を取得し、何らかの形式のデータベースでユーザーランチャーの設定を見つける必要があります。 Idは個人的にPythonスクリプトを使用します。このスクリプトは、ユーザー名:ランチャーリストの値でjsonファイルを読み取ります。
また、ansibleを使用してランチャーのお気に入りを設定するのにも苦労しました。
私にとっての解決策は、dconf
の代わりにansible gsettings
モジュールを使用することでした。
- name: set icons/applications
dconf:
key: /com/canonical/unity/launcher/favorites
value: "{{ launcher_favorites }}"
state: present
become_user
を介して他のユーザーでも機能すると思います(ただし、テストしていません)。