mirror of
https://github.com/fscotto/infra.git
synced 2026-07-29 16:20:01 +00:00
Add XFCE optional desktop
This commit is contained in:
@@ -4,6 +4,11 @@ desktop_protonmail_bridge_cert_path: ~/.var/app/ch.protonmail.protonmail-bridge/
|
||||
desktop_environment: minimal
|
||||
desktop_allow_display_manager_switch: false
|
||||
|
||||
desktop_display_manager_by_environment:
|
||||
minimal: emptty
|
||||
xfce: lightdm
|
||||
kde: sddm
|
||||
|
||||
desktop_sessions_enabled:
|
||||
- sway
|
||||
- hyprland
|
||||
@@ -236,6 +241,30 @@ desktop_hyprland_dotfiles:
|
||||
dest: .config/foot/
|
||||
mode: preserve
|
||||
|
||||
desktop_xfce_dotfiles:
|
||||
- name: XFCE configuration
|
||||
src: .config/xfce4/
|
||||
dest: .config/xfce4/
|
||||
mode: preserve
|
||||
- name: XFCE Thunar custom actions
|
||||
src: .config/Thunar/uca.xfce.xml
|
||||
dest: .config/Thunar/uca.xml
|
||||
mode: "0644"
|
||||
- name: XFCE dark desktop background
|
||||
src: .local/share/backgrounds/xfce-dark.svg
|
||||
dest: .local/share/backgrounds/xfce-dark.svg
|
||||
mode: "0644"
|
||||
|
||||
desktop_xfce_managed_paths:
|
||||
- .config/xfce4
|
||||
- .local/share/backgrounds/xfce-dark.svg
|
||||
|
||||
xfce_theme_gtk: Yaru-blue-dark
|
||||
xfce_theme_icons: Papirus-Dark
|
||||
xfce_theme_wm: Greybird-dark
|
||||
xfce_font_ui: Liberation Sans 10
|
||||
xfce_font_monospace: Liberation Mono 11
|
||||
|
||||
desktop_flatpak_packages:
|
||||
- be.alexandervanhee.gradia
|
||||
- ch.protonmail.protonmail-bridge
|
||||
|
||||
@@ -157,6 +157,29 @@ desktop_kde_packages:
|
||||
- skanpage
|
||||
- spectacle
|
||||
|
||||
desktop_xfce_packages:
|
||||
- blueman
|
||||
- gnome-keyring
|
||||
- greybird-themes
|
||||
- gvfs
|
||||
- gvfs-cdda
|
||||
- gvfs-mtp
|
||||
- gvfs-smb
|
||||
- lightdm
|
||||
- lightdm-gtk-greeter
|
||||
- network-manager-applet
|
||||
- papirus-icon-theme
|
||||
- seahorse
|
||||
- thunar-archive-plugin
|
||||
- xarchiver
|
||||
- xdg-desktop-portal-gtk
|
||||
- xfce4
|
||||
- xfce4-clipman-plugin
|
||||
- xfce4-pulseaudio-plugin
|
||||
- xfce4-screenshooter
|
||||
- xfce4-whiskermenu-plugin
|
||||
- xorg
|
||||
|
||||
desktop_sway_packages:
|
||||
- cliphist
|
||||
- dunst
|
||||
|
||||
@@ -46,21 +46,20 @@
|
||||
update_cache: false
|
||||
upgrade: true
|
||||
|
||||
- name: Install packages on Void Linux
|
||||
- name: Select packages for the configured desktop environment
|
||||
tags: [packages]
|
||||
community.general.xbps:
|
||||
name: >-
|
||||
ansible.builtin.set_fact:
|
||||
packages_void_selected_desktop_packages: >-
|
||||
{{
|
||||
(
|
||||
(common_packages | default([]))
|
||||
+ (void_packages_base | default([]))
|
||||
+ (profile_packages | default([]))
|
||||
+ (desktop_common_packages | default([]))
|
||||
+ (
|
||||
(desktop_minimal_packages | default([]))
|
||||
if (desktop_environment | default('minimal')) == 'minimal'
|
||||
(desktop_minimal_packages | default([]))
|
||||
if (desktop_environment | default('minimal')) == 'minimal'
|
||||
else (
|
||||
(desktop_xfce_packages | default([]))
|
||||
if (desktop_environment | default('minimal')) == 'xfce'
|
||||
else (desktop_kde_packages | default([]))
|
||||
)
|
||||
)
|
||||
+ (
|
||||
(desktop_sway_packages | default([]))
|
||||
if (
|
||||
@@ -77,6 +76,37 @@
|
||||
)
|
||||
else []
|
||||
)
|
||||
| unique
|
||||
}}
|
||||
|
||||
- name: Calculate packages owned only by inactive desktop environments
|
||||
tags: [packages]
|
||||
ansible.builtin.set_fact:
|
||||
packages_void_inactive_desktop_packages: >-
|
||||
{{
|
||||
(
|
||||
(desktop_minimal_packages | default([]))
|
||||
+ (desktop_sway_packages | default([]))
|
||||
+ (desktop_hyprland_packages | default([]))
|
||||
+ (desktop_xfce_packages | default([]))
|
||||
+ (desktop_kde_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
| difference(packages_void_selected_desktop_packages)
|
||||
| difference(desktop_display_manager_by_environment.values() | list)
|
||||
}}
|
||||
|
||||
- name: Install packages on Void Linux
|
||||
tags: [packages]
|
||||
community.general.xbps:
|
||||
name: >-
|
||||
{{
|
||||
(
|
||||
(common_packages | default([]))
|
||||
+ (void_packages_base | default([]))
|
||||
+ (profile_packages | default([]))
|
||||
+ (desktop_common_packages | default([]))
|
||||
+ (packages_void_selected_desktop_packages | default([]))
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
@@ -87,36 +117,20 @@
|
||||
- name: Check whether the selected display manager is active
|
||||
tags: [packages, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: >-
|
||||
/var/service/{{ 'sddm' if (desktop_environment | default('minimal')) == 'kde' else 'emptty' }}
|
||||
path: "/var/service/{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}"
|
||||
register: packages_void_selected_display_manager
|
||||
|
||||
- name: Remove packages managed by the inactive desktop environment
|
||||
tags: [packages]
|
||||
community.general.xbps:
|
||||
name: >-
|
||||
{{
|
||||
(
|
||||
(
|
||||
(desktop_minimal_packages | default([]))
|
||||
| reject('equalto', 'emptty')
|
||||
| list
|
||||
)
|
||||
+ (desktop_sway_packages | default([]))
|
||||
+ (desktop_hyprland_packages | default([]))
|
||||
)
|
||||
if (desktop_environment | default('minimal')) == 'kde'
|
||||
else (
|
||||
(desktop_kde_packages | default([]))
|
||||
| reject('equalto', 'sddm')
|
||||
| list
|
||||
)
|
||||
}}
|
||||
name: "{{ packages_void_inactive_desktop_packages }}"
|
||||
state: absent
|
||||
update_cache: false
|
||||
when: >-
|
||||
packages_void_selected_display_manager.stat.exists
|
||||
or (desktop_allow_display_manager_switch | default(false))
|
||||
when:
|
||||
- (packages_void_inactive_desktop_packages | default([])) | length > 0
|
||||
- >-
|
||||
packages_void_selected_display_manager.stat.exists
|
||||
or (desktop_allow_display_manager_switch | default(false))
|
||||
|
||||
- name: Remove host-absent packages on Void Linux
|
||||
tags: [packages]
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
tags: [always]
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (desktop_environment | default('minimal')) in ['minimal', 'kde']
|
||||
- (desktop_environment | default('minimal')) in ['minimal', 'xfce', 'kde']
|
||||
- >-
|
||||
(desktop_environment | default('minimal')) == 'kde'
|
||||
(desktop_environment | default('minimal')) != 'minimal'
|
||||
or (desktop_sessions_enabled | default([]) | length > 0)
|
||||
- >-
|
||||
(desktop_environment | default('minimal')) == 'kde'
|
||||
(desktop_environment | default('minimal')) != 'minimal'
|
||||
or (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland']) | length == 0)
|
||||
- >-
|
||||
(desktop_environment | default('minimal')) == 'kde'
|
||||
(desktop_environment | default('minimal')) != 'minimal'
|
||||
or desktop_default_session in (desktop_sessions_enabled | default([]))
|
||||
fail_msg: >-
|
||||
desktop_environment must be minimal or kde. Minimal desktops also require
|
||||
desktop_environment must be minimal, xfce, or kde. Minimal desktops also require
|
||||
desktop_default_session to be included in desktop_sessions_enabled.
|
||||
|
||||
- name: Configure elogind to suspend on lid close
|
||||
@@ -475,7 +475,7 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) == 'minimal'
|
||||
when: (desktop_environment | default('minimal')) in ['minimal', 'xfce']
|
||||
|
||||
- name: Remove minimal Qt theme override for KDE
|
||||
tags: [theme]
|
||||
|
||||
@@ -21,7 +21,11 @@
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ desktop_minimal_managed_paths | default([]) }}"
|
||||
loop: >-
|
||||
{{
|
||||
(desktop_minimal_managed_paths | default([]))
|
||||
+ (desktop_xfce_managed_paths | default([]))
|
||||
}}
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
@@ -36,6 +40,7 @@
|
||||
loop:
|
||||
- /etc/xdg/xdg-desktop-portal/hyprland-portals.conf
|
||||
- /etc/xdg/xdg-desktop-portal/sway-portals.conf
|
||||
- /etc/xdg/xdg-desktop-portal/xfce-portals.conf
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'kde'
|
||||
- profile_desktop_kde_sddm_service.stat.exists
|
||||
@@ -47,6 +52,7 @@
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/emptty
|
||||
- /etc/lightdm/lightdm.conf.d/50-xfce.conf
|
||||
- /usr/local/bin/start-hyprland-session
|
||||
- /usr/local/bin/start-sway
|
||||
when:
|
||||
|
||||
223
ansible/roles/profile_desktop_xfce/tasks/main.yml
Normal file
223
ansible/roles/profile_desktop_xfce/tasks/main.yml
Normal file
@@ -0,0 +1,223 @@
|
||||
---
|
||||
- name: Inspect configured desktop display manager for XFCE cleanup gates
|
||||
tags: [always, packages, services, xfce, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: "/var/service/{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}"
|
||||
register: profile_desktop_xfce_selected_display_manager
|
||||
|
||||
- name: Ensure XFCE user configuration directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config/xfce4"
|
||||
- "{{ user_home }}/.config/xfce4/terminal"
|
||||
- "{{ user_home }}/.config/xfce4/xfconf"
|
||||
- "{{ user_home }}/.config/xfce4/xfconf/xfce-perchannel-xml"
|
||||
- "{{ user_home }}/.config/Thunar"
|
||||
- "{{ user_home }}/.local/share/backgrounds"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Copy XFCE desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ desktop_xfce_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Render XFCE themed configuration
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
loop:
|
||||
- src: xsettings.xml.j2
|
||||
dest: .config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
|
||||
- src: xfwm4.xml.j2
|
||||
dest: .config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
|
||||
- src: xfce4-desktop.xml.j2
|
||||
dest: .config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
|
||||
- src: terminalrc.j2
|
||||
dest: .config/xfce4/terminal/terminalrc
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Copy XFCE MIME application defaults
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.config/mimeapps.list"
|
||||
dest: "{{ user_home }}/.config/mimeapps.list"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Make Thunderbird the XFCE mail handler
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
community.general.ini_file:
|
||||
path: "{{ user_home }}/.config/mimeapps.list"
|
||||
section: "{{ item.section }}"
|
||||
option: x-scheme-handler/mailto
|
||||
value: "{{ item.value }}"
|
||||
no_extra_spaces: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
loop:
|
||||
- section: Default Applications
|
||||
value: org.mozilla.Thunderbird.desktop
|
||||
- section: Added Associations
|
||||
value: org.mozilla.Thunderbird.desktop;
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Ensure LightDM configuration directories exist
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
loop:
|
||||
- /etc/lightdm
|
||||
- /etc/lightdm/lightdm.conf.d
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Configure LightDM for the XFCE session
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.template:
|
||||
src: lightdm-xfce.conf.j2
|
||||
dest: /etc/lightdm/lightdm.conf.d/50-xfce.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
register: profile_desktop_xfce_lightdm_config
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Configure the LightDM GTK greeter
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.template:
|
||||
src: lightdm-gtk-greeter.conf.j2
|
||||
dest: /etc/lightdm/lightdm-gtk-greeter.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
register: profile_desktop_xfce_lightdm_greeter_config
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Report deferred LightDM configuration activation
|
||||
tags: [packages, services, xfce, display-manager]
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
LightDM configuration changed. Apply the display-manager switch or restart
|
||||
LightDM from a TTY or SSH session; it is not restarted automatically.
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'xfce'
|
||||
- >-
|
||||
profile_desktop_xfce_lightdm_config is changed
|
||||
or profile_desktop_xfce_lightdm_greeter_config is changed
|
||||
|
||||
- name: Manage gnome-keyring auth hook for LightDM
|
||||
tags: [packages, services, xfce]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/lightdm
|
||||
insertafter: EOF
|
||||
line: "auth optional pam_gnome_keyring.so"
|
||||
state: present
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Manage gnome-keyring session hook for LightDM
|
||||
tags: [packages, services, xfce]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/lightdm
|
||||
insertafter: EOF
|
||||
line: "session optional pam_gnome_keyring.so auto_start"
|
||||
state: present
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Ensure XFCE portal configuration directory exists
|
||||
tags: [packages, services, xfce, portal]
|
||||
ansible.builtin.file:
|
||||
path: /etc/xdg/xdg-desktop-portal
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Configure xdg-desktop-portal preferences for XFCE
|
||||
tags: [packages, services, xfce, portal]
|
||||
ansible.builtin.copy:
|
||||
dest: /etc/xdg/xdg-desktop-portal/xfce-portals.conf
|
||||
content: |
|
||||
[preferred]
|
||||
default=gtk
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: (desktop_environment | default('minimal')) == 'xfce'
|
||||
|
||||
- name: Remove minimal desktop user configuration after switching to XFCE
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ desktop_minimal_managed_paths | default([]) | difference(['.config/Thunar']) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove minimal portal preferences and session launchers after switching to XFCE
|
||||
tags: [packages, services, xfce, portal, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/xdg/xdg-desktop-portal/hyprland-portals.conf
|
||||
- /etc/xdg/xdg-desktop-portal/sway-portals.conf
|
||||
- /etc/emptty
|
||||
- /usr/local/bin/start-hyprland-session
|
||||
- /usr/local/bin/start-sway
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove XFCE user configuration after switching to another profile
|
||||
tags: [dotfiles, dotfiles:desktop, xfce]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ desktop_xfce_managed_paths | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) != 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
|
||||
- name: Remove inactive XFCE portal and LightDM profile configuration
|
||||
tags: [packages, services, xfce, portal, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /etc/xdg/xdg-desktop-portal/xfce-portals.conf
|
||||
- /etc/lightdm/lightdm.conf.d/50-xfce.conf
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) != 'xfce'
|
||||
- profile_desktop_xfce_selected_display_manager.stat.exists
|
||||
@@ -0,0 +1,7 @@
|
||||
[greeter]
|
||||
theme-name={{ xfce_theme_gtk }}
|
||||
icon-theme-name={{ xfce_theme_icons }}
|
||||
font-name={{ xfce_font_ui }}
|
||||
background=#050505
|
||||
clock-format=%a %d %b, %H:%M
|
||||
indicators=~host;~spacer;~clock;~spacer;~session;~power
|
||||
@@ -0,0 +1,3 @@
|
||||
[Seat:*]
|
||||
greeter-session=lightdm-gtk-greeter
|
||||
user-session=xfce
|
||||
15
ansible/roles/profile_desktop_xfce/templates/terminalrc.j2
Normal file
15
ansible/roles/profile_desktop_xfce/templates/terminalrc.j2
Normal file
@@ -0,0 +1,15 @@
|
||||
[Configuration]
|
||||
FontName={{ xfce_font_monospace }}
|
||||
MiscUseSystemFont=FALSE
|
||||
MiscMenubarDefault=FALSE
|
||||
MiscToolbarDefault=FALSE
|
||||
MiscBordersDefault=TRUE
|
||||
ScrollingLines=10000
|
||||
BackgroundMode=TERMINAL_BACKGROUND_SOLID
|
||||
ColorForeground=#d8d8d8
|
||||
ColorBackground=#050505
|
||||
ColorCursor=#d8d8d8
|
||||
ColorSelection=#d8d8d8
|
||||
ColorSelectionUseDefault=FALSE
|
||||
ColorSelectionBackground=#3a5f7f
|
||||
ColorPalette=#050505;#8f3f3f;#5f7f5f;#8f7f3f;#3a5f7f;#6f4f7f;#3f7f7f;#d8d8d8;#777777;#bf5f5f;#7f9f7f;#af9f5f;#5f7f9f;#8f6f9f;#5f9f9f;#ffffff
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-desktop" version="1.0">
|
||||
<property name="backdrop" type="empty">
|
||||
<property name="screen0" type="empty">
|
||||
<property name="monitor0" type="empty">
|
||||
<property name="workspace0" type="empty">
|
||||
<property name="color-style" type="int" value="0"/>
|
||||
<property name="image-style" type="int" value="5"/>
|
||||
<property name="last-image" type="string" value="{{ user_home }}/.local/share/backgrounds/xfce-dark.svg"/>
|
||||
</property>
|
||||
</property>
|
||||
</property>
|
||||
</property>
|
||||
<property name="desktop-icons" type="empty">
|
||||
<property name="style" type="int" value="0"/>
|
||||
</property>
|
||||
</channel>
|
||||
21
ansible/roles/profile_desktop_xfce/templates/xfwm4.xml.j2
Normal file
21
ansible/roles/profile_desktop_xfce/templates/xfwm4.xml.j2
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfwm4" version="1.0">
|
||||
<property name="general" type="empty">
|
||||
<property name="theme" type="string" value="{{ xfce_theme_wm }}"/>
|
||||
<property name="title_font" type="string" value="{{ xfce_font_ui }}"/>
|
||||
<property name="workspace_count" type="int" value="6"/>
|
||||
<property name="workspace_names" type="array">
|
||||
<value type="string" value="term"/>
|
||||
<value type="string" value="web"/>
|
||||
<value type="string" value="code"/>
|
||||
<value type="string" value="mail"/>
|
||||
<value type="string" value="ops"/>
|
||||
<value type="string" value="misc"/>
|
||||
</property>
|
||||
<property name="use_compositing" type="bool" value="false"/>
|
||||
<property name="click_to_focus" type="bool" value="true"/>
|
||||
<property name="focus_delay" type="int" value="250"/>
|
||||
<property name="raise_delay" type="int" value="250"/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xsettings" version="1.0">
|
||||
<property name="Net" type="empty">
|
||||
<property name="ThemeName" type="string" value="{{ xfce_theme_gtk }}"/>
|
||||
<property name="IconThemeName" type="string" value="{{ xfce_theme_icons }}"/>
|
||||
</property>
|
||||
<property name="Gtk" type="empty">
|
||||
<property name="FontName" type="string" value="{{ xfce_font_ui }}"/>
|
||||
<property name="MonospaceFontName" type="string" value="{{ xfce_font_monospace }}"/>
|
||||
<property name="CursorThemeName" type="string" value="Yaru"/>
|
||||
<property name="DecorationLayout" type="string" value="menu:minimize,maximize,close"/>
|
||||
</property>
|
||||
<property name="Xft" type="empty">
|
||||
<property name="Antialias" type="int" value="1"/>
|
||||
<property name="Hinting" type="int" value="1"/>
|
||||
<property name="HintStyle" type="string" value="hintslight"/>
|
||||
<property name="RGBA" type="string" value="rgb"/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -19,47 +19,70 @@
|
||||
tags: [services, packages, display-manager]
|
||||
ansible.builtin.set_fact:
|
||||
services_runit_desktop_display_manager_service: >-
|
||||
{{ 'sddm' if (desktop_environment | default('minimal')) == 'kde' else 'emptty' }}
|
||||
services_runit_inactive_display_manager_service: >-
|
||||
{{ 'emptty' if (desktop_environment | default('minimal')) == 'kde' else 'sddm' }}
|
||||
{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}
|
||||
services_runit_inactive_display_manager_services: >-
|
||||
{{
|
||||
desktop_display_manager_by_environment.values()
|
||||
| list
|
||||
| difference([desktop_display_manager_by_environment[desktop_environment | default('minimal')]])
|
||||
}}
|
||||
when: "'desktop' in group_names"
|
||||
|
||||
- name: Inspect desktop display manager services
|
||||
- name: Inspect selected desktop display manager service
|
||||
tags: [services, packages, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: "/var/service/{{ services_runit_desktop_display_manager_service }}"
|
||||
register: services_runit_selected_display_manager_link
|
||||
when: "'desktop' in group_names"
|
||||
|
||||
- name: Inspect inactive desktop display manager services
|
||||
tags: [services, packages, display-manager]
|
||||
ansible.builtin.stat:
|
||||
path: "/var/service/{{ item }}"
|
||||
loop:
|
||||
- "{{ services_runit_desktop_display_manager_service }}"
|
||||
- "{{ services_runit_inactive_display_manager_service }}"
|
||||
loop: "{{ services_runit_inactive_display_manager_services }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
register: services_runit_display_manager_links
|
||||
register: services_runit_inactive_display_manager_links
|
||||
when: "'desktop' in group_names"
|
||||
|
||||
- name: Record active inactive desktop display managers
|
||||
tags: [services, packages, display-manager]
|
||||
ansible.builtin.set_fact:
|
||||
services_runit_active_inactive_display_managers: >-
|
||||
{{
|
||||
services_runit_inactive_display_manager_links.results
|
||||
| selectattr('stat.exists')
|
||||
| map(attribute='item')
|
||||
| list
|
||||
}}
|
||||
when: "'desktop' in group_names"
|
||||
|
||||
- name: Report deferred desktop display manager switch
|
||||
tags: [services, packages, display-manager]
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ desktop_environment }} is configured, but {{ services_runit_inactive_display_manager_service }}
|
||||
is still active. Re-run from a TTY or SSH session with
|
||||
{{ desktop_environment }} is configured, but
|
||||
{{ services_runit_active_inactive_display_managers | join(', ') }} is still active.
|
||||
Re-run from a TTY or SSH session with
|
||||
-e desktop_allow_display_manager_switch=true to switch safely to
|
||||
{{ services_runit_desktop_display_manager_service }}.
|
||||
when:
|
||||
- "'desktop' in group_names"
|
||||
- services_runit_display_manager_links.results[1].stat.exists
|
||||
- not (services_runit_display_manager_links.results[0].stat.exists)
|
||||
- (services_runit_active_inactive_display_managers | length) > 0
|
||||
- not (desktop_allow_display_manager_switch | default(false))
|
||||
|
||||
- name: Disable inactive desktop display manager
|
||||
- name: Disable inactive desktop display managers
|
||||
tags: [services, packages, display-manager]
|
||||
ansible.builtin.file:
|
||||
path: "/var/service/{{ services_runit_inactive_display_manager_service }}"
|
||||
path: "/var/service/{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ services_runit_active_inactive_display_managers }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
register: services_runit_display_manager_disabled
|
||||
when:
|
||||
- "'desktop' in group_names"
|
||||
- services_runit_display_manager_links.results[1].stat.exists
|
||||
- not (services_runit_display_manager_links.results[0].stat.exists)
|
||||
- (services_runit_active_inactive_display_managers | length) > 0
|
||||
- desktop_allow_display_manager_switch | default(false)
|
||||
|
||||
- name: Enable selected desktop display manager
|
||||
@@ -71,22 +94,25 @@
|
||||
register: services_runit_display_manager_enabled
|
||||
when:
|
||||
- "'desktop' in group_names"
|
||||
- not (services_runit_display_manager_links.results[0].stat.exists)
|
||||
- not services_runit_selected_display_manager_link.stat.exists
|
||||
- >-
|
||||
not (services_runit_display_manager_links.results[1].stat.exists)
|
||||
(services_runit_active_inactive_display_managers | length) == 0
|
||||
or (desktop_allow_display_manager_switch | default(false))
|
||||
|
||||
- name: Remove inactive desktop display manager package after switching
|
||||
- name: Remove inactive desktop display manager packages after switching
|
||||
tags: [services, packages, display-manager]
|
||||
community.general.xbps:
|
||||
name: "{{ services_runit_inactive_display_manager_service }}"
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
update_cache: false
|
||||
loop: "{{ services_runit_inactive_display_manager_services }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- "'desktop' in group_names"
|
||||
- >-
|
||||
services_runit_display_manager_links.results[0].stat.exists
|
||||
services_runit_selected_display_manager_link.stat.exists
|
||||
or (services_runit_display_manager_enabled is defined and services_runit_display_manager_enabled is changed)
|
||||
- >-
|
||||
not (services_runit_display_manager_links.results[1].stat.exists)
|
||||
or (services_runit_display_manager_disabled is defined and services_runit_display_manager_disabled is changed)
|
||||
(services_runit_active_inactive_display_managers | length) == 0
|
||||
or (desktop_allow_display_manager_switch | default(false))
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
- profile_desktop_sway
|
||||
- profile_desktop_hyprland
|
||||
- profile_desktop_kde
|
||||
- profile_desktop_xfce
|
||||
- profile_desktop_host
|
||||
|
||||
- hosts: workstation_dev_fedora
|
||||
|
||||
Reference in New Issue
Block a user