mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 23:49:56 +00:00
Manage GNOME extensions via gsettings
This commit is contained in:
@@ -163,26 +163,63 @@
|
|||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.uuid }}"
|
label: "{{ item.uuid }}"
|
||||||
|
|
||||||
- name: Disable workstation GNOME extensions
|
- name: Read current workstation GNOME enabled extensions
|
||||||
tags: [gnome]
|
tags: [gnome]
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "gnome-extensions disable {{ item }}"
|
cmd: gsettings get org.gnome.shell enabled-extensions
|
||||||
become_user: "{{ username }}"
|
become_user: "{{ username }}"
|
||||||
environment: "{{ workstation_gnome_environment }}"
|
environment: "{{ workstation_gnome_environment }}"
|
||||||
loop: "{{ workstation_disabled_gnome_extensions | default([]) }}"
|
register: workstation_enabled_gnome_extensions_current
|
||||||
loop_control:
|
|
||||||
label: "{{ item }}"
|
|
||||||
changed_when: false
|
changed_when: false
|
||||||
when: (workstation_disabled_gnome_extensions | default([])) | length > 0
|
|
||||||
|
|
||||||
- name: Enable workstation GNOME extensions
|
- name: Compute desired workstation GNOME enabled extensions
|
||||||
|
tags: [gnome]
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
workstation_enabled_gnome_extensions_desired: >-
|
||||||
|
{{
|
||||||
|
(
|
||||||
|
(
|
||||||
|
workstation_enabled_gnome_extensions_current.stdout
|
||||||
|
| regex_replace('^@as\\s+', '')
|
||||||
|
| from_yaml
|
||||||
|
)
|
||||||
|
+ (
|
||||||
|
workstation_gnome_extensions
|
||||||
|
| default([])
|
||||||
|
| selectattr('enabled', 'defined')
|
||||||
|
| selectattr('enabled')
|
||||||
|
| map(attribute='uuid')
|
||||||
|
| list
|
||||||
|
)
|
||||||
|
)
|
||||||
|
| difference(workstation_disabled_gnome_extensions | default([]))
|
||||||
|
| unique
|
||||||
|
| sort
|
||||||
|
}}
|
||||||
|
workstation_enabled_gnome_extensions_desired_gsettings: >-
|
||||||
|
[{{
|
||||||
|
workstation_enabled_gnome_extensions_desired
|
||||||
|
| map('regex_replace', '^(.*)$', "'\\1'")
|
||||||
|
| join(', ')
|
||||||
|
}}]
|
||||||
|
|
||||||
|
- name: Apply workstation GNOME enabled extensions list
|
||||||
tags: [gnome]
|
tags: [gnome]
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: "gnome-extensions enable {{ item.uuid }}"
|
argv:
|
||||||
|
- gsettings
|
||||||
|
- set
|
||||||
|
- org.gnome.shell
|
||||||
|
- enabled-extensions
|
||||||
|
- "{{ workstation_enabled_gnome_extensions_desired_gsettings }}"
|
||||||
become_user: "{{ username }}"
|
become_user: "{{ username }}"
|
||||||
environment: "{{ workstation_gnome_environment }}"
|
environment: "{{ workstation_gnome_environment }}"
|
||||||
loop: "{{ workstation_gnome_extensions | default([]) }}"
|
changed_when: >-
|
||||||
loop_control:
|
{{
|
||||||
label: "{{ item.uuid }}"
|
(
|
||||||
changed_when: false
|
workstation_enabled_gnome_extensions_current.stdout
|
||||||
when: item.enabled | default(false)
|
| regex_replace('^@as\\s+', '')
|
||||||
|
| from_yaml
|
||||||
|
| sort
|
||||||
|
) != workstation_enabled_gnome_extensions_desired
|
||||||
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user