diff --git a/AGENTS.md b/AGENTS.md index aea6316..cd758fa 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # AGENTS.md -Ansible-driven personal infrastructure repo for Fedora and Void desktops, Linux Mint and FreeBSD transition targets, WSL, and an Ubuntu server. +Ansible-driven personal infrastructure repo for Fedora and Void desktops, FreeBSD transition targets, WSL, and an Ubuntu server. ## Source Of Truth - Main orchestration: `ansible/site.yml` @@ -54,8 +54,8 @@ Ansible-driven personal infrastructure repo for Fedora and Void desktops, Linux - Use `no_log: true` for secret-bearing task inputs or outputs. ## Desktop Notes -- `desktop_profile` names independently selectable desktop groups such as `desktop_gnome`, `desktop_hyprland`, `desktop_sway`, `desktop_niri`, and `desktop_cinnamon`. Keep platform-specific session bootstrap in platform-specific roles. -- `desktop_environment` selects the mutually exclusive `minimal` (default), `gnome`, `xfce`, or `kde` desktop mode. `profile_desktop_common` owns shared Void bootstrap; the minimal mode uses `profile_desktop_sway`, `profile_desktop_hyprland`, and `profile_desktop_niri`, `profile_desktop_xfce` owns the reproducible XFCE setup, `profile_desktop_kde` owns KDE-specific defaults and cleanup, and `profile_desktop_gnome` copies shared desktop dotfiles for Fedora/GNOME without managing GNOME settings. `desktop_sessions_enabled` and `desktop_default_session` apply only to the minimal mode. +- `desktop_profile` names independently selectable desktop groups such as `desktop_gnome`, `desktop_hyprland`, `desktop_sway`, and `desktop_niri`. Keep platform-specific session bootstrap in platform-specific roles. +- `desktop_environment` is fixed to `minimal` for Void desktops. `profile_desktop_common` owns shared Void bootstrap; `profile_desktop_sway`, `profile_desktop_hyprland`, and `profile_desktop_niri` manage the enabled sessions, while `profile_desktop_gnome` copies shared desktop dotfiles for Fedora/GNOME without managing GNOME settings. `desktop_sessions_enabled` and `desktop_default_session` apply to the minimal mode. - Emacs packages and `.emacs.d` deploy are disabled by default via `emacs_enabled: false`; keep the dotfiles in the repo for reversible opt-in only. - NTFS filesystem support is provided by `ntfs-3g` in `ansible/inventory/group_vars/void.yml`. - Void user services are managed by `turnstile` and live under `dotfiles/desktop/.config/service/`. @@ -67,18 +67,18 @@ Ansible-driven personal infrastructure repo for Fedora and Void desktops, Linux - Void Niri lives in `profile_desktop_niri`, gated on `'niri' in desktop_sessions_enabled`; it installs the `emptty` `niri.desktop` session, the `/usr/local/bin/start-niri` launcher, and the xdg-desktop-portal config, mirroring `profile_desktop_sway`. - Fedora GNOME (`desktop_gnome`) assumes GNOME comes from the Fedora Workstation base install; Ansible deploys shared desktop dotfiles and git/GPG config for `ikaros` and `nymph`, not GNOME settings. - FreeBSD Niri (dormant; `platform_freebsd` currently has no hosts) must keep FreeBSD-specific package, rc, DBus, seat, portal, and launcher behavior in `profile_desktop_niri_freebsd` or FreeBSD platform vars. -- Do not switch or restart a display manager during a playbook run from an active graphical session. Changing among `emptty`, LightDM, and SDDM requires an explicit run from another TTY/SSH session with `desktop_allow_display_manager_switch=true`. Apply managed XFCE XML while logged out of XFCE so `xfconfd` cannot overwrite it from its in-memory state. +- Do not switch or restart the display manager during a playbook run from an active graphical session. - `nymph` is the Fedora/GNOME laptop target; keep GNOME settings unmanaged for now and add host-specific tuning only after real use. ## Void Package And Dotfile Bucket Rules `platform_void` is the reusable Void platform selection. The legacy `void` group remains a compatibility parent so existing `group_vars/void.yml` and `when: "'void' in group_names"` checks keep working during the transition. The Void desktop package lists in `ansible/inventory/group_vars/void.yml` are kept disjoint by role: - `void_packages_base` — system runtime only (init/services, kernel, audio core, networking, filesystem, firewall, hardware daemons, runit logging). -- `desktop_common_packages` — GUI infrastructure shared by all desktop modes. -- `desktop_minimal_packages` / `desktop_xfce_packages` / `desktop_kde_packages` — mutually exclusive applications, integration components, and display managers. Packages required by more than one exclusive mode may be repeated; cleanup subtracts the selected mode before removing inactive packages. +- `desktop_common_packages` — GUI infrastructure shared by the minimal desktop mode. +- `desktop_minimal_packages` — applications, integration components, and the `emptty` display manager. - `desktop_sway_packages` / `desktop_hyprland_packages` — binaries specific to each session. Cross-WM packages used by both (such as `dunst`, `rofi`, and `foot`) are intentionally duplicated in the two lists. `profile_packages` in the same file is cross-distro and is overridden by `group_vars/server.yml` and the workstation group vars; do not move desktop-specific Void entries through it. -The dotfile vars follow the same split: `desktop_common_dotfiles` carries mode-independent content, `desktop_minimal_dotfiles` carries Thunar, Udiskie, and minimal MIME defaults, and `desktop_xfce_dotfiles` carries XFCE state. KDE uses its own MIME defaults. `desktop_void_dotfiles` remains reserved for files that need the Void runtime. +The dotfile vars follow the same split: `desktop_common_dotfiles` carries mode-independent content and `desktop_minimal_dotfiles` carries Thunar, Udiskie, and MIME defaults. `desktop_void_dotfiles` remains reserved for files that need the Void runtime. ## Workstation Notes - `deadalus` is modeled as Windows + WSL; keep Linux dev automation on `deadalus-wsl`. diff --git a/README.md b/README.md index 60dd227..4a92fc3 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Matrice target: | -------------- | ---------- | -------------------- | --------------------------------- | | ikaros | Fedora | Personal workstation | GNOME | | nymph | Fedora | Desktop laptop | GNOME | -| void-reference | Void Linux | Lab/reference | Current preserved desktop profile | +| void-reference | Void Linux | Reference | Current preserved desktop profile | Regola operativa: @@ -98,31 +98,26 @@ Target operativi: - `ikaros`: Fedora Workstation + GNOME, desktop personale stabile/floating. - `nymph`: Fedora Workstation + GNOME, laptop desktop con dotfiles desktop condivisi e GNOME lasciato al default Fedora. -Il profilo Void desktop resta disponibile come modello riutilizzabile per host -futuri. `desktop_environment` continua a selezionare in modo esclusivo -`minimal`, `xfce` oppure `kde` per i desktop Void; Niri, GNOME e Cinnamon sono profili -desktop indipendenti via gruppi `desktop_niri`, `desktop_gnome` e `desktop_cinnamon`. +Il profilo Void desktop resta disponibile come modello riutilizzabile per host +futuri e usa esclusivamente `desktop_environment: minimal`. Niri e GNOME sono +profili desktop indipendenti via gruppi `desktop_niri` e `desktop_gnome`. Lo stato attuale del profilo desktop include, tra le altre cose: - dotfiles comuni e desktop - sessioni sway e Hyprland per eventuali host Void in modalita `minimal` -- KDE Plasma con applicazioni KDE curate e SDDM disponibile come alternativa esclusiva -- XFCE con pannello, keybinding, terminale, tema e workspace dichiarativi, LightDM e Thunderbird come client grafico principale - `emptty` con default host-specific in modalita `minimal`, con session file Wayland esposti per `sway` e `hyprland` - pacchetti Void Linux e servizi runit; le liste pacchetti Void desktop sono separate per criterio: - `void_packages_base` per il runtime sistema (init, kernel, audio core, networking, firewall, hw daemons) - - `desktop_common_packages` per l'infrastruttura condivisa dalle modalita - - `desktop_minimal_packages` per applicazioni GTK/XFCE e `emptty` - - `desktop_xfce_packages` per XFCE, LightDM e le relative integrazioni - - `desktop_kde_packages` per Plasma, SDDM e le applicazioni KDE equivalenti + - `desktop_common_packages` per l'infrastruttura condivisa + - `desktop_minimal_packages` per applicazioni GTK e `emptty` - `desktop_sway_packages` e `desktop_hyprland_packages` per i binari specifici di ciascuna sessione - `turnstile` per i servizi utente Void, incluso `ssh-agent` - `ssh-agent` con socket stabile condiviso tra shell e SSH in `~/.local/state/ssh-agent/socket` - Emacs e i relativi dotfile restano nel repo ma sono disabilitati di default tramite `emacs_enabled: false` - `tmux` con plugin gestiti da TPM al bootstrap del profilo desktop - Flatpak con remoto Flathub -- GNOME Keyring e `udiskie` nella modalita minimale; KWallet e integrazione UDisks di Plasma nella modalita KDE +- GNOME Keyring e `udiskie` nella modalita minimale - multi-monitor Void: sotto sway è gestito da `kanshi`; sotto Hyprland gli override monitor vivono in `host_hyprland_dotfiles` --- @@ -248,8 +243,8 @@ Questo approccio consente di: - mantenere configurazioni condivise - applicare override specifici per host - evitare duplicazioni -- riutilizzare il profilo Void corrente su un host futuro assegnandolo a - `platform_void + graphical_desktop + role_lab + desktop_hyprland` +- riutilizzare il profilo Void corrente su un host futuro assegnandolo a + `platform_void + graphical_desktop + desktop_hyprland` --- @@ -261,7 +256,6 @@ I principali ruoli attualmente presenti sono: | ------------------------- | ----------------------------------- | | base | configurazione base comune | | packages_void | installazione pacchetti su Void | -| packages_mint | installazione pacchetti su Linux Mint via APT | | packages_freebsd | installazione pacchetti su FreeBSD via pkg | | packages_ubuntu | installazione pacchetti su Ubuntu | | packages_fedora | installazione pacchetti su Fedora | @@ -274,10 +268,8 @@ I principali ruoli attualmente presenti sono: | profile_desktop_hyprland | sessione desktop Hyprland (Wayland) | | profile_desktop_niri | sessione desktop Niri su Void (Wayland) | | profile_desktop_niri_freebsd | adattamenti FreeBSD per Niri | -| profile_desktop_cinnamon | impostazioni Cinnamon circoscritte | | profile_desktop_host | override desktop specifici per host | | profile_personal_workstation | layer stabile per workstation personale | -| profile_lab | layer sperimentale/lab | | profile_workstation_dev_common | configurazione dev workstation condivisa | | profile_workstation_gnome | configurazione host workstation GNOME | | profile_workstation_dev_wsl | configurazione WSL Ubuntu per sviluppo | @@ -294,12 +286,8 @@ Il playbook `ansible/site.yml` e attualmente composto da blocchi per asse: ```text all -> dotfiles_common platform_void -> packages_void + services_runit -platform_void & graphical_desktop -> profile_desktop_common + profile_desktop_sway + profile_desktop_hyprland + profile_desktop_niri + profile_desktop_kde + profile_desktop_xfce + profile_desktop_host -platform_mint -> packages_mint + services_systemd -platform_mint & role_personal_workstation -> profile_personal_workstation -platform_mint & desktop_cinnamon -> profile_desktop_cinnamon -platform_freebsd -> packages_freebsd + services_freebsd -platform_freebsd & role_lab -> profile_lab +platform_void & graphical_desktop -> profile_desktop_common + profile_desktop_sway + profile_desktop_hyprland + profile_desktop_niri + profile_desktop_host +platform_freebsd -> packages_freebsd + services_freebsd platform_freebsd & desktop_niri -> profile_desktop_niri_freebsd platform_fedora -> packages_fedora + services_systemd platform_fedora & role_personal_workstation -> profile_personal_workstation @@ -388,13 +376,13 @@ Allo stato attuale questo comando: - distribuisce i dotfiles comuni a tutti gli host - per `platform_void` applica pacchetti Void e servizi runit - per `platform_void + graphical_desktop` applica bootstrap desktop condiviso, sessioni sway/Hyprland/Niri e override specifici per host -- per `platform_mint`, `platform_freebsd`, `workstation_dev_fedora` e `workstation_host_linux` non applica nulla finche quei gruppi restano senza host +- per `platform_freebsd`, `workstation_dev_fedora` e `workstation_host_linux` non applica nulla finche quei gruppi restano senza host - per `platform_fedora` applica pacchetti Fedora e servizi systemd a `ikaros` e `nymph` - per `platform_fedora & role_personal_workstation` applica il layer personale a `ikaros` - per `platform_fedora & desktop_gnome` applica il profilo GNOME a `ikaros` e `nymph` - per `workstation_dev_wsl` applica pacchetti Ubuntu, servizi systemd, profilo dev comune e tweak WSL dedicati a `deadalus-wsl` - per gli host `ubuntu_server` applica pacchetti Ubuntu, servizi systemd, profilo server, UFW, dotfiles e template dedicati -- non riavvia automaticamente il display manager; i passaggi tra `emptty`, LightDM e SDDM vanno applicati da SSH o da una TTY separata +- non riavvia automaticamente il display manager - carica `secrets/vault.yml` solo se presente - carica `secrets/vault.local.yml` solo se presente, dopo `vault.yml`, cosi gli override locali hanno precedenza @@ -436,14 +424,6 @@ Per vedere l'elenco reale aggiornato dei tag disponibili: ansible-playbook ansible/site.yml --list-tags ``` -Per attivare XFCE o KDE su un host, impostare rispettivamente `desktop_environment: xfce` o `desktop_environment: kde` nei relativi `host_vars` ed eseguire prima un dry run. Il primo play configura il profilo ma, se un altro display manager e ancora attivo, rinvia il cambio. Da una TTY o sessione SSH separata, con la sessione grafica chiusa, applicare quindi il passaggio esplicito: - -```bash -ansible-playbook ansible/site.yml --limit -e desktop_allow_display_manager_switch=true -``` - -La stessa procedura vale per ogni passaggio tra `minimal`, `xfce` e `kde`. Gli XML XFCE sono autorevoli: applicare i relativi aggiornamenti mentre XFCE e disconnesso evita che `xfconfd` ripristini lo stato in memoria. - Allo stato attuale `ansible/site.yml` espone questi tag: | Tag | Scopo | Ambito principale | @@ -456,10 +436,7 @@ Allo stato attuale `ansible/site.yml` espone questi tag: | `dotfiles:server` | dotfiles dedicati al profilo server | server | | `dotfiles:workstation` | dotfiles dedicati alle workstation | personal workstation, WSL, workstation Linux future | | `emptty` | gestione display manager `emptty` | desktop Void | -| `display-manager` | selezione protetta tra `emptty`, LightDM e SDDM | desktop Void | -| `kde` | profilo KDE Plasma e relativa pulizia | desktop Void | -| `xfce` | profilo XFCE, LightDM e relativa pulizia | desktop Void | -| `cinnamon` | impostazioni Cinnamon circoscritte | Linux Mint desktop | +| `display-manager` | gestione del display manager `emptty` | desktop Void | | `gnome` | configurazione host GNOME | Fedora/GNOME desktop, workstation host Linux future | | `sway` | sessione/configurazione sway / SwayFX (Wayland) | desktop Void | | `hyprland` | sessione/configurazione Hyprland (Wayland) | desktop Void | @@ -498,9 +475,8 @@ Per aggiungere un nuovo host Void che riusa il profilo desktop preservato: 1. aggiungere l'host a `platform_void`; 2. aggiungerlo a `graphical_desktop`; -3. scegliere il ruolo, per esempio `role_lab`; -4. scegliere il desktop, per esempio `desktop_hyprland`; -5. lasciare eventuali dettagli hardware in `host_vars/.yml`. +3. scegliere il desktop, per esempio `desktop_hyprland`; +4. lasciare eventuali dettagli hardware in `host_vars/.yml`. I gruppi legacy `void` e `desktop` sono parent di compatibilita, quindi un host in `platform_void` e `graphical_desktop` continua a ricevere anche le variabili diff --git a/ansible/inventory/examples/platform-test-hosts.yml b/ansible/inventory/examples/platform-test-hosts.yml index fdb61df..73f8dd6 100644 --- a/ansible/inventory/examples/platform-test-hosts.yml +++ b/ansible/inventory/examples/platform-test-hosts.yml @@ -2,11 +2,6 @@ # Optional inventory overlay for VM tests. It is not loaded by ansible.cfg. all: children: - platform_mint: - hosts: - minttest: - ansible_connection: local - platform_freebsd: hosts: freebsdtest: @@ -14,21 +9,8 @@ all: graphical_desktop: hosts: - minttest: freebsdtest: - role_personal_workstation: - hosts: - minttest: - - role_lab: - hosts: - freebsdtest: - - desktop_cinnamon: - hosts: - minttest: - - desktop_hyprland: + desktop_niri: hosts: freebsdtest: diff --git a/ansible/inventory/group_vars/desktop.yml b/ansible/inventory/group_vars/desktop.yml index 2596013..d68aace 100644 --- a/ansible/inventory/group_vars/desktop.yml +++ b/ansible/inventory/group_vars/desktop.yml @@ -1,11 +1,5 @@ --- desktop_environment: minimal -desktop_allow_display_manager_switch: false - -desktop_display_manager_by_environment: - minimal: emptty - xfce: lightdm - kde: sddm desktop_sessions_enabled: - sway @@ -261,30 +255,6 @@ desktop_niri_dotfiles: dest: .config/niri/ 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 diff --git a/ansible/inventory/group_vars/desktop_cinnamon.yml b/ansible/inventory/group_vars/desktop_cinnamon.yml deleted file mode 100644 index 7e2ac7b..0000000 --- a/ansible/inventory/group_vars/desktop_cinnamon.yml +++ /dev/null @@ -1,29 +0,0 @@ ---- -desktop_profile: cinnamon -desktop_default_session: cinnamon - -cinnamon_theme_gtk: Mint-Y-Dark-Aqua -cinnamon_theme_icons: Mint-Y-Aqua -cinnamon_font_ui: Sans 10 -cinnamon_font_monospace: Monospace 10 - -# WM-agnostic desktop dotfiles from desktop_common_dotfiles that do NOT apply to -# Cinnamon: the autostart entry is the (removed) Protonmail mail bridge, and the -# GTK theme script conflicts with Cinnamon's own dconf-managed theming. -cinnamon_desktop_dotfiles_exclude: - - XDG autostart entries - - GTK theme setup script - -cinnamon_dconf_settings: - - key: /org/cinnamon/desktop/interface/gtk-theme - value: "'{{ cinnamon_theme_gtk }}'" - - key: /org/cinnamon/desktop/interface/icon-theme - value: "'{{ cinnamon_theme_icons }}'" - - key: /org/cinnamon/desktop/interface/font-name - value: "'{{ cinnamon_font_ui }}'" - - key: /org/cinnamon/desktop/interface/monospace-font-name - value: "'{{ cinnamon_font_monospace }}'" - - key: /org/cinnamon/desktop/interface/clock-use-24h - value: "true" - - key: /org/cinnamon/desktop/wm/preferences/button-layout - value: "'menu:minimize,maximize,close'" diff --git a/ansible/inventory/group_vars/platform_freebsd.yml b/ansible/inventory/group_vars/platform_freebsd.yml index bb88cfd..e53f75d 100644 --- a/ansible/inventory/group_vars/platform_freebsd.yml +++ b/ansible/inventory/group_vars/platform_freebsd.yml @@ -102,13 +102,6 @@ freebsd_niri_packages: - wl-clipboard - xdg-desktop-portal-gtk -freebsd_lab_packages: - - lldb - - llvm - - podman - - qemu - - smartmontools - freebsd_rc_conf: - name: dbus_enable value: "YES" diff --git a/ansible/inventory/group_vars/platform_mint.yml b/ansible/inventory/group_vars/platform_mint.yml deleted file mode 100644 index 6bd0f1f..0000000 --- a/ansible/inventory/group_vars/platform_mint.yml +++ /dev/null @@ -1,107 +0,0 @@ ---- -platform_profile: mint -platform_family: debian -platform_package_manager: apt -platform_service_manager: systemd - -# syncthing runs per-user via the packaged system unit template -# (Debian/Mint ship syncthing@.service, parametrised by username). -enabled_services: - - "syncthing@{{ username }}.service" - -mint_manage_flatpak: true -mint_flatpak_remote_name: flathub -mint_flatpak_remote_url: https://dl.flathub.org/repo/flathub.flatpakrepo - -mint_packages_base: - - ca-certificates - - curl - - flatpak - - gpg - - htop - - make - - python3-pip - - ripgrep - - rsync - - shellcheck - -mint_development_packages: - - build-essential - - clang - - clang-format - - clang-tools - - cmake - - gdb - - libasan8 - - libubsan1 - - golang - - nodejs - - npm - - pkg-config - - python3-venv - - valgrind - -mint_desktop_common_packages: - - croc - - dconf-cli - - deja-dup - - firefox - - fonts-liberation - - fonts-noto-color-emoji - - git-delta - - gnome-keyring - - libsecret-tools - - mpv - - pinentry-gnome3 - - pinentry-gtk2 - - rclone - - syncthing - - thunderbird - - tmux - - xdg-user-dirs - - yt-dlp - -mint_emacs_packages: - - autoconf - - automake - - emacs - - hunspell - - hunspell-it - - libfreetype-dev - - libpoppler-glib-dev - - libpoppler-private-dev - - libtool-bin - - libvterm-dev - - libx11-dev - -mint_cinnamon_packages: - - cinnamon - - cinnamon-control-center - - cinnamon-screensaver - - lightdm - - slick-greeter - - xdg-desktop-portal - - xdg-desktop-portal-gtk - -mint_personal_workstation_packages: - - libreoffice - - meld - - pdfarranger - - vim - -mint_flatpak_packages: - - ch.protonmail.protonmail-bridge - - com.calibre_ebook.calibre - - com.spotify.Client - - org.telegram.desktop - -# Nerd Fonts referenced by the desktop configs deployed on Mint. Debian has no -# equivalent of Void's nerd-fonts-ttf package, so they are fetched from the -# upstream ryanoasis/nerd-fonts release. -mint_nerd_fonts_version: v3.3.0 -mint_nerd_fonts: - - Hack - - JetBrainsMono - - Iosevka - - UbuntuSans - - NerdFontsSymbolsOnly diff --git a/ansible/inventory/group_vars/role_lab.yml b/ansible/inventory/group_vars/role_lab.yml deleted file mode 100644 index c848bf4..0000000 --- a/ansible/inventory/group_vars/role_lab.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -machine_role: lab -role_profile: lab -role_stability: experimental -experimental_profile: true - -lab_workspace_directories: - - path: "{{ user_home }}/Lab" - mode: "0755" - - path: "{{ user_home }}/Scratch" - mode: "0755" diff --git a/ansible/inventory/group_vars/void.yml b/ansible/inventory/group_vars/void.yml index b8c9672..ba7a4f0 100644 --- a/ansible/inventory/group_vars/void.yml +++ b/ansible/inventory/group_vars/void.yml @@ -141,45 +141,6 @@ desktop_minimal_packages: - xfce-polkit - xournalpp -desktop_kde_packages: - - ark - - dolphin - - ffmpegthumbs - - gwenview - - kate - - kde-plasma - - kleopatra - - konsole - - okular - - polkit-kde-agent - - print-manager - - sddm - - 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 @@ -238,12 +199,6 @@ desktop_niri_packages: - xdg-desktop-portal-gtk - xorg-server-xwayland -void_lab_packages: - - llvm - - podman - - qemu - - smartmontools - profile_packages: - bash-language-server - bluez diff --git a/ansible/inventory/hosts.yml b/ansible/inventory/hosts.yml index 1b9e8b1..6f6faf8 100644 --- a/ansible/inventory/hosts.yml +++ b/ansible/inventory/hosts.yml @@ -11,9 +11,6 @@ all: nymph: ansible_connection: local - platform_mint: - hosts: {} - platform_freebsd: hosts: {} @@ -41,9 +38,6 @@ all: ikaros: ansible_connection: local - role_lab: - hosts: {} - desktop_sway: hosts: {} @@ -60,9 +54,6 @@ all: nymph: ansible_connection: local - desktop_cinnamon: - hosts: {} - ubuntu: children: workstation_dev_wsl: diff --git a/ansible/roles/packages_freebsd/tasks/main.yml b/ansible/roles/packages_freebsd/tasks/main.yml index 23bde2d..feb2637 100644 --- a/ansible/roles/packages_freebsd/tasks/main.yml +++ b/ansible/roles/packages_freebsd/tasks/main.yml @@ -22,11 +22,6 @@ if 'desktop_niri' in group_names else [] ) - + ( - (freebsd_lab_packages | default([])) - if 'role_lab' in group_names - else [] - ) + (host_packages | default([])) ) | unique diff --git a/ansible/roles/packages_mint/tasks/main.yml b/ansible/roles/packages_mint/tasks/main.yml deleted file mode 100644 index df40d33..0000000 --- a/ansible/roles/packages_mint/tasks/main.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -- name: Refresh apt package cache on Linux Mint - tags: [packages] - ansible.builtin.apt: - update_cache: true - cache_valid_time: 3600 - -- name: Install packages on Linux Mint - tags: [packages] - ansible.builtin.apt: - name: >- - {{ - ( - (common_packages | default([])) - + (mint_packages_base | default([])) - + (mint_development_packages | default([])) - + ( - (mint_desktop_common_packages | default([])) - if 'graphical_desktop' in group_names - else [] - ) - + ( - (mint_emacs_packages | default([])) - if ( - 'graphical_desktop' in group_names - and (emacs_enabled | default(false) | bool) - ) - else [] - ) - + ( - (mint_cinnamon_packages | default([])) - if 'desktop_cinnamon' in group_names - else [] - ) - + ( - (mint_personal_workstation_packages | default([])) - if 'role_personal_workstation' in group_names - else [] - ) - + (host_packages | default([])) - ) - | unique - }} - state: present - -- name: Ensure Flathub remote is configured on Linux Mint - tags: [packages] - community.general.flatpak_remote: - name: "{{ mint_flatpak_remote_name | default('flathub') }}" - state: present - flatpakrepo_url: "{{ mint_flatpak_remote_url | default('https://dl.flathub.org/repo/flathub.flatpakrepo') }}" - when: - - mint_manage_flatpak | default(true) - - >- - ( - (mint_flatpak_packages | default([])) - + (personal_workstation_flatpak_packages | default([])) - ) | length > 0 - -- name: Install Linux Mint Flatpak applications - tags: [packages] - community.general.flatpak: - name: >- - {{ - ( - (mint_flatpak_packages | default([])) - + ( - (personal_workstation_flatpak_packages | default([])) - if 'role_personal_workstation' in group_names - else [] - ) - ) - | unique - }} - state: present - remote: "{{ mint_flatpak_remote_name | default('flathub') }}" - method: system - when: - - mint_manage_flatpak | default(true) - - >- - ( - (mint_flatpak_packages | default([])) - + ( - (personal_workstation_flatpak_packages | default([])) - if 'role_personal_workstation' in group_names - else [] - ) - ) | length > 0 diff --git a/ansible/roles/packages_void/tasks/main.yml b/ansible/roles/packages_void/tasks/main.yml index 75829ee..8ada641 100644 --- a/ansible/roles/packages_void/tasks/main.yml +++ b/ansible/roles/packages_void/tasks/main.yml @@ -51,15 +51,7 @@ ansible.builtin.set_fact: packages_void_selected_desktop_packages: >- {{ - ( - (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_minimal_packages | default([])) + ( (desktop_sway_packages | default([])) if ( @@ -97,12 +89,10 @@ + (desktop_sway_packages | default([])) + (desktop_hyprland_packages | default([])) + (desktop_niri_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) + | difference(['emptty']) }} - name: Install packages on Void Linux @@ -118,7 +108,6 @@ + (desktop_common_packages | default([])) + ((desktop_emacs_packages | default([])) if (emacs_enabled | default(false) | bool) else []) + (packages_void_selected_desktop_packages | default([])) - + ((void_lab_packages | default([])) if 'role_lab' in group_names else []) + (host_packages | default([])) ) | unique @@ -129,7 +118,7 @@ - name: Check whether the selected display manager is active tags: [packages, display-manager] ansible.builtin.stat: - path: "/var/service/{{ desktop_display_manager_by_environment[desktop_environment | default('minimal')] }}" + path: /var/service/emptty register: packages_void_selected_display_manager - name: Remove packages managed by the inactive desktop environment @@ -140,9 +129,7 @@ update_cache: 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)) + - packages_void_selected_display_manager.stat.exists - name: Remove host-absent packages on Void Linux tags: [packages] diff --git a/ansible/roles/profile_desktop_cinnamon/tasks/main.yml b/ansible/roles/profile_desktop_cinnamon/tasks/main.yml deleted file mode 100644 index 5b98bef..0000000 --- a/ansible/roles/profile_desktop_cinnamon/tasks/main.yml +++ /dev/null @@ -1,231 +0,0 @@ ---- -- name: Ensure Cinnamon user config directories exist - tags: [dotfiles, dotfiles:desktop, cinnamon] - ansible.builtin.file: - path: "{{ item }}" - state: directory - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0755" - loop: - - "{{ user_home }}/.config" - - "{{ user_home }}/.local" - - "{{ user_home }}/.local/share" - - "{{ user_home }}/.local/bin" - - "{{ user_home }}/.local/state" - - "{{ user_home }}/.bashrc.d" - - "{{ user_home }}/.tmux" - - "{{ user_home }}/.tmux/bin" - - "{{ user_home }}/.tmux/plugins" - -- name: Apply Cinnamon dconf settings - tags: [cinnamon] - community.general.dconf: - key: "{{ item.key }}" - value: "{{ item.value }}" - state: present - become: true - become_user: "{{ username }}" - environment: - HOME: "{{ user_home }}" - loop: "{{ cinnamon_dconf_settings | default([]) }}" - loop_control: - label: "{{ item.key }}" - -- name: Ensure Emacs config directory exists - tags: [dotfiles, dotfiles:desktop, emacs] - ansible.builtin.file: - path: "{{ user_home }}/.emacs.d" - state: directory - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0755" - when: emacs_enabled | default(false) | bool - -- name: Ensure GnuPG directory exists - tags: [dotfiles, dotfiles:desktop, git] - ansible.builtin.file: - path: "{{ user_home }}/.gnupg" - state: directory - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0700" - -- name: Ensure private user directories exist - tags: [dotfiles, dotfiles:desktop] - ansible.builtin.file: - path: "{{ item }}" - state: directory - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0700" - loop: - - "{{ user_home }}/.ssh" - - "{{ user_home }}/.local/state/ssh/sockets" - -- name: Copy Emacs desktop dotfiles - tags: [dotfiles, dotfiles:desktop, emacs] - 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_emacs_dotfiles | default([]) }}" - when: emacs_enabled | default(false) | bool - loop_control: - label: "{{ item.dest }}" - -- name: Copy WM-agnostic common desktop dotfiles - tags: [dotfiles, dotfiles:desktop] - 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_common_dotfiles - | default([]) - | rejectattr('name', 'in', cinnamon_desktop_dotfiles_exclude | default([])) - | list - }} - loop_control: - label: "{{ item.dest }}" - -- name: Copy gpg-agent configuration - tags: [dotfiles, dotfiles:desktop, git] - ansible.builtin.copy: - src: "{{ playbook_dir }}/../dotfiles/desktop/.gnupg/gpg-agent.conf" - dest: "{{ user_home }}/.gnupg/gpg-agent.conf" - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0600" - -- name: Render git configuration with private values - tags: [dotfiles, dotfiles:desktop, git] - ansible.builtin.template: - src: desktop/.gitconfig.j2 - dest: "{{ user_home }}/.gitconfig" - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0644" - -- name: Bootstrap tmux plugin manager checkout - tags: [dotfiles, dotfiles:desktop, tmux] - ansible.builtin.git: - repo: https://github.com/tmux-plugins/tpm - dest: "{{ user_home }}/.tmux/plugins/tpm" - version: master - update: true - become_user: "{{ username }}" - environment: - HOME: "{{ user_home }}" - -- name: Install tmux plugins through TPM - tags: [dotfiles, dotfiles:desktop, tmux] - ansible.builtin.shell: | - set -e - tmux start-server \; set-environment -g TMUX_PLUGIN_MANAGER_PATH "{{ user_home }}/.tmux/plugins/" - "{{ user_home }}/.tmux/plugins/tpm/bin/install_plugins" - become_user: "{{ username }}" - environment: - HOME: "{{ user_home }}" - register: cinnamon_tmux_plugin_install - changed_when: >- - (cinnamon_tmux_plugin_install.stdout | default('')) is search('download success') or - (cinnamon_tmux_plugin_install.stderr | default('')) is search('download success') - -- name: Install desktop npm packages - tags: [packages, npm] - community.general.npm: - name: "{{ item.name }}" - global: true - state: "{{ item.state | default('present') }}" - become: true - loop: "{{ desktop_npm_packages | default([]) }}" - when: desktop_npm_packages | length > 0 - loop_control: - label: "{{ item.name }}" - -- name: Ensure /usr/src is writable for source builds - tags: [packages] - ansible.builtin.file: - path: /usr/src - state: directory - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0755" - -- name: Build and install the gf debugger frontend from source - tags: [packages] - ansible.builtin.include_tasks: - file: "{{ role_path }}/../profile_desktop_common/tasks/source_tool.yml" - apply: - tags: [packages] - loop: >- - {{ - desktop_source_tools - | default([]) - | selectattr('name', 'equalto', 'gf') - | list - }} - loop_control: - loop_var: source_tool - label: "{{ source_tool.name }}" - -- name: Ensure Nerd Fonts base directory exists - tags: [packages, fonts] - ansible.builtin.file: - path: /usr/local/share/fonts/nerd-fonts - state: directory - owner: root - group: root - mode: "0755" - become: true - -- name: Ensure per-font Nerd Fonts directories exist - tags: [packages, fonts] - ansible.builtin.file: - path: "/usr/local/share/fonts/nerd-fonts/{{ item }}" - state: directory - owner: root - group: root - mode: "0755" - become: true - loop: "{{ mint_nerd_fonts | default([]) }}" - -- name: Download Nerd Font archives - tags: [packages, fonts] - ansible.builtin.get_url: - url: "https://github.com/ryanoasis/nerd-fonts/releases/download/{{ mint_nerd_fonts_version }}/{{ item }}.zip" - dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip" - owner: root - group: root - mode: "0644" - become: true - loop: "{{ mint_nerd_fonts | default([]) }}" - loop_control: - label: "{{ item }}" - -- name: Extract Nerd Font archives - tags: [packages, fonts] - ansible.builtin.unarchive: - src: "/usr/local/share/fonts/nerd-fonts/{{ item }}.zip" - dest: "/usr/local/share/fonts/nerd-fonts/{{ item }}" - remote_src: true - owner: root - group: root - become: true - loop: "{{ mint_nerd_fonts | default([]) }}" - loop_control: - label: "{{ item }}" - register: cinnamon_nerd_fonts_extract - -- name: Refresh system font cache after installing Nerd Fonts - tags: [packages, fonts] - ansible.builtin.command: fc-cache -f - become: true - changed_when: false - when: cinnamon_nerd_fonts_extract is changed diff --git a/ansible/roles/profile_desktop_common/tasks/main.yml b/ansible/roles/profile_desktop_common/tasks/main.yml index 98d4b8f..9043c60 100644 --- a/ansible/roles/profile_desktop_common/tasks/main.yml +++ b/ansible/roles/profile_desktop_common/tasks/main.yml @@ -3,18 +3,12 @@ tags: [always] ansible.builtin.assert: that: - - (desktop_environment | default('minimal')) in ['minimal', 'xfce', 'kde'] - - >- - (desktop_environment | default('minimal')) != 'minimal' - or (desktop_sessions_enabled | default([]) | length > 0) - - >- - (desktop_environment | default('minimal')) != 'minimal' - or (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland', 'niri']) | length == 0) - - >- - (desktop_environment | default('minimal')) != 'minimal' - or desktop_default_session in (desktop_sessions_enabled | default([])) + - (desktop_environment | default('minimal')) == 'minimal' + - (desktop_sessions_enabled | default([]) | length > 0) + - (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland', 'niri']) | length == 0) + - desktop_default_session in (desktop_sessions_enabled | default([])) fail_msg: >- - desktop_environment must be minimal, xfce, or kde. Minimal desktops also require + desktop_environment must be minimal. Minimal desktops also require desktop_default_session to be included in desktop_sessions_enabled. - name: Configure elogind to suspend on lid close @@ -466,14 +460,7 @@ owner: root group: root mode: "0644" - when: (desktop_environment | default('minimal')) in ['minimal', 'xfce'] - -- name: Remove minimal Qt theme override for KDE - tags: [theme] - ansible.builtin.file: - path: /etc/profile.d/10-qt-theme.sh - state: absent - when: (desktop_environment | default('minimal')) == 'kde' + when: (desktop_environment | default('minimal')) == 'minimal' - name: Ensure flathub remote is configured tags: [packages] diff --git a/ansible/roles/profile_desktop_kde/tasks/main.yml b/ansible/roles/profile_desktop_kde/tasks/main.yml deleted file mode 100644 index f917ca8..0000000 --- a/ansible/roles/profile_desktop_kde/tasks/main.yml +++ /dev/null @@ -1,60 +0,0 @@ ---- -- name: Check whether SDDM is the active runit display manager - tags: [packages, services, kde, display-manager] - ansible.builtin.stat: - path: /var/service/sddm - register: profile_desktop_kde_sddm_service - when: (desktop_environment | default('minimal')) == 'kde' - -- name: Copy KDE MIME application defaults - tags: [dotfiles, dotfiles:desktop, kde] - ansible.builtin.copy: - src: "{{ playbook_dir }}/../dotfiles/desktop/.config/mimeapps.kde.list" - dest: "{{ user_home }}/.config/mimeapps.list" - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "0644" - when: (desktop_environment | default('minimal')) == 'kde' - -- name: Remove minimal desktop user configuration managed by Ansible - tags: [dotfiles, dotfiles:desktop, kde] - ansible.builtin.file: - path: "{{ user_home }}/{{ item }}" - state: absent - loop: >- - {{ - (desktop_minimal_managed_paths | default([])) - + (desktop_xfce_managed_paths | default([])) - }} - loop_control: - label: "{{ item }}" - when: - - (desktop_environment | default('minimal')) == 'kde' - - profile_desktop_kde_sddm_service.stat.exists - -- name: Remove minimal desktop portal preferences - tags: [packages, services, kde, portal] - 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/xdg/xdg-desktop-portal/xfce-portals.conf - when: - - (desktop_environment | default('minimal')) == 'kde' - - profile_desktop_kde_sddm_service.stat.exists - -- name: Remove inactive emptty and minimal session launchers - tags: [packages, services, kde, display-manager] - ansible.builtin.file: - path: "{{ item }}" - 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: - - (desktop_environment | default('minimal')) == 'kde' - - profile_desktop_kde_sddm_service.stat.exists diff --git a/ansible/roles/profile_desktop_xfce/tasks/main.yml b/ansible/roles/profile_desktop_xfce/tasks/main.yml deleted file mode 100644 index e596bd7..0000000 --- a/ansible/roles/profile_desktop_xfce/tasks/main.yml +++ /dev/null @@ -1,223 +0,0 @@ ---- -- 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 diff --git a/ansible/roles/profile_desktop_xfce/templates/lightdm-gtk-greeter.conf.j2 b/ansible/roles/profile_desktop_xfce/templates/lightdm-gtk-greeter.conf.j2 deleted file mode 100644 index 185e49f..0000000 --- a/ansible/roles/profile_desktop_xfce/templates/lightdm-gtk-greeter.conf.j2 +++ /dev/null @@ -1,7 +0,0 @@ -[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 diff --git a/ansible/roles/profile_desktop_xfce/templates/lightdm-xfce.conf.j2 b/ansible/roles/profile_desktop_xfce/templates/lightdm-xfce.conf.j2 deleted file mode 100644 index 2bc5b61..0000000 --- a/ansible/roles/profile_desktop_xfce/templates/lightdm-xfce.conf.j2 +++ /dev/null @@ -1,3 +0,0 @@ -[Seat:*] -greeter-session=lightdm-gtk-greeter -user-session=xfce diff --git a/ansible/roles/profile_desktop_xfce/templates/terminalrc.j2 b/ansible/roles/profile_desktop_xfce/templates/terminalrc.j2 deleted file mode 100644 index 6c1a9d2..0000000 --- a/ansible/roles/profile_desktop_xfce/templates/terminalrc.j2 +++ /dev/null @@ -1,15 +0,0 @@ -[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 diff --git a/ansible/roles/profile_desktop_xfce/templates/xfce4-desktop.xml.j2 b/ansible/roles/profile_desktop_xfce/templates/xfce4-desktop.xml.j2 deleted file mode 100644 index ce71ee9..0000000 --- a/ansible/roles/profile_desktop_xfce/templates/xfce4-desktop.xml.j2 +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/ansible/roles/profile_desktop_xfce/templates/xfwm4.xml.j2 b/ansible/roles/profile_desktop_xfce/templates/xfwm4.xml.j2 deleted file mode 100644 index 5dec9cf..0000000 --- a/ansible/roles/profile_desktop_xfce/templates/xfwm4.xml.j2 +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/ansible/roles/profile_desktop_xfce/templates/xsettings.xml.j2 b/ansible/roles/profile_desktop_xfce/templates/xsettings.xml.j2 deleted file mode 100644 index 269aa4b..0000000 --- a/ansible/roles/profile_desktop_xfce/templates/xsettings.xml.j2 +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/ansible/roles/profile_lab/tasks/main.yml b/ansible/roles/profile_lab/tasks/main.yml deleted file mode 100644 index 074f3d3..0000000 --- a/ansible/roles/profile_lab/tasks/main.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: Ensure lab workspace directories exist - tags: [dotfiles] - ansible.builtin.file: - path: "{{ item.path }}" - state: directory - owner: "{{ username }}" - group: "{{ user_group }}" - mode: "{{ item.mode }}" - loop: "{{ lab_workspace_directories | default([]) }}" - loop_control: - label: "{{ item.path }}" diff --git a/ansible/roles/services_runit/tasks/main.yml b/ansible/roles/services_runit/tasks/main.yml index 3a4ed6f..bf2bf34 100644 --- a/ansible/roles/services_runit/tasks/main.yml +++ b/ansible/roles/services_runit/tasks/main.yml @@ -15,104 +15,10 @@ state: link loop: "{{ host_enabled_services | default([]) }}" -- name: Define desktop display manager services - tags: [services, packages, display-manager] - ansible.builtin.set_fact: - services_runit_desktop_display_manager_service: >- - {{ 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 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_inactive_display_manager_services }}" - loop_control: - label: "{{ item }}" - 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_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_active_inactive_display_managers | length) > 0 - - not (desktop_allow_display_manager_switch | default(false)) - -- name: Disable inactive desktop display managers +- name: Enable emptty display manager for Void desktops tags: [services, packages, display-manager] ansible.builtin.file: - 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_active_inactive_display_managers | length) > 0 - - desktop_allow_display_manager_switch | default(false) - -- name: Enable selected desktop display manager - tags: [services, packages, display-manager] - ansible.builtin.file: - src: "/etc/sv/{{ services_runit_desktop_display_manager_service }}" - dest: "/var/service/{{ services_runit_desktop_display_manager_service }}" + src: /etc/sv/emptty + dest: /var/service/emptty state: link - register: services_runit_display_manager_enabled - when: - - "'desktop' in group_names" - - not services_runit_selected_display_manager_link.stat.exists - - >- - (services_runit_active_inactive_display_managers | length) == 0 - or (desktop_allow_display_manager_switch | default(false)) - -- name: Remove inactive desktop display manager packages after switching - tags: [services, packages, display-manager] - community.general.xbps: - 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_selected_display_manager_link.stat.exists - or (services_runit_display_manager_enabled is defined and services_runit_display_manager_enabled is changed) - - >- - (services_runit_active_inactive_display_managers | length) == 0 - or (desktop_allow_display_manager_switch | default(false)) + when: "'desktop' in group_names" diff --git a/ansible/site.yml b/ansible/site.yml index e7a4f4e..34a1105 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -39,39 +39,8 @@ - profile_desktop_sway - profile_desktop_hyprland - profile_desktop_niri - - profile_desktop_kde - - profile_desktop_xfce - profile_desktop_host -- name: Configure lab role on Void - hosts: platform_void:&role_lab - become: true - - roles: - - profile_lab - -- name: Configure Linux Mint platform - hosts: platform_mint - become: true - - roles: - - packages_mint - - services_systemd - -- name: Configure personal workstation role on Linux Mint - hosts: platform_mint:&role_personal_workstation - become: true - - roles: - - profile_personal_workstation - -- name: Configure Cinnamon desktop on Linux Mint - hosts: platform_mint:&desktop_cinnamon - become: true - - roles: - - profile_desktop_cinnamon - - name: Configure FreeBSD platform hosts: platform_freebsd become: true @@ -80,13 +49,6 @@ - packages_freebsd - services_freebsd -- name: Configure lab role on FreeBSD - hosts: platform_freebsd:&role_lab - become: true - - roles: - - profile_lab - - name: Configure Niri desktop on FreeBSD hosts: platform_freebsd:&desktop_niri become: true diff --git a/dotfiles/desktop/.config/Thunar/uca.xfce.xml b/dotfiles/desktop/.config/Thunar/uca.xfce.xml deleted file mode 100644 index cfb3df4..0000000 --- a/dotfiles/desktop/.config/Thunar/uca.xfce.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - utilities-terminal - Open Terminal Here - - xfce-open-terminal-here - xfce4-terminal --working-directory %f - Open xfce4-terminal in this directory - - * - - - - diff --git a/dotfiles/desktop/.config/mimeapps.kde.list b/dotfiles/desktop/.config/mimeapps.kde.list deleted file mode 100644 index 58140aa..0000000 --- a/dotfiles/desktop/.config/mimeapps.kde.list +++ /dev/null @@ -1,338 +0,0 @@ -[Default Applications] -text/html=userapp-Firefox-91DVN3.desktop -x-scheme-handler/http=userapp-Firefox-91DVN3.desktop -x-scheme-handler/https=userapp-Firefox-91DVN3.desktop -x-scheme-handler/about=firefox.desktop -x-scheme-handler/unknown=firefox.desktop -application/pdf=org.kde.okular.desktop -application/json=emacs.desktop -application/json5=emacs.desktop -application/xml=emacs.desktop -application/xml-external-parsed-entity=emacs.desktop -application/x-shellscript=emacs.desktop -application/yaml=emacs.desktop -inode/directory=org.kde.dolphin.desktop -image/bmp=org.kde.gwenview.desktop -image/gif=org.kde.gwenview.desktop -image/jpeg=org.kde.gwenview.desktop -image/png=org.kde.gwenview.desktop -image/svg+xml=org.kde.gwenview.desktop -image/tiff=org.kde.gwenview.desktop -image/webp=org.kde.gwenview.desktop -image/x-pixmap=org.kde.gwenview.desktop -image/x-xpixmap=org.kde.gwenview.desktop -audio/aac=mpv.desktop -audio/flac=mpv.desktop -audio/m4a=mpv.desktop -audio/mp3=mpv.desktop -audio/mpeg=mpv.desktop -audio/mp4=mpv.desktop -audio/ogg=mpv.desktop -audio/opus=mpv.desktop -audio/vnd.wave=mpv.desktop -audio/wav=mpv.desktop -audio/webm=mpv.desktop -audio/x-aac=mpv.desktop -audio/x-m4a=mpv.desktop -audio/x-matroska=mpv.desktop -audio/x-mp3=mpv.desktop -audio/x-mpegurl=mpv.desktop -audio/x-ms-wma=mpv.desktop -audio/x-ogg=mpv.desktop -audio/x-pn-wav=mpv.desktop -audio/x-scpls=mpv.desktop -audio/x-wav=mpv.desktop -video/3gp=mpv.desktop -video/3gpp=mpv.desktop -video/3gpp2=mpv.desktop -video/avi=mpv.desktop -video/mp2t=mpv.desktop -video/mp4=mpv.desktop -video/mp4v-es=mpv.desktop -video/mpeg=mpv.desktop -video/ogg=mpv.desktop -video/quicktime=mpv.desktop -video/vnd.avi=mpv.desktop -video/webm=mpv.desktop -video/x-avi=mpv.desktop -video/x-flc=mpv.desktop -video/x-flic=mpv.desktop -video/x-flv=mpv.desktop -video/x-m4v=mpv.desktop -video/x-matroska=mpv.desktop -video/x-mpeg2=mpv.desktop -video/x-ms-asf=mpv.desktop -video/x-ms-wmv=mpv.desktop -video/x-msvideo=mpv.desktop -video/x-ogm+ogg=mpv.desktop -video/x-theora=mpv.desktop -video/x-theora+ogg=mpv.desktop -application/msword=libreoffice-writer.desktop -application/rtf=libreoffice-writer.desktop -application/vnd.ms-word=libreoffice-writer.desktop -application/vnd.ms-word.document.macroEnabled.12=libreoffice-writer.desktop -application/vnd.ms-word.template.macroEnabled.12=libreoffice-writer.desktop -application/vnd.oasis.opendocument.text=libreoffice-writer.desktop -application/vnd.oasis.opendocument.text-template=libreoffice-writer.desktop -application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop -application/vnd.openxmlformats-officedocument.wordprocessingml.template=libreoffice-writer.desktop -application/x-doc=libreoffice-writer.desktop -text/rtf=libreoffice-writer.desktop -application/csv=libreoffice-calc.desktop -application/excel=libreoffice-calc.desktop -application/msexcel=libreoffice-calc.desktop -application/tab-separated-values=libreoffice-calc.desktop -application/vnd.ms-excel=libreoffice-calc.desktop -application/vnd.ms-excel.sheet.binary.macroEnabled.12=libreoffice-calc.desktop -application/vnd.ms-excel.sheet.macroEnabled.12=libreoffice-calc.desktop -application/vnd.ms-excel.template.macroEnabled.12=libreoffice-calc.desktop -application/vnd.oasis.opendocument.spreadsheet=libreoffice-calc.desktop -application/vnd.oasis.opendocument.spreadsheet-template=libreoffice-calc.desktop -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop -application/vnd.openxmlformats-officedocument.spreadsheetml.template=libreoffice-calc.desktop -application/x-dos_ms_excel=libreoffice-calc.desktop -application/x-excel=libreoffice-calc.desktop -application/x-ms-excel=libreoffice-calc.desktop -application/x-msexcel=libreoffice-calc.desktop -text/comma-separated-values=libreoffice-calc.desktop -text/csv=libreoffice-calc.desktop -text/tab-separated-values=libreoffice-calc.desktop -text/x-comma-separated-values=libreoffice-calc.desktop -text/x-csv=libreoffice-calc.desktop -application/mspowerpoint=libreoffice-impress.desktop -application/vnd.ms-powerpoint=libreoffice-impress.desktop -application/vnd.ms-powerpoint.presentation.macroEnabled.12=libreoffice-impress.desktop -application/vnd.ms-powerpoint.slideshow.macroEnabled.12=libreoffice-impress.desktop -application/vnd.ms-powerpoint.template.macroEnabled.12=libreoffice-impress.desktop -application/vnd.oasis.opendocument.presentation=libreoffice-impress.desktop -application/vnd.oasis.opendocument.presentation-template=libreoffice-impress.desktop -application/vnd.openxmlformats-officedocument.presentationml.presentation=libreoffice-impress.desktop -application/vnd.openxmlformats-officedocument.presentationml.slide=libreoffice-impress.desktop -application/vnd.openxmlformats-officedocument.presentationml.slideshow=libreoffice-impress.desktop -application/vnd.openxmlformats-officedocument.presentationml.template=libreoffice-impress.desktop -application/gzip=org.kde.ark.desktop -application/vnd.debian.binary-package=org.kde.ark.desktop -application/vnd.ms-cab-compressed=org.kde.ark.desktop -application/vnd.rar=org.kde.ark.desktop -application/x-7z-compressed=org.kde.ark.desktop -application/x-archive=org.kde.ark.desktop -application/x-arj=org.kde.ark.desktop -application/x-bzip=org.kde.ark.desktop -application/x-bzip-compressed-tar=org.kde.ark.desktop -application/x-bzip2=org.kde.ark.desktop -application/x-bzip2-compressed-tar=org.kde.ark.desktop -application/x-cd-image=org.kde.ark.desktop -application/x-compressed-tar=org.kde.ark.desktop -application/x-cpio=org.kde.ark.desktop -application/x-cpio-compressed=org.kde.ark.desktop -application/x-lha=org.kde.ark.desktop -application/x-lrzip=org.kde.ark.desktop -application/x-lrzip-compressed-tar=org.kde.ark.desktop -application/x-lzip=org.kde.ark.desktop -application/x-lzip-compressed-tar=org.kde.ark.desktop -application/x-lzma=org.kde.ark.desktop -application/x-lzma-compressed-tar=org.kde.ark.desktop -application/x-rar=org.kde.ark.desktop -application/x-rpm=org.kde.ark.desktop -application/x-rzip=org.kde.ark.desktop -application/x-rzip-compressed-tar=org.kde.ark.desktop -application/x-source-rpm=org.kde.ark.desktop -application/x-tar=org.kde.ark.desktop -application/x-tarz=org.kde.ark.desktop -application/x-xz=org.kde.ark.desktop -application/x-xz-compressed-tar=org.kde.ark.desktop -application/x-zpaq=org.kde.ark.desktop -application/x-zstd-compressed-tar=org.kde.ark.desktop -application/zip=org.kde.ark.desktop -application/zstd=org.kde.ark.desktop -text/markdown=emacs.desktop -text/org=emacs.desktop -text/plain=emacs.desktop -text/rust=emacs.desktop -text/x-c++hdr=emacs.desktop -text/x-c++src=emacs.desktop -text/x-chdr=emacs.desktop -text/x-csrc=emacs.desktop -text/x-emacs-lisp=emacs.desktop -text/x-go=emacs.desktop -text/x-java=emacs.desktop -text/x-makefile=emacs.desktop -text/x-patch=emacs.desktop -text/x-python=emacs.desktop -text/x-python3=emacs.desktop -text/x-readme=emacs.desktop -text/x-rst=emacs.desktop -text/x-tex=emacs.desktop -text/x-texinfo=emacs.desktop -x-scheme-handler/chrome=userapp-Firefox-91DVN3.desktop -application/x-extension-htm=userapp-Firefox-91DVN3.desktop -application/x-extension-html=userapp-Firefox-91DVN3.desktop -application/x-extension-shtml=userapp-Firefox-91DVN3.desktop -application/xhtml+xml=userapp-Firefox-91DVN3.desktop -application/x-extension-xhtml=userapp-Firefox-91DVN3.desktop -application/x-extension-xht=userapp-Firefox-91DVN3.desktop - -[Added Associations] -application/json=emacs.desktop; -application/json5=emacs.desktop; -application/pdf=org.kde.okular.desktop; -application/xml=emacs.desktop; -application/xml-external-parsed-entity=emacs.desktop; -application/x-shellscript=emacs.desktop; -application/yaml=emacs.desktop; -text/plain=emacs.desktop; -inode/directory=org.kde.dolphin.desktop; -image/bmp=org.kde.gwenview.desktop; -image/gif=org.kde.gwenview.desktop; -image/jpeg=org.kde.gwenview.desktop; -image/png=org.kde.gwenview.desktop; -image/svg+xml=org.kde.gwenview.desktop; -image/tiff=org.kde.gwenview.desktop; -image/webp=org.kde.gwenview.desktop; -image/x-pixmap=org.kde.gwenview.desktop; -image/x-xpixmap=org.kde.gwenview.desktop; -audio/aac=mpv.desktop; -audio/flac=mpv.desktop; -audio/m4a=mpv.desktop; -audio/mp3=mpv.desktop; -audio/mpeg=mpv.desktop; -audio/mp4=mpv.desktop; -audio/ogg=mpv.desktop; -audio/opus=mpv.desktop; -audio/vnd.wave=mpv.desktop; -audio/wav=mpv.desktop; -audio/webm=mpv.desktop; -audio/x-aac=mpv.desktop; -audio/x-m4a=mpv.desktop; -audio/x-matroska=mpv.desktop; -audio/x-mp3=mpv.desktop; -audio/x-mpegurl=mpv.desktop; -audio/x-ms-wma=mpv.desktop; -audio/x-ogg=mpv.desktop; -audio/x-pn-wav=mpv.desktop; -audio/x-scpls=mpv.desktop; -audio/x-wav=mpv.desktop; -video/3gp=mpv.desktop; -video/3gpp=mpv.desktop; -video/3gpp2=mpv.desktop; -video/avi=mpv.desktop; -video/mp2t=mpv.desktop; -video/mp4=mpv.desktop; -video/mp4v-es=mpv.desktop; -video/mpeg=mpv.desktop; -video/ogg=mpv.desktop; -video/quicktime=mpv.desktop; -video/vnd.avi=mpv.desktop; -video/webm=mpv.desktop; -video/x-avi=mpv.desktop; -video/x-flc=mpv.desktop; -video/x-flic=mpv.desktop; -video/x-flv=mpv.desktop; -video/x-m4v=mpv.desktop; -video/x-matroska=mpv.desktop; -video/x-mpeg2=mpv.desktop; -video/x-ms-asf=mpv.desktop; -video/x-ms-wmv=mpv.desktop; -video/x-msvideo=mpv.desktop; -video/x-ogm+ogg=mpv.desktop; -video/x-theora=mpv.desktop; -video/x-theora+ogg=mpv.desktop; -application/msword=libreoffice-writer.desktop; -application/rtf=libreoffice-writer.desktop; -application/vnd.ms-word=libreoffice-writer.desktop; -application/vnd.ms-word.document.macroEnabled.12=libreoffice-writer.desktop; -application/vnd.ms-word.template.macroEnabled.12=libreoffice-writer.desktop; -application/vnd.oasis.opendocument.text=libreoffice-writer.desktop; -application/vnd.oasis.opendocument.text-template=libreoffice-writer.desktop; -application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; -application/vnd.openxmlformats-officedocument.wordprocessingml.template=libreoffice-writer.desktop; -application/x-doc=libreoffice-writer.desktop; -text/rtf=libreoffice-writer.desktop; -application/csv=libreoffice-calc.desktop; -application/excel=libreoffice-calc.desktop; -application/msexcel=libreoffice-calc.desktop; -application/tab-separated-values=libreoffice-calc.desktop; -application/vnd.ms-excel=libreoffice-calc.desktop; -application/vnd.ms-excel.sheet.binary.macroEnabled.12=libreoffice-calc.desktop; -application/vnd.ms-excel.sheet.macroEnabled.12=libreoffice-calc.desktop; -application/vnd.ms-excel.template.macroEnabled.12=libreoffice-calc.desktop; -application/vnd.oasis.opendocument.spreadsheet=libreoffice-calc.desktop; -application/vnd.oasis.opendocument.spreadsheet-template=libreoffice-calc.desktop; -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop; -application/vnd.openxmlformats-officedocument.spreadsheetml.template=libreoffice-calc.desktop; -application/x-dos_ms_excel=libreoffice-calc.desktop; -application/x-excel=libreoffice-calc.desktop; -application/x-ms-excel=libreoffice-calc.desktop; -application/x-msexcel=libreoffice-calc.desktop; -text/comma-separated-values=libreoffice-calc.desktop; -text/csv=libreoffice-calc.desktop; -text/tab-separated-values=libreoffice-calc.desktop; -text/x-comma-separated-values=libreoffice-calc.desktop; -text/x-csv=libreoffice-calc.desktop; -application/mspowerpoint=libreoffice-impress.desktop; -application/vnd.ms-powerpoint=libreoffice-impress.desktop; -application/vnd.ms-powerpoint.presentation.macroEnabled.12=libreoffice-impress.desktop; -application/vnd.ms-powerpoint.slideshow.macroEnabled.12=libreoffice-impress.desktop; -application/vnd.ms-powerpoint.template.macroEnabled.12=libreoffice-impress.desktop; -application/vnd.oasis.opendocument.presentation=libreoffice-impress.desktop; -application/vnd.oasis.opendocument.presentation-template=libreoffice-impress.desktop; -application/vnd.openxmlformats-officedocument.presentationml.presentation=libreoffice-impress.desktop; -application/vnd.openxmlformats-officedocument.presentationml.slide=libreoffice-impress.desktop; -application/vnd.openxmlformats-officedocument.presentationml.slideshow=libreoffice-impress.desktop; -application/vnd.openxmlformats-officedocument.presentationml.template=libreoffice-impress.desktop; -application/gzip=org.kde.ark.desktop; -application/vnd.debian.binary-package=org.kde.ark.desktop; -application/vnd.ms-cab-compressed=org.kde.ark.desktop; -application/vnd.rar=org.kde.ark.desktop; -application/x-7z-compressed=org.kde.ark.desktop; -application/x-archive=org.kde.ark.desktop; -application/x-arj=org.kde.ark.desktop; -application/x-bzip=org.kde.ark.desktop; -application/x-bzip-compressed-tar=org.kde.ark.desktop; -application/x-bzip2=org.kde.ark.desktop; -application/x-bzip2-compressed-tar=org.kde.ark.desktop; -application/x-cd-image=org.kde.ark.desktop; -application/x-compressed-tar=org.kde.ark.desktop; -application/x-cpio=org.kde.ark.desktop; -application/x-cpio-compressed=org.kde.ark.desktop; -application/x-lha=org.kde.ark.desktop; -application/x-lrzip=org.kde.ark.desktop; -application/x-lrzip-compressed-tar=org.kde.ark.desktop; -application/x-lzip=org.kde.ark.desktop; -application/x-lzip-compressed-tar=org.kde.ark.desktop; -application/x-lzma=org.kde.ark.desktop; -application/x-lzma-compressed-tar=org.kde.ark.desktop; -application/x-rar=org.kde.ark.desktop; -application/x-rpm=org.kde.ark.desktop; -application/x-rzip=org.kde.ark.desktop; -application/x-rzip-compressed-tar=org.kde.ark.desktop; -application/x-source-rpm=org.kde.ark.desktop; -application/x-tar=org.kde.ark.desktop; -application/x-tarz=org.kde.ark.desktop; -application/x-xz=org.kde.ark.desktop; -application/x-xz-compressed-tar=org.kde.ark.desktop; -application/x-zpaq=org.kde.ark.desktop; -application/x-zstd-compressed-tar=org.kde.ark.desktop; -application/zip=org.kde.ark.desktop; -application/zstd=org.kde.ark.desktop; -text/markdown=emacs.desktop; -text/org=emacs.desktop; -text/rust=emacs.desktop; -text/x-c++hdr=emacs.desktop; -text/x-c++src=emacs.desktop; -text/x-chdr=emacs.desktop; -text/x-csrc=emacs.desktop; -text/x-emacs-lisp=emacs.desktop; -text/x-go=emacs.desktop; -text/x-java=emacs.desktop; -text/x-makefile=emacs.desktop; -text/x-patch=emacs.desktop; -text/x-python=emacs.desktop; -text/x-python3=emacs.desktop; -text/x-readme=emacs.desktop; -text/x-rst=emacs.desktop; -text/x-tex=emacs.desktop; -text/x-texinfo=emacs.desktop; -x-scheme-handler/http=userapp-Firefox-91DVN3.desktop; -x-scheme-handler/https=userapp-Firefox-91DVN3.desktop; -x-scheme-handler/chrome=userapp-Firefox-91DVN3.desktop; diff --git a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml deleted file mode 100644 index 4b7720e..0000000 --- a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml b/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml deleted file mode 100644 index f8f2a50..0000000 --- a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-notifyd.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 619abc1..0000000 --- a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml b/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml deleted file mode 100644 index 8150f38..0000000 --- a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml b/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml deleted file mode 100644 index dcfd5f1..0000000 --- a/dotfiles/desktop/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/dotfiles/desktop/.local/share/backgrounds/xfce-dark.svg b/dotfiles/desktop/.local/share/backgrounds/xfce-dark.svg deleted file mode 100644 index fd5a8b8..0000000 --- a/dotfiles/desktop/.local/share/backgrounds/xfce-dark.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -