mirror of
https://github.com/fscotto/infra.git
synced 2026-09-27 19:03:47 +00:00
Compare commits
3 Commits
66575e6d80
...
f2bc1cf768
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2bc1cf768 | ||
|
|
e5a330dab0 | ||
|
|
6e27569dc3 |
18
AGENTS.md
18
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,31 +54,29 @@ 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_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` 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/`.
|
||||
- `ssh-agent` keeps the stable socket `~/.local/state/ssh-agent/socket`.
|
||||
- Critical session entrypoints:
|
||||
- `dotfiles/desktop/.config/sway/config` plus `host.conf` and `session-env` deployed via `host_sway_dotfiles` (sway / Wayland)
|
||||
- `dotfiles/desktop/.config/hypr/hyprland.conf` plus `host.conf` and `session-env` deployed via `host_hyprland_dotfiles` (Hyprland / Wayland)
|
||||
- `dotfiles/desktop/.config/niri/config.kdl` and `session-env` deployed via `desktop_niri_dotfiles` (Niri / Wayland)
|
||||
- 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_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.
|
||||
- `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` — binaries specific to the Sway session.
|
||||
`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`.
|
||||
|
||||
@@ -54,7 +54,7 @@ Dotfiles under `dotfiles/` mirror the same layer split: `common/`, `desktop/`, `
|
||||
|
||||
- `void_packages_base` — system runtime (init, kernel, audio core, networking, firewall, hw daemons)
|
||||
- `desktop_common_packages` — WM-agnostic GUI infra (GTK theme, polkit, keyring, portals, flatpak, printing)
|
||||
- `desktop_sway_packages` / `desktop_hyprland_packages` — session-specific binaries; cross-WM packages used by both (`dunst`, `rofi`, `alacritty`) are intentionally duplicated
|
||||
- `desktop_sway_packages` — Sway-specific binaries
|
||||
- `profile_packages` — cross-distro; do not move desktop-only Void entries into it
|
||||
|
||||
Dotfile var split follows the same logic: `desktop_common_dotfiles` (WM-agnostic), `desktop_void_dotfiles` (Void runtime — turnstile services, bash fragments).
|
||||
|
||||
131
README.md
131
README.md
@@ -67,11 +67,12 @@ common user environment
|
||||
|
||||
Matrice target:
|
||||
|
||||
| Host | Platform | Role | Desktop |
|
||||
| -------------- | ---------- | -------------------- | --------------------------------- |
|
||||
| ikaros | Fedora | Personal workstation | GNOME |
|
||||
| nymph | Fedora | Desktop laptop | GNOME |
|
||||
| void-reference | Void Linux | Lab/reference | Current preserved desktop profile |
|
||||
| Host | Platform | Role | Desktop |
|
||||
| ------------ | -------- | -------------------- | ------- |
|
||||
| ikaros | Fedora | Personal workstation | GNOME |
|
||||
| nymph | Fedora | Desktop laptop | GNOME |
|
||||
| deadalus-wsl | Ubuntu | Workstation dev | — |
|
||||
| prometheus | Ubuntu | Server | — |
|
||||
|
||||
Regola operativa:
|
||||
|
||||
@@ -98,32 +99,28 @@ 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`: Sway e il default,
|
||||
mentre Niri si seleziona con il gruppo `desktop_niri`. GNOME e disponibile solo
|
||||
sui target Fedora tramite `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`
|
||||
- sessioni Sway e Niri per eventuali host Void in modalita `minimal`
|
||||
- `emptty` con default host-specific in modalita `minimal` e session file Wayland per `sway`
|
||||
- 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_sway_packages` e `desktop_hyprland_packages` per i binari specifici di ciascuna sessione
|
||||
- `desktop_common_packages` per l'infrastruttura condivisa
|
||||
- `desktop_minimal_packages` per applicazioni GTK e `emptty`
|
||||
- `desktop_sway_packages` per i binari specifici della sessione Sway
|
||||
- `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
|
||||
- multi-monitor Void: sotto sway è gestito da `kanshi`; sotto Hyprland gli override monitor vivono in `host_hyprland_dotfiles`
|
||||
- GNOME Keyring e `udiskie` nella modalita minimale
|
||||
- multi-monitor Void: sotto Sway è gestito da `kanshi`
|
||||
|
||||
---
|
||||
|
||||
@@ -148,7 +145,7 @@ Nel modello Ansible usato qui, un singolo inventory host puo appartenere intenzi
|
||||
|
||||
Il profilo workstation e agganciato al playbook principale e ora distingue:
|
||||
|
||||
- layer dev Ubuntu condiviso tra WSL e server
|
||||
- layer dev condiviso tra WSL e workstation Fedora future
|
||||
- layer dev Fedora nativo disponibile per host futuri
|
||||
- layer host Linux GNOME disponibile per host futuri
|
||||
- layer WSL dedicato per sviluppo con `systemd`
|
||||
@@ -248,8 +245,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_sway`
|
||||
|
||||
---
|
||||
|
||||
@@ -261,23 +258,18 @@ 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 |
|
||||
| services_runit | gestione servizi runit |
|
||||
| services_systemd | gestione servizi systemd |
|
||||
| services_freebsd | gestione servizi FreeBSD rc.conf/rc.d |
|
||||
| services_freebsd | gestione servizi FreeBSD dichiarati per host |
|
||||
| profile_desktop_common | bootstrap desktop Void condiviso |
|
||||
| profile_desktop_gnome | dotfiles desktop condivisi per Fedora/GNOME |
|
||||
| profile_desktop_sway | sessione desktop sway / SwayFX (Wayland) |
|
||||
| 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,13 +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_freebsd & desktop_niri -> profile_desktop_niri_freebsd
|
||||
platform_void & graphical_desktop -> profile_desktop_common + profile_desktop_sway + profile_desktop_niri + profile_desktop_host
|
||||
platform_freebsd -> packages_freebsd + services_freebsd
|
||||
platform_fedora -> packages_fedora + services_systemd
|
||||
platform_fedora & role_personal_workstation -> profile_personal_workstation
|
||||
platform_fedora & desktop_gnome -> profile_desktop_gnome
|
||||
@@ -387,14 +374,14 @@ 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_void + graphical_desktop` applica bootstrap desktop condiviso, sessioni Sway/Niri e override specifici per 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,40 +423,37 @@ 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 <host> -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 |
|
||||
| --- | --- | --- |
|
||||
| `always` | pre-task sempre eseguiti, inclusi caricamento vault e validazioni preliminari | common |
|
||||
| `dotfiles` | distribuzione/configurazione dotfiles | tutti i profili |
|
||||
| `dotfiles:common` | dotfiles comuni condivisi | common, workstation, server |
|
||||
| `dotfiles:desktop` | dotfiles desktop | desktop Void, Fedora/GNOME, FreeBSD/Niri |
|
||||
| `dotfiles:host` | override host-specifici desktop | desktop Void |
|
||||
| `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 |
|
||||
| `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 |
|
||||
| `niri` | sessione/configurazione Niri (Wayland) | Void o FreeBSD con `desktop_niri` |
|
||||
| `npm` | installazione pacchetti npm globali | Fedora/GNOME, desktop Void, workstation Linux, WSL |
|
||||
| `nvidia` | componenti NVIDIA desktop | desktop Void |
|
||||
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
||||
| `services` | gestione servizi runit/systemd | tutti i profili |
|
||||
| `vscode` | installazione/configurazione VS Code | workstation Fedora future, host Linux |
|
||||
| `wsl` | bootstrap e configurazione WSL | WSL |
|
||||
| `always` | pre-task sempre eseguiti, inclusi caricamento vault e validazioni preliminari | common |
|
||||
| `ai_agents` | installazione agenti AI condivisi | Fedora, WSL |
|
||||
| `dotfiles` | distribuzione/configurazione dotfiles | tutti i profili |
|
||||
| `dotfiles:common` | dotfiles comuni condivisi | common, workstation, server |
|
||||
| `dotfiles:desktop` | dotfiles desktop | desktop Void, Fedora/GNOME |
|
||||
| `dotfiles:host` | override host-specifici desktop | desktop Void |
|
||||
| `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` | gestione del display manager `emptty` | desktop Void |
|
||||
| `emacs` | deploy opzionale di Emacs | desktop Fedora/Void |
|
||||
| `fonts` | installazione font | Fedora |
|
||||
| `fzf` | configurazione FZF | dotfiles comuni |
|
||||
| `git` | configurazione Git e GPG desktop | Fedora/GNOME, desktop Void |
|
||||
| `gnome` | configurazione host GNOME | Fedora/GNOME desktop, workstation host Linux future |
|
||||
| `sway` | sessione/configurazione sway / SwayFX (Wayland) | desktop Void |
|
||||
| `niri` | sessione/configurazione Niri (Wayland) | desktop Void |
|
||||
| `npm` | installazione pacchetti npm globali | Fedora/GNOME, desktop Void, workstation Linux, WSL |
|
||||
| `nvidia` | componenti NVIDIA desktop | desktop Void |
|
||||
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
||||
| `portal` | configurazione xdg-desktop-portal | desktop Void |
|
||||
| `services` | gestione servizi runit/systemd | tutti i profili |
|
||||
| `theme` | configurazione del tema GTK/Qt | desktop Void |
|
||||
| `tmux` | configurazione e plugin tmux | desktop Fedora/Void, WSL |
|
||||
| `vim` | configurazione Vim | dotfiles comuni |
|
||||
| `vscode` | installazione/configurazione VS Code | workstation Fedora future, host Linux |
|
||||
| `wsl` | bootstrap e configurazione WSL | WSL |
|
||||
|
||||
Esempi pratici:
|
||||
|
||||
@@ -496,11 +480,10 @@ Dopo l'esecuzione del playbook la macchina verra configurata secondo il profilo
|
||||
|
||||
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/<host>.yml`.
|
||||
1. aggiungere l'host a `platform_void`;
|
||||
2. aggiungerlo a `graphical_desktop`;
|
||||
3. usare Sway, oppure aggiungerlo a `desktop_niri` per selezionare Niri;
|
||||
4. lasciare eventuali dettagli hardware in `host_vars/<host>.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
|
||||
|
||||
@@ -2,33 +2,7 @@
|
||||
# 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:
|
||||
ansible_connection: local
|
||||
|
||||
graphical_desktop:
|
||||
hosts:
|
||||
minttest:
|
||||
freebsdtest:
|
||||
|
||||
role_personal_workstation:
|
||||
hosts:
|
||||
minttest:
|
||||
|
||||
role_lab:
|
||||
hosts:
|
||||
freebsdtest:
|
||||
|
||||
desktop_cinnamon:
|
||||
hosts:
|
||||
minttest:
|
||||
|
||||
desktop_hyprland:
|
||||
hosts:
|
||||
freebsdtest:
|
||||
|
||||
@@ -1,17 +1,10 @@
|
||||
---
|
||||
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
|
||||
|
||||
desktop_default_session: hyprland
|
||||
desktop_default_session: sway
|
||||
desktop_default_session_env: wayland
|
||||
desktop_prompt_for_session: true
|
||||
|
||||
@@ -156,7 +149,6 @@ desktop_minimal_managed_paths:
|
||||
- .config/flameshot
|
||||
- .config/foot
|
||||
- .config/gtklock
|
||||
- .config/hypr
|
||||
- .config/kanshi
|
||||
- .config/rofi
|
||||
- .config/sway
|
||||
@@ -213,32 +205,6 @@ desktop_sway_dotfiles:
|
||||
dest: .config/gtklock/
|
||||
mode: preserve
|
||||
|
||||
desktop_hyprland_dotfiles:
|
||||
- name: alacritty config
|
||||
src: .config/alacritty/
|
||||
dest: .config/alacritty/
|
||||
mode: preserve
|
||||
- name: dunst config
|
||||
src: .config/dunst/
|
||||
dest: .config/dunst/
|
||||
mode: preserve
|
||||
- name: rofi config
|
||||
src: .config/rofi/
|
||||
dest: .config/rofi/
|
||||
mode: preserve
|
||||
- name: hyprland config
|
||||
src: .config/hypr/
|
||||
dest: .config/hypr/
|
||||
mode: preserve
|
||||
- name: waybar config
|
||||
src: .config/waybar/
|
||||
dest: .config/waybar/
|
||||
mode: preserve
|
||||
- name: foot config
|
||||
src: .config/foot/
|
||||
dest: .config/foot/
|
||||
mode: preserve
|
||||
|
||||
desktop_niri_dotfiles:
|
||||
- name: foot config
|
||||
src: .config/foot/
|
||||
@@ -261,30 +227,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
|
||||
|
||||
@@ -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'"
|
||||
@@ -1,3 +0,0 @@
|
||||
---
|
||||
desktop_profile: hyprland
|
||||
desktop_default_session: hyprland
|
||||
@@ -53,70 +53,3 @@ freebsd_development_packages:
|
||||
- py311-pip
|
||||
- rust
|
||||
- shellcheck
|
||||
|
||||
freebsd_desktop_common_packages:
|
||||
- croc
|
||||
- dbus
|
||||
- dconf
|
||||
- firefox
|
||||
- fontconfig
|
||||
- gnome-keyring
|
||||
- libsecret
|
||||
- mpv
|
||||
- pinentry-gnome
|
||||
- pipewire
|
||||
- polkit
|
||||
- thunderbird
|
||||
- wireplumber
|
||||
- xdg-desktop-portal
|
||||
|
||||
freebsd_hyprland_packages:
|
||||
- alacritty
|
||||
- cliphist
|
||||
- dunst
|
||||
- foot
|
||||
- grim
|
||||
- hypridle
|
||||
- hyprland
|
||||
- hyprlock
|
||||
- hyprpaper
|
||||
- rofi-wayland
|
||||
- seatd
|
||||
- slurp
|
||||
- waybar
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-gtk
|
||||
- xdg-desktop-portal-hyprland
|
||||
- xwayland
|
||||
|
||||
freebsd_niri_packages:
|
||||
- cliphist
|
||||
- dunst
|
||||
- foot
|
||||
- grim
|
||||
- niri
|
||||
- rofi-wayland
|
||||
- seatd
|
||||
- slurp
|
||||
- waybar
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-gtk
|
||||
|
||||
freebsd_lab_packages:
|
||||
- lldb
|
||||
- llvm
|
||||
- podman
|
||||
- qemu
|
||||
- smartmontools
|
||||
|
||||
freebsd_rc_conf:
|
||||
- name: dbus_enable
|
||||
value: "YES"
|
||||
- name: seatd_enable
|
||||
value: "YES"
|
||||
|
||||
freebsd_enabled_services:
|
||||
- dbus
|
||||
- seatd
|
||||
|
||||
freebsd_xdg_config_dir: /usr/local/etc/xdg
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -1,8 +1,4 @@
|
||||
---
|
||||
void_xbps_repositories:
|
||||
- name: hyprland-void
|
||||
url: https://raw.githubusercontent.com/sofijacom/hyprland-void/repository-x86_64-glibc
|
||||
|
||||
void_packages_base:
|
||||
- 7zip
|
||||
- NetworkManager
|
||||
@@ -141,45 +137,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
|
||||
@@ -201,27 +158,6 @@ desktop_sway_packages:
|
||||
- xdg-desktop-portal-wlr
|
||||
- xorg-server-xwayland
|
||||
|
||||
desktop_hyprland_packages:
|
||||
- cliphist
|
||||
- dunst
|
||||
- foot
|
||||
- foot-terminfo
|
||||
- grim
|
||||
- hypridle
|
||||
- hyprland
|
||||
- hyprland-guiutils
|
||||
- hyprlock
|
||||
- hyprpolkitagent
|
||||
- hyprpaper
|
||||
- hyprsysteminfo
|
||||
- rofi
|
||||
- slurp
|
||||
- SwayOSD
|
||||
- Waybar
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-hyprland
|
||||
- xorg-server-xwayland
|
||||
|
||||
desktop_niri_packages:
|
||||
- cliphist
|
||||
- dunst
|
||||
@@ -238,12 +174,6 @@ desktop_niri_packages:
|
||||
- xdg-desktop-portal-gtk
|
||||
- xorg-server-xwayland
|
||||
|
||||
void_lab_packages:
|
||||
- llvm
|
||||
- podman
|
||||
- qemu
|
||||
- smartmontools
|
||||
|
||||
profile_packages:
|
||||
- bash-language-server
|
||||
- bluez
|
||||
|
||||
@@ -233,11 +233,11 @@ gnome_gsettings_settings:
|
||||
- schema: org.gnome.shell
|
||||
key: disabled-extensions
|
||||
value: >-
|
||||
['window-list@gnome-shell-extensions.gcampax.github.com', 'background-logo@fedorahosted.org', 'apps-menu@gnome-shell-extensions.gcampax.github.com', 'places-menu@gnome-shell-extensions.gcampax.github.com', 'maximize-new-windows@VitalyOstanin']
|
||||
['window-list@gnome-shell-extensions.gcampax.github.com', 'background-logo@fedorahosted.org', 'apps-menu@gnome-shell-extensions.gcampax.github.com', 'places-menu@gnome-shell-extensions.gcampax.github.com']
|
||||
- schema: org.gnome.shell
|
||||
key: enabled-extensions
|
||||
value: >-
|
||||
['status-icons@gnome-shell-extensions.gcampax.github.com', 'gnome-ui-tune@itstime.tech', 'appindicatorsupport@rgcjonas.gmail.com', 'bluetooth-battery-monitor@v8v88v8v88.com', 'clipboard-indicator@tudmotu.com', 'status-area-horizontal-spacing@mathematical.coffee.gmail.com', 'MaximizeWindowIntoNewWorkspace@kyleross.com']
|
||||
['status-icons@gnome-shell-extensions.gcampax.github.com', 'gnome-ui-tune@itstime.tech', 'appindicatorsupport@rgcjonas.gmail.com', 'bluetooth-battery-monitor@v8v88v8v88.com', 'clipboard-indicator@tudmotu.com', 'status-area-horizontal-spacing@mathematical.coffee.gmail.com', 'MaximizeWindowIntoNewWorkspace@kyleross.com', 'maximize-new-windows@VitalyOstanin']
|
||||
- schema: org.gnome.shell
|
||||
key: favorite-apps
|
||||
value: >-
|
||||
|
||||
@@ -11,9 +11,6 @@ all:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
platform_mint:
|
||||
hosts: {}
|
||||
|
||||
platform_freebsd:
|
||||
hosts: {}
|
||||
|
||||
@@ -41,15 +38,9 @@ all:
|
||||
ikaros:
|
||||
ansible_connection: local
|
||||
|
||||
role_lab:
|
||||
hosts: {}
|
||||
|
||||
desktop_sway:
|
||||
hosts: {}
|
||||
|
||||
desktop_hyprland:
|
||||
hosts: {}
|
||||
|
||||
desktop_niri:
|
||||
hosts: {}
|
||||
|
||||
@@ -60,9 +51,6 @@ all:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
desktop_cinnamon:
|
||||
hosts: {}
|
||||
|
||||
ubuntu:
|
||||
children:
|
||||
workstation_dev_wsl:
|
||||
|
||||
@@ -7,26 +7,6 @@
|
||||
(
|
||||
(freebsd_packages_base | default([]))
|
||||
+ (freebsd_development_packages | default([]))
|
||||
+ (
|
||||
(freebsd_desktop_common_packages | default([]))
|
||||
if 'graphical_desktop' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(freebsd_hyprland_packages | default([]))
|
||||
if 'desktop_hyprland' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(freebsd_niri_packages | default([]))
|
||||
if 'desktop_niri' in group_names
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(freebsd_lab_packages | default([]))
|
||||
if 'role_lab' in group_names
|
||||
else []
|
||||
)
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
|
||||
@@ -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
|
||||
@@ -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 (
|
||||
@@ -68,14 +60,6 @@
|
||||
)
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(desktop_hyprland_packages | default([]))
|
||||
if (
|
||||
(desktop_environment | default('minimal')) == 'minimal'
|
||||
and 'hyprland' in (desktop_sessions_enabled | default([]))
|
||||
)
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(desktop_niri_packages | default([]))
|
||||
if (
|
||||
@@ -95,14 +79,11 @@
|
||||
(
|
||||
(desktop_minimal_packages | default([]))
|
||||
+ (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 +99,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 +109,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 +120,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]
|
||||
|
||||
@@ -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
|
||||
@@ -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', '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]
|
||||
|
||||
@@ -19,20 +19,3 @@
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
- (host_sway_dotfiles | default([])) | length > 0
|
||||
|
||||
|
||||
- name: Copy host-specific Hyprland dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, dotfiles:host, hyprland]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/{{ hostname }}/{{ item.src }}"
|
||||
dest: "{{ user_home }}/{{ item.dest }}"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop: "{{ host_hyprland_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
- (host_hyprland_dotfiles | default([])) | length > 0
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[preferred]
|
||||
default=gtk
|
||||
org.freedesktop.impl.portal.Screenshot=hyprland
|
||||
org.freedesktop.impl.portal.ScreenCast=hyprland
|
||||
@@ -1,6 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Hyprland
|
||||
Comment=Hyprland (Wayland)
|
||||
Exec=/usr/local/bin/start-hyprland-session
|
||||
Type=Application
|
||||
DesktopNames=Hyprland
|
||||
@@ -1,92 +0,0 @@
|
||||
---
|
||||
- name: Ensure Hyprland config directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, hyprland]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config/alacritty"
|
||||
- "{{ user_home }}/.config/dunst"
|
||||
- "{{ user_home }}/.config/flameshot"
|
||||
- "{{ user_home }}/.config/foot"
|
||||
- "{{ user_home }}/.config/hypr"
|
||||
- "{{ user_home }}/.config/rofi"
|
||||
- "{{ user_home }}/.config/waybar"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Install allowed emptty Hyprland Wayland session
|
||||
tags: [packages, services, emptty, hyprland]
|
||||
ansible.builtin.copy:
|
||||
src: hyprland.desktop
|
||||
dest: /etc/emptty/wayland-sessions/hyprland.desktop
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Remove legacy Hyprland session launcher shadowing package binary
|
||||
tags: [packages, services, hyprland]
|
||||
ansible.builtin.file:
|
||||
path: /usr/local/bin/start-hyprland
|
||||
state: absent
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Install Hyprland session launcher in /usr/local/bin
|
||||
tags: [packages, services, hyprland]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.local/bin/start-hyprland-session"
|
||||
dest: /usr/local/bin/start-hyprland-session
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Ensure /etc/xdg/xdg-desktop-portal exists for Hyprland
|
||||
tags: [packages, services, hyprland, portal]
|
||||
ansible.builtin.file:
|
||||
path: /etc/xdg/xdg-desktop-portal
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Configure xdg-desktop-portal backend preferences for Hyprland
|
||||
tags: [packages, services, hyprland, portal]
|
||||
ansible.builtin.copy:
|
||||
src: hyprland-portals.conf
|
||||
dest: /etc/xdg/xdg-desktop-portal/hyprland-portals.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Copy Hyprland desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, hyprland]
|
||||
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_hyprland_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when:
|
||||
- (desktop_environment | default('minimal')) == 'minimal'
|
||||
- "'hyprland' in (desktop_sessions_enabled | default([]))"
|
||||
@@ -1,4 +0,0 @@
|
||||
[preferred]
|
||||
default=gtk
|
||||
org.freedesktop.impl.portal.Screenshot=hyprland
|
||||
org.freedesktop.impl.portal.ScreenCast=hyprland
|
||||
@@ -1,58 +0,0 @@
|
||||
---
|
||||
- name: Ensure FreeBSD Hyprland user config directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, hyprland]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config"
|
||||
- "{{ user_home }}/.config/alacritty"
|
||||
- "{{ user_home }}/.config/dunst"
|
||||
- "{{ user_home }}/.config/foot"
|
||||
- "{{ user_home }}/.config/hypr"
|
||||
- "{{ user_home }}/.config/rofi"
|
||||
- "{{ user_home }}/.config/waybar"
|
||||
- "{{ user_home }}/.local"
|
||||
- "{{ user_home }}/.local/bin"
|
||||
|
||||
- name: Copy common Hyprland desktop dotfiles on FreeBSD
|
||||
tags: [dotfiles, dotfiles:desktop, hyprland]
|
||||
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_hyprland_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
- name: Render FreeBSD Hyprland session launcher
|
||||
tags: [packages, services, hyprland]
|
||||
ansible.builtin.template:
|
||||
src: start-hyprland-session.j2
|
||||
dest: /usr/local/bin/start-hyprland-session
|
||||
owner: root
|
||||
group: wheel
|
||||
mode: "0755"
|
||||
|
||||
- name: Ensure FreeBSD xdg-desktop-portal config directory exists
|
||||
tags: [packages, services, hyprland, portal]
|
||||
ansible.builtin.file:
|
||||
path: "{{ freebsd_xdg_config_dir | default('/usr/local/etc/xdg') }}/xdg-desktop-portal"
|
||||
state: directory
|
||||
owner: root
|
||||
group: wheel
|
||||
mode: "0755"
|
||||
|
||||
- name: Configure xdg-desktop-portal backend preferences for FreeBSD Hyprland
|
||||
tags: [packages, services, hyprland, portal]
|
||||
ansible.builtin.copy:
|
||||
src: hyprland-portals.conf
|
||||
dest: "{{ freebsd_xdg_config_dir | default('/usr/local/etc/xdg') }}/xdg-desktop-portal/hyprland-portals.conf"
|
||||
owner: root
|
||||
group: wheel
|
||||
mode: "0644"
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -r /etc/profile ] && . /etc/profile
|
||||
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
||||
|
||||
export XDG_CURRENT_DESKTOP=Hyprland
|
||||
export XDG_SESSION_DESKTOP=Hyprland
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export QT_QPA_PLATFORM='wayland;xcb'
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
export GDK_BACKEND='wayland,x11'
|
||||
|
||||
export SSH_AUTH_SOCK="$HOME/.local/state/ssh-agent/socket"
|
||||
|
||||
[ -r "$HOME/.config/hypr/session-env" ] && . "$HOME/.config/hypr/session-env"
|
||||
|
||||
if command -v dbus-run-session >/dev/null 2>&1; then
|
||||
exec dbus-run-session Hyprland
|
||||
fi
|
||||
|
||||
exec Hyprland
|
||||
@@ -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
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
- name: Ensure FreeBSD Niri user config directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, niri]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config"
|
||||
- "{{ user_home }}/.config/dunst"
|
||||
- "{{ user_home }}/.config/foot"
|
||||
- "{{ user_home }}/.config/niri"
|
||||
- "{{ user_home }}/.config/rofi"
|
||||
- "{{ user_home }}/.config/waybar"
|
||||
- "{{ user_home }}/.local"
|
||||
- "{{ user_home }}/.local/bin"
|
||||
- "{{ user_home }}/.local/state"
|
||||
- "{{ user_home }}/.local/state/ssh-agent"
|
||||
|
||||
- name: Copy common Niri desktop dotfiles on FreeBSD
|
||||
tags: [dotfiles, dotfiles:desktop, niri]
|
||||
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_niri_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
- name: Render FreeBSD Niri session launcher
|
||||
tags: [packages, services, niri]
|
||||
ansible.builtin.template:
|
||||
src: start-niri-session.j2
|
||||
dest: /usr/local/bin/start-niri-session
|
||||
owner: root
|
||||
group: wheel
|
||||
mode: "0755"
|
||||
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -r /etc/profile ] && . /etc/profile
|
||||
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
||||
|
||||
export XDG_CURRENT_DESKTOP=niri
|
||||
export XDG_SESSION_DESKTOP=niri
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export QT_QPA_PLATFORM='wayland;xcb'
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
export GDK_BACKEND='wayland,x11'
|
||||
|
||||
export SSH_AUTH_SOCK="$HOME/.local/state/ssh-agent/socket"
|
||||
|
||||
[ -r "$HOME/.config/niri/session-env" ] && . "$HOME/.config/niri/session-env"
|
||||
|
||||
if command -v dbus-run-session >/dev/null 2>&1; then
|
||||
exec dbus-run-session niri --session
|
||||
fi
|
||||
|
||||
exec niri --session
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
[Seat:*]
|
||||
greeter-session=lightdm-gtk-greeter
|
||||
user-session=xfce
|
||||
@@ -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
|
||||
@@ -1,18 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,21 +0,0 @@
|
||||
<?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>
|
||||
@@ -1,20 +0,0 @@
|
||||
<?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>
|
||||
@@ -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 }}"
|
||||
@@ -1,20 +1,10 @@
|
||||
---
|
||||
- name: Configure FreeBSD rc.conf values
|
||||
tags: [services, packages]
|
||||
community.general.sysrc:
|
||||
name: "{{ item.name }}"
|
||||
value: "{{ item.value }}"
|
||||
state: present
|
||||
loop: "{{ freebsd_rc_conf | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
|
||||
- name: Enable FreeBSD rc services
|
||||
tags: [services, packages]
|
||||
ansible.builtin.service:
|
||||
name: "{{ item }}"
|
||||
enabled: true
|
||||
state: started
|
||||
loop: "{{ freebsd_enabled_services | default([]) + host_enabled_services | default([]) }}"
|
||||
loop: "{{ host_enabled_services | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -37,41 +37,9 @@
|
||||
roles:
|
||||
- profile_desktop_common
|
||||
- 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,20 +48,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
|
||||
|
||||
roles:
|
||||
- profile_desktop_niri_freebsd
|
||||
|
||||
- name: Configure Fedora platform
|
||||
hosts: platform_fedora
|
||||
become: true
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<actions>
|
||||
<action>
|
||||
<icon>utilities-terminal</icon>
|
||||
<name>Open Terminal Here</name>
|
||||
<submenu></submenu>
|
||||
<unique-id>xfce-open-terminal-here</unique-id>
|
||||
<command>xfce4-terminal --working-directory %f</command>
|
||||
<description>Open xfce4-terminal in this directory</description>
|
||||
<range></range>
|
||||
<patterns>*</patterns>
|
||||
<startup-notify/>
|
||||
<directories/>
|
||||
</action>
|
||||
</actions>
|
||||
@@ -1,3 +0,0 @@
|
||||
# Per-host Hyprland overrides. Empty by default; hosts that need tuning
|
||||
# ship their own version via host_hyprland_dotfiles, which overwrites this
|
||||
# placeholder during deploy.
|
||||
@@ -1,11 +0,0 @@
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock
|
||||
before_sleep_cmd = loginctl lock-session
|
||||
after_sleep_cmd = hyprctl dispatch dpms on
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300
|
||||
on-timeout = ~/.config/hypr/scripts/lock-and-dpms
|
||||
on-resume = hyprctl dispatch dpms on
|
||||
}
|
||||
@@ -1,227 +0,0 @@
|
||||
# Hyprland config, aligned with the Sway desktop profile.
|
||||
|
||||
$mod = SUPER
|
||||
$terminal = alacritty
|
||||
$browser = firefox
|
||||
|
||||
monitor = ,preferred,auto,1
|
||||
|
||||
env = XCURSOR_THEME,Yaru
|
||||
env = XCURSOR_SIZE,24
|
||||
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant = intl
|
||||
follow_mouse = 0
|
||||
}
|
||||
|
||||
cursor {
|
||||
no_hardware_cursors = false
|
||||
}
|
||||
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 20
|
||||
border_size = 3
|
||||
col.active_border = rgba(54d6ffff) rgba(1478ffff) 180deg
|
||||
col.inactive_border = rgba(f5e6b899) rgba(8a8f9acc) 180deg
|
||||
layout = master
|
||||
}
|
||||
|
||||
decoration {
|
||||
rounding = 8
|
||||
|
||||
blur {
|
||||
enabled = true
|
||||
size = 5
|
||||
passes = 1
|
||||
}
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
}
|
||||
|
||||
dim_inactive = true
|
||||
dim_strength = 0.1
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = true
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
animation = windows,1,2,easeOutQuint,popin 85%
|
||||
animation = border,1,2,easeOutQuint
|
||||
animation = fade,1,2,easeOutQuint
|
||||
animation = workspaces,1,2,easeOutQuint,slide
|
||||
animation = layers,1,2,easeOutQuint,fade
|
||||
}
|
||||
|
||||
master {
|
||||
new_status = slave
|
||||
orientation = left
|
||||
}
|
||||
|
||||
misc {
|
||||
disable_hyprland_logo = true
|
||||
disable_splash_rendering = true
|
||||
force_default_wallpaper = 0
|
||||
focus_on_activate = false
|
||||
}
|
||||
|
||||
xwayland {
|
||||
enabled = true
|
||||
}
|
||||
|
||||
# Per-host overrides (terminal wrapper, env, monitors, workspace rules, etc.).
|
||||
source = ~/.config/hypr/host.conf
|
||||
|
||||
# Window rules
|
||||
windowrule = float on, match:class (?i)(polkit)
|
||||
windowrule = float on, match:title ^Authentication Required$
|
||||
windowrule = float on, match:title ^Open File$
|
||||
windowrule = float on, match:title ^Save File$
|
||||
windowrule = float on, match:class (?i)(blueman-manager)
|
||||
windowrule = float on, match:class (?i)(nm-connection-editor)
|
||||
windowrule = float on, match:class (?i)(pinentry)
|
||||
windowrule = float on, match:class (?i)(firefox), match:title ^Library$
|
||||
windowrule = float on, match:class (?i)(firefox), match:title ^About Mozilla Firefox$
|
||||
windowrule = float on, match:class org.freedesktop.impl.portal.desktop.gtk
|
||||
windowrule = idle_inhibit fullscreen, match:fullscreen true
|
||||
windowrule = idle_inhibit focus, match:content 2
|
||||
|
||||
# Autostart — XDG and session services
|
||||
exec-once = dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP XDG_SESSION_TYPE XDG_SESSION_DESKTOP
|
||||
exec-once = env UPDATE_TURNSTILE_RESTART_EMACS=1 ~/.local/bin/update-turnstile-env
|
||||
exec-once = dex --autostart --environment Hyprland
|
||||
exec-once = gnome-keyring-daemon --start --components=secrets
|
||||
exec-once = ~/.local/bin/setup-gtk-theme
|
||||
exec-once = /usr/libexec/xdg-desktop-portal
|
||||
exec-once = /usr/libexec/xdg-desktop-portal-hyprland
|
||||
exec-once = /usr/libexec/xdg-desktop-portal-gtk
|
||||
|
||||
# Audio/session services
|
||||
exec-once = pipewire
|
||||
exec-once = pipewire-pulse
|
||||
exec-once = wireplumber
|
||||
|
||||
# Desktop services
|
||||
exec-once = hyprctl setcursor Yaru 24
|
||||
exec-once = hyprpaper
|
||||
exec-once = sleep 1 && waybar -c ~/.config/waybar/hyprland.jsonc -s ~/.config/waybar/hyprland-style.css
|
||||
exec-once = swayosd-server
|
||||
exec-once = dunst
|
||||
exec-once = hyprpolkitagent
|
||||
exec-once = nm-applet
|
||||
exec-once = blueman-applet
|
||||
exec-once = udiskie
|
||||
exec-once = hypridle
|
||||
|
||||
# Clipboard manager
|
||||
exec-once = wl-paste --type text --watch cliphist store
|
||||
exec-once = wl-paste --type image --watch cliphist store
|
||||
|
||||
# Applications
|
||||
bind = $mod, Return, exec, $terminal
|
||||
bind = $mod SHIFT, Return, exec, foot
|
||||
bind = $mod SHIFT, E, exec, emacsclient -c -n
|
||||
bind = $mod, D, exec, rofi -show drun -theme ~/.config/rofi/config.rasi
|
||||
bind = $mod, C, exec, cliphist list | rofi -dmenu -theme ~/.config/rofi/config.rasi | cliphist decode | wl-copy
|
||||
bind = $mod SHIFT, V, exec, pavucontrol
|
||||
bind = $mod SHIFT, F, exec, thunar
|
||||
bind = $mod SHIFT, D, exec, dunstctl set-paused toggle
|
||||
bind = $mod SHIFT, X, exec, ~/.config/hypr/scripts/lock-and-dpms
|
||||
bind = $mod SHIFT, Q, killactive
|
||||
|
||||
# Screenshots (Hyprland-native: grim/slurp/wl-copy; Flameshot is unstable here)
|
||||
bind = , Print, exec, ~/.config/hypr/scripts/screenshot region
|
||||
bind = SHIFT, Print, exec, ~/.config/hypr/scripts/screenshot full
|
||||
bind = ALT, Print, exec, ~/.config/hypr/scripts/screenshot output
|
||||
|
||||
# Focus
|
||||
bind = $mod, H, movefocus, l
|
||||
bind = $mod, J, movefocus, d
|
||||
bind = $mod, K, movefocus, u
|
||||
bind = $mod, L, movefocus, r
|
||||
bind = $mod, left, movefocus, l
|
||||
bind = $mod, down, movefocus, d
|
||||
bind = $mod, up, movefocus, u
|
||||
bind = $mod, right, movefocus, r
|
||||
|
||||
# Move windows
|
||||
bind = $mod SHIFT, H, movewindow, l
|
||||
bind = $mod SHIFT, J, movewindow, d
|
||||
bind = $mod SHIFT, K, movewindow, u
|
||||
bind = $mod SHIFT, L, movewindow, r
|
||||
bind = $mod SHIFT, left, movewindow, l
|
||||
bind = $mod SHIFT, down, movewindow, d
|
||||
bind = $mod SHIFT, up, movewindow, u
|
||||
bind = $mod SHIFT, right, movewindow, r
|
||||
|
||||
# Layouts / floating
|
||||
bind = $mod, F, fullscreen
|
||||
bind = $mod SHIFT, Space, togglefloating
|
||||
bind = $mod, Space, cyclenext
|
||||
bind = $mod, A, layoutmsg, swapwithmaster
|
||||
bindm = $mod, mouse:272, movewindow
|
||||
bindm = $mod, mouse:273, resizewindow
|
||||
|
||||
# Scratchpad-like special workspace
|
||||
bind = $mod SHIFT, minus, movetoworkspace, special
|
||||
bind = $mod, minus, togglespecialworkspace
|
||||
|
||||
# Volume / brightness / media
|
||||
bind = , XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise
|
||||
bind = , XF86AudioLowerVolume, exec, swayosd-client --output-volume lower
|
||||
bind = , XF86AudioMute, exec, swayosd-client --output-volume mute-toggle
|
||||
bind = , XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle
|
||||
bind = , XF86MonBrightnessUp, exec, swayosd-client --brightness raise
|
||||
bind = , XF86MonBrightnessDown, exec, swayosd-client --brightness lower
|
||||
bind = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bind = , XF86AudioNext, exec, playerctl next
|
||||
bind = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
# Workspaces
|
||||
bind = $mod, 1, workspace, 1
|
||||
bind = $mod, 2, workspace, 2
|
||||
bind = $mod, 3, workspace, 3
|
||||
bind = $mod, 4, workspace, 4
|
||||
bind = $mod, 5, workspace, 5
|
||||
bind = $mod, 6, workspace, 6
|
||||
bind = $mod, 7, workspace, 7
|
||||
bind = $mod, 8, workspace, 8
|
||||
bind = $mod, 9, workspace, 9
|
||||
bind = $mod, 0, workspace, 10
|
||||
bind = $mod, comma, exec, ~/.config/hypr/scripts/workspace-cycle prev
|
||||
bind = $mod, period, exec, ~/.config/hypr/scripts/workspace-cycle next
|
||||
|
||||
bind = $mod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Reload / exit
|
||||
bind = $mod SHIFT, C, exec, hyprctl reload
|
||||
bind = $mod SHIFT, R, exec, hyprctl reload
|
||||
bind = $mod SHIFT, BackSpace, exit
|
||||
bind = $mod SHIFT, Escape, exec, ~/.config/hypr/scripts/powermenu.sh
|
||||
|
||||
# Resize submap
|
||||
bind = $mod, R, submap, resize
|
||||
submap = resize
|
||||
bind = , H, resizeactive, -10 0
|
||||
bind = , J, resizeactive, 0 10
|
||||
bind = , K, resizeactive, 0 -10
|
||||
bind = , L, resizeactive, 10 0
|
||||
bind = , left, resizeactive, -10 0
|
||||
bind = , down, resizeactive, 0 10
|
||||
bind = , up, resizeactive, 0 -10
|
||||
bind = , right, resizeactive, 10 0
|
||||
bind = , Return, submap, reset
|
||||
bind = , Escape, submap, reset
|
||||
bind = $mod, R, submap, reset
|
||||
submap = reset
|
||||
@@ -1,98 +0,0 @@
|
||||
general {
|
||||
hide_cursor = true
|
||||
immediate_render = true
|
||||
fail_timeout = 1800
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
path = ~/.config/hypr/wallpapers/maxresdefault.jpg
|
||||
blur_passes = 1
|
||||
blur_size = 3
|
||||
brightness = 0.55
|
||||
contrast = 0.95
|
||||
vibrancy = 0.18
|
||||
vibrancy_darkness = 0.08
|
||||
}
|
||||
|
||||
shape {
|
||||
monitor =
|
||||
size = 560, 360
|
||||
color = rgba(06070dcc)
|
||||
rounding = 24
|
||||
border_size = 2
|
||||
border_color = rgba(f5c542ee)
|
||||
shadow_passes = 2
|
||||
shadow_size = 10
|
||||
shadow_color = rgba(00000099)
|
||||
position = 0, -5
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = rgba(f5c542ff)
|
||||
font_size = 78
|
||||
font_family = Noto Sans
|
||||
shadow_passes = 2
|
||||
shadow_size = 4
|
||||
shadow_color = rgba(000000cc)
|
||||
position = 0, 105
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:60000] date '+%A %d %B %Y'
|
||||
color = rgba(e6d3a3ee)
|
||||
font_size = 18
|
||||
font_family = Noto Sans
|
||||
shadow_passes = 1
|
||||
shadow_size = 3
|
||||
shadow_color = rgba(000000bb)
|
||||
position = 0, 20
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $USER
|
||||
color = rgba(d7d7d7ee)
|
||||
font_size = 16
|
||||
font_family = Noto Sans
|
||||
shadow_passes = 1
|
||||
shadow_size = 3
|
||||
shadow_color = rgba(000000bb)
|
||||
position = 0, -24
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 360, 54
|
||||
outline_thickness = 2
|
||||
dots_size = 0.25
|
||||
dots_spacing = 0.20
|
||||
dots_center = true
|
||||
rounding = -1
|
||||
outer_color = rgba(f5c542ee)
|
||||
inner_color = rgba(11131bdd)
|
||||
font_color = rgba(f5c542ff)
|
||||
check_color = rgba(4a90d9ff)
|
||||
fail_color = rgba(c7162bff)
|
||||
capslock_color = rgba(ffd166ff)
|
||||
placeholder_text = <i>Access code</i>
|
||||
fail_text = <i>Access denied <b>($ATTEMPTS)</b></i>
|
||||
fade_on_empty = false
|
||||
shadow_passes = 2
|
||||
shadow_size = 6
|
||||
shadow_color = rgba(000000aa)
|
||||
position = 0, -90
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
splash = false
|
||||
|
||||
wallpaper {
|
||||
monitor =
|
||||
path = ~/.config/hypr/wallpapers/geek-girl.jpg
|
||||
fit_mode = cover
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Lock the session, then power off outputs only if the lock is still active.
|
||||
|
||||
set -eu
|
||||
|
||||
lock_delay="${HYPRLOCK_DPMS_DELAY:-30}"
|
||||
|
||||
loginctl lock-session
|
||||
|
||||
(
|
||||
sleep "$lock_delay"
|
||||
pidof hyprlock >/dev/null 2>&1 || exit 0
|
||||
hyprctl dispatch dpms off
|
||||
) >/tmp/hyprlock-dpms.log 2>&1 &
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
choice="$(printf "⏻ Shutdown\n Reboot\n Logout\n Lock\n⏾ Suspend" \
|
||||
| rofi -dmenu \
|
||||
-i \
|
||||
-p "Power" \
|
||||
-theme ~/.config/rofi/config.rasi \
|
||||
-theme-str 'window { width: 20%; location: center; anchor: center; } listview { columns: 1; spacing: 6px; }')"
|
||||
|
||||
[ -z "$choice" ] && exit 0
|
||||
|
||||
case "$choice" in
|
||||
*Lock)
|
||||
hyprlock
|
||||
;;
|
||||
*Logout)
|
||||
hyprctl dispatch exit
|
||||
;;
|
||||
*Suspend)
|
||||
hyprlock &
|
||||
loginctl suspend
|
||||
;;
|
||||
*Reboot)
|
||||
loginctl reboot
|
||||
;;
|
||||
*Shutdown)
|
||||
loginctl poweroff
|
||||
;;
|
||||
esac
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Quick screenshot helpers for Hyprland. Captures via grim, saves to disk and
|
||||
# also copies to the Wayland clipboard. Use the flameshot binding for
|
||||
# annotations / fancy capture.
|
||||
#
|
||||
# Usage: screenshot {full|region|output|window}
|
||||
|
||||
set -eu
|
||||
|
||||
mode="${1:-full}"
|
||||
dir="$HOME/Pictures/Screenshots"
|
||||
mkdir -p "$dir"
|
||||
file="$dir/$(date +%Y%m%d_%H%M%S).png"
|
||||
|
||||
case "$mode" in
|
||||
full)
|
||||
grim "$file"
|
||||
;;
|
||||
region)
|
||||
grim -g "$(slurp)" "$file"
|
||||
;;
|
||||
output)
|
||||
out=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .name')
|
||||
grim -o "$out" "$file"
|
||||
;;
|
||||
window)
|
||||
geom=$(hyprctl activewindow -j \
|
||||
| jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')
|
||||
grim -g "$geom" "$file"
|
||||
;;
|
||||
*)
|
||||
printf 'Usage: %s {full|region|output|window}\n' "$0" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
wl-copy < "$file"
|
||||
notify-send "Screenshot saved" "$file" -i image-x-generic >/dev/null 2>&1 || true
|
||||
@@ -1,34 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Cycle Hyprland workspaces within the fixed 1..10 desktop set.
|
||||
|
||||
set -eu
|
||||
|
||||
direction="${1:-next}"
|
||||
current="$(hyprctl activeworkspace -j | jq -r '.id')"
|
||||
|
||||
case "$current" in
|
||||
''|*[!0-9-]*) current=1 ;;
|
||||
esac
|
||||
|
||||
case "$direction" in
|
||||
next)
|
||||
if [ "$current" -ge 10 ] || [ "$current" -lt 1 ]; then
|
||||
target=1
|
||||
else
|
||||
target=$((current + 1))
|
||||
fi
|
||||
;;
|
||||
prev)
|
||||
if [ "$current" -le 1 ] || [ "$current" -gt 10 ]; then
|
||||
target=10
|
||||
else
|
||||
target=$((current - 1))
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
printf 'Usage: %s {next|prev}\n' "$0" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exec hyprctl dispatch workspace "$target"
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 109 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 365 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 116 KiB |
@@ -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;
|
||||
@@ -1,121 +0,0 @@
|
||||
* {
|
||||
font-family: "NotoSans NF";
|
||||
font-size: 10pt;
|
||||
font-weight: 600;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(6, 7, 13, 0.82);
|
||||
color: #f2f4f8;
|
||||
border: 1px solid rgba(84, 214, 255, 0.55);
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0 4px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 8px;
|
||||
margin: 3px 2px;
|
||||
color: #c7ccd8;
|
||||
background-color: rgba(17, 19, 27, 0.72);
|
||||
border: 1px solid rgba(245, 230, 184, 0.18);
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
#workspaces button.visible {
|
||||
color: #f5e6b8;
|
||||
background-color: rgba(30, 34, 46, 0.92);
|
||||
border-color: rgba(245, 230, 184, 0.45);
|
||||
}
|
||||
|
||||
#workspaces button.active,
|
||||
#workspaces button.focused {
|
||||
color: #061018;
|
||||
background: linear-gradient(180deg, #54d6ff, #1478ff);
|
||||
border-color: #9eeaff;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #ffffff;
|
||||
background-color: #c7162b;
|
||||
border-color: #ff6b6b;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#temperature,
|
||||
#backlight,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#battery,
|
||||
#tray,
|
||||
#custom-dnd,
|
||||
#custom-power {
|
||||
padding: 0 8px;
|
||||
margin: 3px 2px;
|
||||
border-radius: 7px;
|
||||
background-color: rgba(17, 19, 27, 0.72);
|
||||
border: 1px solid rgba(245, 230, 184, 0.12);
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: #f5e6b8;
|
||||
border-color: rgba(245, 230, 184, 0.38);
|
||||
}
|
||||
|
||||
#cpu { color: #b28cff; }
|
||||
#memory { color: #54d6ff; }
|
||||
#disk { color: #b9f6ca; }
|
||||
#temperature { color: #ffd166; }
|
||||
#backlight { color: #f5e6b8; }
|
||||
#network { color: #54d6ff; }
|
||||
#pulseaudio { color: #9eeaff; }
|
||||
#battery { color: #f2f4f8; }
|
||||
|
||||
#network.disconnected,
|
||||
#pulseaudio.muted,
|
||||
#custom-dnd {
|
||||
color: #8a8f9a;
|
||||
}
|
||||
|
||||
#battery.charging,
|
||||
#battery.full {
|
||||
color: #36ff73;
|
||||
}
|
||||
|
||||
#battery.warning,
|
||||
#custom-dnd.paused {
|
||||
color: #ffd166;
|
||||
border-color: rgba(255, 209, 102, 0.45);
|
||||
}
|
||||
|
||||
#battery.critical,
|
||||
#temperature.critical {
|
||||
color: #ff6b6b;
|
||||
border-color: rgba(199, 22, 43, 0.75);
|
||||
}
|
||||
|
||||
#tray {
|
||||
padding: 0 6px;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
color: #ff4d5d;
|
||||
padding: 0 10px;
|
||||
font-size: 12pt;
|
||||
border-color: rgba(199, 22, 43, 0.40);
|
||||
}
|
||||
|
||||
#custom-dnd:hover,
|
||||
#custom-power:hover,
|
||||
#clock:hover,
|
||||
#network:hover,
|
||||
#pulseaudio:hover {
|
||||
background-color: rgba(84, 214, 255, 0.16);
|
||||
border-color: rgba(84, 214, 255, 0.62);
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 26,
|
||||
"spacing": 4,
|
||||
|
||||
"modules-left": ["hyprland/workspaces"],
|
||||
"modules-center": [],
|
||||
"modules-right": ["cpu", "memory", "disk", "temperature", "backlight", "network", "pulseaudio", "battery", "tray", "clock", "custom/dnd", "custom/power"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": false,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "I",
|
||||
"2": "II",
|
||||
"3": "III",
|
||||
"4": "IV",
|
||||
"5": "V",
|
||||
"6": "VI",
|
||||
"7": "VII",
|
||||
"8": "VIII",
|
||||
"9": "IX",
|
||||
"10": "X"
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
}
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"interval": 60,
|
||||
"format": "{:%Y-%m-%d %H:%M}",
|
||||
"tooltip-format": "<tt>{calendar}</tt>"
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": " {usage}%"
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 10,
|
||||
"format": " {used:0.1f}G / {total:0.1f}G"
|
||||
},
|
||||
|
||||
"disk": {
|
||||
"interval": 60,
|
||||
"path": "/",
|
||||
"format": " {used} / {total}"
|
||||
},
|
||||
|
||||
"temperature": {
|
||||
"interval": 10,
|
||||
"critical-threshold": 80,
|
||||
"format": " {temperatureC}°C",
|
||||
"format-critical": " {temperatureC}°C"
|
||||
},
|
||||
|
||||
"backlight": {
|
||||
"format": " {percent}%",
|
||||
"on-scroll-up": "brightnessctl set +5%",
|
||||
"on-scroll-down": "brightnessctl set 5%-"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"interval": 5,
|
||||
"format-wifi": " {essid} {signalStrength}%",
|
||||
"format-ethernet": " {ifname}",
|
||||
"format-disconnected": " offline",
|
||||
"tooltip-format": "{ifname} {ipaddr}"
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-muted": " muted",
|
||||
"format-bluetooth": "{icon} {volume}% ",
|
||||
"format-icons": { "default": ["", "", ""] },
|
||||
"on-click": "swayosd-client --output-volume mute-toggle",
|
||||
"on-click-right": "pavucontrol"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"bat": "BAT0",
|
||||
"interval": 30,
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-full": " full",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"spacing": 6
|
||||
},
|
||||
|
||||
"custom/dnd": {
|
||||
"exec": "dunstctl is-paused | grep -q true && echo '{\"text\":\"\",\"class\":\"paused\"}' || echo '{\"text\":\"\",\"class\":\"\"}'",
|
||||
"return-type": "json",
|
||||
"interval": 2,
|
||||
"on-click": "dunstctl set-paused toggle",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/power": {
|
||||
"format": "⏻",
|
||||
"tooltip": false,
|
||||
"on-click": "~/.config/hypr/scripts/powermenu.sh"
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-keyboard-shortcuts" version="1.0">
|
||||
<property name="commands" type="empty">
|
||||
<property name="custom" type="empty">
|
||||
<property name="<Super>Return" type="string" value="xfce4-terminal"/>
|
||||
<property name="<Super>b" type="string" value="firefox"/>
|
||||
<property name="<Super>e" type="string" value="emacsclient -c -a emacs"/>
|
||||
<property name="<Super>m" type="string" value="flatpak run org.mozilla.Thunderbird"/>
|
||||
<property name="<Super>d" type="string" value="xfce4-appfinder"/>
|
||||
<property name="<Super>l" type="string" value="xflock4"/>
|
||||
<property name="Print" type="string" value="xfce4-screenshooter"/>
|
||||
</property>
|
||||
</property>
|
||||
<property name="xfwm4" type="empty">
|
||||
<property name="custom" type="empty">
|
||||
<property name="<Super>q" type="string" value="close_window_key"/>
|
||||
<property name="<Super>f" type="string" value="fullscreen_key"/>
|
||||
<property name="<Super>1" type="string" value="workspace_1_key"/>
|
||||
<property name="<Super>2" type="string" value="workspace_2_key"/>
|
||||
<property name="<Super>3" type="string" value="workspace_3_key"/>
|
||||
<property name="<Super>4" type="string" value="workspace_4_key"/>
|
||||
<property name="<Super>5" type="string" value="workspace_5_key"/>
|
||||
<property name="<Super>6" type="string" value="workspace_6_key"/>
|
||||
<property name="<Shift><Super>1" type="string" value="move_window_workspace_1_key"/>
|
||||
<property name="<Shift><Super>2" type="string" value="move_window_workspace_2_key"/>
|
||||
<property name="<Shift><Super>3" type="string" value="move_window_workspace_3_key"/>
|
||||
<property name="<Shift><Super>4" type="string" value="move_window_workspace_4_key"/>
|
||||
<property name="<Shift><Super>5" type="string" value="move_window_workspace_5_key"/>
|
||||
<property name="<Shift><Super>6" type="string" value="move_window_workspace_6_key"/>
|
||||
</property>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-notifyd" version="1.0">
|
||||
<property name="do-not-disturb" type="bool" value="false"/>
|
||||
<property name="expire-timeout" type="int" value="10"/>
|
||||
<property name="initial-opacity" type="double" value="0.92"/>
|
||||
<property name="notification-log" type="bool" value="true"/>
|
||||
<property name="notify-location" type="uint" value="2"/>
|
||||
<property name="primary-monitor" type="uint" value="0"/>
|
||||
<property name="theme" type="string" value="Default"/>
|
||||
</channel>
|
||||
@@ -1,57 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-panel" version="1.0">
|
||||
<property name="configver" type="int" value="2"/>
|
||||
<property name="panels" type="array">
|
||||
<value type="int" value="1"/>
|
||||
<property name="dark-mode" type="bool" value="true"/>
|
||||
<property name="panel-1" type="empty">
|
||||
<property name="position" type="string" value="p=6;x=0;y=0"/>
|
||||
<property name="position-locked" type="bool" value="true"/>
|
||||
<property name="size" type="uint" value="28"/>
|
||||
<property name="length" type="uint" value="100"/>
|
||||
<property name="length-adjust" type="bool" value="true"/>
|
||||
<property name="mode" type="uint" value="0"/>
|
||||
<property name="autohide-behavior" type="uint" value="0"/>
|
||||
<property name="background-style" type="uint" value="0"/>
|
||||
<property name="plugin-ids" type="array">
|
||||
<value type="int" value="1"/>
|
||||
<value type="int" value="2"/>
|
||||
<value type="int" value="3"/>
|
||||
<value type="int" value="4"/>
|
||||
<value type="int" value="5"/>
|
||||
<value type="int" value="6"/>
|
||||
<value type="int" value="7"/>
|
||||
<value type="int" value="8"/>
|
||||
</property>
|
||||
</property>
|
||||
</property>
|
||||
<property name="plugins" type="empty">
|
||||
<property name="plugin-1" type="string" value="whiskermenu"/>
|
||||
<property name="plugin-2" type="string" value="pager">
|
||||
<property name="rows" type="uint" value="1"/>
|
||||
<property name="miniature-view" type="bool" value="false"/>
|
||||
</property>
|
||||
<property name="plugin-3" type="string" value="tasklist">
|
||||
<property name="grouping" type="uint" value="0"/>
|
||||
<property name="show-handle" type="bool" value="false"/>
|
||||
<property name="show-labels" type="bool" value="true"/>
|
||||
</property>
|
||||
<property name="plugin-4" type="string" value="separator">
|
||||
<property name="expand" type="bool" value="true"/>
|
||||
<property name="style" type="uint" value="0"/>
|
||||
</property>
|
||||
<property name="plugin-5" type="string" value="systray">
|
||||
<property name="square-icons" type="bool" value="true"/>
|
||||
</property>
|
||||
<property name="plugin-6" type="string" value="clipman"/>
|
||||
<property name="plugin-7" type="string" value="pulseaudio">
|
||||
<property name="enable-keyboard-shortcuts" type="bool" value="true"/>
|
||||
</property>
|
||||
<property name="plugin-8" type="string" value="clock">
|
||||
<property name="mode" type="uint" value="2"/>
|
||||
<property name="digital-format" type="string" value="%a %d %b %H:%M"/>
|
||||
<property name="tooltip-format" type="string" value="%A %d %B %Y"/>
|
||||
</property>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-power-manager" version="1.0">
|
||||
<property name="xfce4-power-manager" type="empty">
|
||||
<property name="show-tray-icon" type="bool" value="true"/>
|
||||
<property name="lock-screen-suspend-hibernate" type="bool" value="true"/>
|
||||
<property name="logind-handle-lid-switch" type="bool" value="true"/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<channel name="xfce4-session" version="1.0">
|
||||
<property name="general" type="empty">
|
||||
<property name="SaveOnExit" type="bool" value="false"/>
|
||||
<property name="PromptOnLogout" type="bool" value="true"/>
|
||||
<property name="LockCommand" type="string" value="xflock4"/>
|
||||
</property>
|
||||
<property name="splash" type="empty">
|
||||
<property name="Engine" type="string" value=""/>
|
||||
</property>
|
||||
</channel>
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -r /etc/profile ] && . /etc/profile
|
||||
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
||||
|
||||
export XDG_CURRENT_DESKTOP=Hyprland
|
||||
export XDG_SESSION_DESKTOP=Hyprland
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export QT_QPA_PLATFORM='wayland;xcb'
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
export GDK_BACKEND='wayland,x11'
|
||||
|
||||
export SSH_AUTH_SOCK="$HOME/.local/state/ssh-agent/socket"
|
||||
|
||||
# Per-host session environment (GPU / Wayland tuning, etc.)
|
||||
[ -r "$HOME/.config/hypr/session-env" ] && . "$HOME/.config/hypr/session-env"
|
||||
|
||||
exec dbus-run-session sh -eu -c '
|
||||
umask 077
|
||||
printf "%s\n" "$DBUS_SESSION_BUS_ADDRESS" > "$HOME/.dbus-session-bus-address"
|
||||
gpgconf --launch gpg-agent
|
||||
"$HOME/.local/bin/update-turnstile-env"
|
||||
exec /usr/bin/start-hyprland
|
||||
'
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1920" height="1080" viewBox="0 0 1920 1080">
|
||||
<rect width="1920" height="1080" fill="#050505"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 190 B |
@@ -1,24 +0,0 @@
|
||||
$terminal = ~/.local/bin/prime-run /usr/bin/alacritty
|
||||
|
||||
# Prefer the integrated panel as primary, and place the docked display to its right.
|
||||
monitor = eDP-1,1920x1080,0x0,1
|
||||
monitor = DP-1,3440x1440@100,1920x0,1
|
||||
monitor = DP-2,disable
|
||||
monitor = HDMI-A-1,disable
|
||||
monitor = HDMI-A-2,disable
|
||||
|
||||
workspace = 1, monitor:eDP-1
|
||||
workspace = 2, monitor:DP-1
|
||||
workspace = 3, monitor:DP-1
|
||||
workspace = 4, monitor:DP-1
|
||||
workspace = 5, monitor:DP-1
|
||||
workspace = 6, monitor:DP-1
|
||||
workspace = 7, monitor:DP-1
|
||||
workspace = 8, monitor:DP-1
|
||||
workspace = 9, monitor:DP-1
|
||||
workspace = 10, monitor:DP-1
|
||||
|
||||
env = LIBVA_DRIVER_NAME,iHD
|
||||
env = QT_QPA_PLATFORM,wayland;xcb
|
||||
env = WLR_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1
|
||||
env = WLR_NO_HARDWARE_CURSORS,1
|
||||
@@ -1,4 +0,0 @@
|
||||
export LIBVA_DRIVER_NAME=iHD
|
||||
export QT_QPA_PLATFORM='wayland;xcb'
|
||||
export WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
Reference in New Issue
Block a user