从 ansible 脚本更改另一个用户的 gsettings(由 vagrant 启动)

gra*_*kle 7 sudo unity gsettings

我已经在 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 }}"
Run Code Online (Sandbox Code Playgroud)

到目前为止,没有成功,但是以登录用户的身份运行命令是有效的。

编辑 我最好的解决方案是从 ansible 启动一个 shell 脚本,而不是直接在 ansible 中进行更改。但是,我不确定它应该是什么样子。

Ser*_*nyy 1

我建议您将一个.desktop文件放入每个用户的~/.config/autostart文件夹中,该文件将调用启动器设置脚本。或者,将.desktop文件放入,/etc/xdg/autostart以便脚本为每个用户运行,但随后您需要获取用户名并以某种形式的数据库查找用户启动器配置。我个人使用Python脚本来读取带有用户名的json文件:启动器列表值,因为它很简单。