diff --git a/files/pictures/wallpaper.png b/roles/gnome_shell/files/backgrounds/wallpaper.png similarity index 100% rename from files/pictures/wallpaper.png rename to roles/gnome_shell/files/backgrounds/wallpaper.png diff --git a/roles/gnome_shell/tasks/dconf.yml b/roles/gnome_shell/tasks/dconf.yml new file mode 100644 index 0000000..db5e269 --- /dev/null +++ b/roles/gnome_shell/tasks/dconf.yml @@ -0,0 +1,112 @@ +############################################################################### +# Default configuration +# See https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide/custom-default-values-system-settings +# Ansible dconf module seems not to work for that... +############################################################################### + +# General ..................................................................... + +- name: Create dconf profile directory + file: + path: /etc/dconf/profile/ + state: directory + owner: root + group: root + mode: 0755 + +- name: Create user profile + template: + dest: /etc/dconf/profile/user + src: dconf/profile/user + mode: 0644 + group: root + owner: root + +- name: Create dconf DB directory + file: + path: /etc/dconf/db/local.d/ + state: directory + owner: root + group: root + mode: 0755 + +# Background .................................................................. + +- name: Ensure wallpaper directory existance + file: + path: /usr/local/share/backgrounds/ + state: directory + owner: root + group: root + mode: 0644 + tags: + - wallpaper + +- name: Copy wallpaper + copy: + src: backgrounds/wallpaper.png + dest: /usr/local/share/backgrounds/wallpaper.png + owner: root + group: root + mode: 0644 + tags: + - wallpaper + +- name: Set default background + # See https://help.gnome.org/admin/system-admin-guide/stable/desktop-background.html.en + template: + dest: /etc/dconf/db/local.d/01-background + src: dconf/local.d/01-background + owner: root + group: root + mode: 0644 + tags: + - wallpaper + +# Keymap ...................................................................... + +- name: Try to find out host keymap + command: localectl status + delegate_to: localhost + failed_when: false + changed_when: false + when: keymap|default('', true)|length == 0 + register: localectl_status + tags: + - keymap + +- name: Store found host keymap + set_fact: + keymap: "{{ localectl_status.stdout | regex_search('Keymap:\\s*(.*)$', '\\1', multiline=True) | first }}" + when: (keymap | default('', true) | length == 0) and (localectl_status.rc == 0) + tags: + - keymap + +- name: Set default keymap + template: + dest: /etc/dconf/db/local.d/01-input-sources + src: dconf/local.d/01-input-sources + owner: root + group: root + mode: 0644 + when: keymap|default('', true)|length != 0 + tags: + - keymap + +# Enable extensions by default + +- name: Set default keymap + template: + dest: /etc/dconf/db/local.d/10-enabled-extensions + src: dconf/local.d/10-enabled-extensions + owner: root + group: root + mode: 0644 + tags: + - extensions + +# Update dconf database ....................................................... + +- name: Update dconf database + command: dconf update + changed_when: false # The command is idempotent... diff --git a/roles/gnome_shell/tasks/main.yml b/roles/gnome_shell/tasks/main.yml index bb426e5..c13873c 100644 --- a/roles/gnome_shell/tasks/main.yml +++ b/roles/gnome_shell/tasks/main.yml @@ -18,33 +18,13 @@ tags: - gnome_shell -- name: Try to find out host keymap - command: localectl status - delegate_to: localhost - failed_when: false - changed_when: false - when: keymap|default('', true)|length == 0 - register: localectl_status - tags: - - gnome_shell - - keymap - -- name: Store found host keymap - set_fact: - keymap: "{{ localectl_status.stdout | regex_search('Keymap:\\s*(.*)$', '\\1', multiline=True) | first }}" - when: (keymap | default('', true) | length == 0) and (localectl_status.rc == 0) - tags: - - gnome_shell - - keymap - -- name: Set gnome keyboard layout - dconf: - key: "/org/gnome/desktop/input-sources/sources" - value: "[('xkb', '{{ keymap }}')]" - when: keymap|default('', true)|length != 0 - tags: - - gnome_shell - - keymap +- name: Include configuration + include_tasks: + file: dconf.yml + apply: + tags: + - gnome_shell + - dconf - name: Disable sleep on inactivity # Sleep on inactivity can be a problem when installation with Ansible is slow @@ -94,15 +74,4 @@ - gnome_shell - apps -- name: Enable appindicator by default - # Proper name of the appindicator extension needed - # Can be found in PKGBUILD of package: - # appindicatorsupport@rgcjonas.gmail.com - dconf: - key: "/org/gnome/shell/enabled-extensions" - value: "['appindicatorsupport@rgcjonas.gmail.com']" - tags: - - gnome_shell - - apps - # org.gnome.books night-mode true diff --git a/roles/gnome_shell/templates/dconf/local.d/01-background b/roles/gnome_shell/templates/dconf/local.d/01-background new file mode 100644 index 0000000..870f20f --- /dev/null +++ b/roles/gnome_shell/templates/dconf/local.d/01-background @@ -0,0 +1,2 @@ +[org/gnome/desktop/background] +picture-uri='file:///usr/local/share/backgrounds/wallpaper.png' diff --git a/roles/gnome_shell/templates/dconf/local.d/01-input-sources b/roles/gnome_shell/templates/dconf/local.d/01-input-sources new file mode 100644 index 0000000..72ac4a1 --- /dev/null +++ b/roles/gnome_shell/templates/dconf/local.d/01-input-sources @@ -0,0 +1,2 @@ +[org/gnome/desktop/input-sources] +sources=[('xkb', '{{ keymap }}')] diff --git a/roles/gnome_shell/templates/dconf/local.d/10-enabled-extensions b/roles/gnome_shell/templates/dconf/local.d/10-enabled-extensions new file mode 100644 index 0000000..d39076e --- /dev/null +++ b/roles/gnome_shell/templates/dconf/local.d/10-enabled-extensions @@ -0,0 +1,2 @@ +[org/gnome/shell] +enabled-extensions=['appindicatorsupport@rgcjonas.gmail.com'] diff --git a/roles/gnome_shell/templates/dconf/profile/user b/roles/gnome_shell/templates/dconf/profile/user new file mode 100644 index 0000000..aca0641 --- /dev/null +++ b/roles/gnome_shell/templates/dconf/profile/user @@ -0,0 +1,2 @@ +user-db:user +system-db:local diff --git a/tasks/wallpaper.yml b/tasks/wallpaper.yml deleted file mode 100644 index 90918b6..0000000 --- a/tasks/wallpaper.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Set gnome shell wallpaper - -- name: Ensure directory existance - file: - path: /usr/local/share/backgrounds/ - state: directory - owner: root - group: root - mode: 0644 - tags: - - wallpaper - -- name: Copy wallpaper - copy: - src: pictures/wallpaper.png - dest: /usr/local/share/backgrounds/wallpaper.png - owner: root - group: root - mode: 0644 - tags: - - wallpaper - -- name: Set gnome shell wallpaper - # https://help.gnome.org/admin/system-admin-guide/stable/desktop-background.html.en - # && https://docs.ansible.com/ansible/2.9/modules/dconf_module.html - dconf: - key: "/org/gnome/desktop/background/picture-uri" - value: "'file:///usr/local/share/backgrounds/wallpaper.png'" - tags: - - gnome_shell - - wallpaper