diff --git a/AGENTS.md b/AGENTS.md index cd758fa..9dba229 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -54,19 +54,17 @@ Ansible-driven personal infrastructure repo for Fedora and Void desktops, FreeBS - 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`, and `desktop_niri`. Keep platform-specific session bootstrap in platform-specific roles. -- `desktop_environment` is fixed to `minimal` for Void desktops. `profile_desktop_common` owns shared Void bootstrap; `profile_desktop_sway`, `profile_desktop_hyprland`, and `profile_desktop_niri` manage the enabled sessions, while `profile_desktop_gnome` copies shared desktop dotfiles for Fedora/GNOME without managing GNOME settings. `desktop_sessions_enabled` and `desktop_default_session` apply to the minimal mode. +- `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 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. @@ -76,7 +74,7 @@ The Void desktop package lists in `ansible/inventory/group_vars/void.yml` are ke - `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 the minimal desktop mode. - `desktop_minimal_packages` — applications, integration components, and the `emptty` display manager. -- `desktop_sway_packages` / `desktop_hyprland_packages` — binaries specific to each session. Cross-WM packages used by both (such as `dunst`, `rofi`, and `foot`) are intentionally duplicated in the two lists. +- `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 and `desktop_minimal_dotfiles` carries Thunar, Udiskie, and MIME defaults. `desktop_void_dotfiles` remains reserved for files that need the Void runtime. diff --git a/CLAUDE.md b/CLAUDE.md index 33c1570..3e92daf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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). diff --git a/README.md b/README.md index 4a92fc3..8b7fd01 100644 --- a/README.md +++ b/README.md @@ -106,19 +106,19 @@ 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` -- `emptty` con default host-specific in modalita `minimal`, con session file Wayland esposti per `sway` e `hyprland` +- `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 - `desktop_minimal_packages` per applicazioni GTK e `emptty` - - `desktop_sway_packages` e `desktop_hyprland_packages` per i binari specifici di ciascuna sessione + - `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 -- multi-monitor Void: sotto sway è gestito da `kanshi`; sotto Hyprland gli override monitor vivono in `host_hyprland_dotfiles` +- multi-monitor Void: sotto Sway è gestito da `kanshi` --- @@ -244,7 +244,7 @@ Questo approccio consente di: - applicare override specifici per host - evitare duplicazioni - riutilizzare il profilo Void corrente su un host futuro assegnandolo a - `platform_void + graphical_desktop + desktop_hyprland` + `platform_void + graphical_desktop + desktop_sway` --- @@ -265,9 +265,7 @@ I principali ruoli attualmente presenti sono: | 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_host | override desktop specifici per host | | profile_personal_workstation | layer stabile per workstation personale | | profile_workstation_dev_common | configurazione dev workstation condivisa | @@ -286,9 +284,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_host +platform_void & graphical_desktop -> profile_desktop_common + profile_desktop_sway + profile_desktop_niri + profile_desktop_host platform_freebsd -> packages_freebsd + services_freebsd -platform_freebsd & desktop_niri -> profile_desktop_niri_freebsd platform_fedora -> packages_fedora + services_systemd platform_fedora & role_personal_workstation -> profile_personal_workstation platform_fedora & desktop_gnome -> profile_desktop_gnome @@ -431,7 +428,7 @@ Allo stato attuale `ansible/site.yml` espone questi tag: | `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: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 | @@ -439,8 +436,7 @@ Allo stato attuale `ansible/site.yml` espone questi tag: | `display-manager` | gestione del display manager `emptty` | desktop Void | | `gnome` | configurazione host GNOME | Fedora/GNOME desktop, workstation host Linux future | | `sway` | sessione/configurazione sway / SwayFX (Wayland) | desktop Void | -| `hyprland` | sessione/configurazione Hyprland (Wayland) | desktop Void | -| `niri` | sessione/configurazione Niri (Wayland) | Void o FreeBSD con `desktop_niri` | +| `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 | @@ -475,7 +471,7 @@ 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 desktop, per esempio `desktop_hyprland`; +3. scegliere il desktop, per esempio `desktop_sway`; 4. lasciare eventuali dettagli hardware in `host_vars/.yml`. I gruppi legacy `void` e `desktop` sono parent di compatibilita, quindi un host diff --git a/ansible/inventory/examples/platform-test-hosts.yml b/ansible/inventory/examples/platform-test-hosts.yml index 73f8dd6..343a492 100644 --- a/ansible/inventory/examples/platform-test-hosts.yml +++ b/ansible/inventory/examples/platform-test-hosts.yml @@ -6,11 +6,3 @@ all: hosts: freebsdtest: ansible_connection: local - - graphical_desktop: - hosts: - freebsdtest: - - desktop_niri: - hosts: - freebsdtest: diff --git a/ansible/inventory/group_vars/desktop.yml b/ansible/inventory/group_vars/desktop.yml index d68aace..0cad24d 100644 --- a/ansible/inventory/group_vars/desktop.yml +++ b/ansible/inventory/group_vars/desktop.yml @@ -3,9 +3,8 @@ desktop_environment: minimal desktop_sessions_enabled: - sway - - hyprland -desktop_default_session: hyprland +desktop_default_session: sway desktop_default_session_env: wayland desktop_prompt_for_session: true @@ -150,7 +149,6 @@ desktop_minimal_managed_paths: - .config/flameshot - .config/foot - .config/gtklock - - .config/hypr - .config/kanshi - .config/rofi - .config/sway @@ -207,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/ diff --git a/ansible/inventory/group_vars/desktop_hyprland.yml b/ansible/inventory/group_vars/desktop_hyprland.yml deleted file mode 100644 index 6fd1bb5..0000000 --- a/ansible/inventory/group_vars/desktop_hyprland.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -desktop_profile: hyprland -desktop_default_session: hyprland diff --git a/ansible/inventory/group_vars/platform_freebsd.yml b/ansible/inventory/group_vars/platform_freebsd.yml index e53f75d..bc108c6 100644 --- a/ansible/inventory/group_vars/platform_freebsd.yml +++ b/ansible/inventory/group_vars/platform_freebsd.yml @@ -53,63 +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_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 diff --git a/ansible/inventory/group_vars/void.yml b/ansible/inventory/group_vars/void.yml index ba7a4f0..fa8e098 100644 --- a/ansible/inventory/group_vars/void.yml +++ b/ansible/inventory/group_vars/void.yml @@ -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 @@ -162,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 diff --git a/ansible/inventory/hosts.yml b/ansible/inventory/hosts.yml index 6f6faf8..9f7c55d 100644 --- a/ansible/inventory/hosts.yml +++ b/ansible/inventory/hosts.yml @@ -41,9 +41,6 @@ all: desktop_sway: hosts: {} - desktop_hyprland: - hosts: {} - desktop_niri: hosts: {} diff --git a/ansible/roles/packages_freebsd/tasks/main.yml b/ansible/roles/packages_freebsd/tasks/main.yml index feb2637..f2dd998 100644 --- a/ansible/roles/packages_freebsd/tasks/main.yml +++ b/ansible/roles/packages_freebsd/tasks/main.yml @@ -7,21 +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 [] - ) + (host_packages | default([])) ) | unique diff --git a/ansible/roles/packages_void/tasks/main.yml b/ansible/roles/packages_void/tasks/main.yml index 8ada641..9f11531 100644 --- a/ansible/roles/packages_void/tasks/main.yml +++ b/ansible/roles/packages_void/tasks/main.yml @@ -60,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 ( @@ -87,7 +79,6 @@ ( (desktop_minimal_packages | default([])) + (desktop_sway_packages | default([])) - + (desktop_hyprland_packages | default([])) + (desktop_niri_packages | default([])) ) | unique diff --git a/ansible/roles/profile_desktop_common/tasks/main.yml b/ansible/roles/profile_desktop_common/tasks/main.yml index 9043c60..1bdf34a 100644 --- a/ansible/roles/profile_desktop_common/tasks/main.yml +++ b/ansible/roles/profile_desktop_common/tasks/main.yml @@ -5,7 +5,7 @@ that: - (desktop_environment | default('minimal')) == 'minimal' - (desktop_sessions_enabled | default([]) | length > 0) - - (desktop_sessions_enabled | default([]) | difference(['sway', 'hyprland', 'niri']) | 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. Minimal desktops also require diff --git a/ansible/roles/profile_desktop_host/tasks/main.yml b/ansible/roles/profile_desktop_host/tasks/main.yml index 7c7488a..b58cf95 100644 --- a/ansible/roles/profile_desktop_host/tasks/main.yml +++ b/ansible/roles/profile_desktop_host/tasks/main.yml @@ -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 diff --git a/ansible/roles/profile_desktop_hyprland/files/hyprland-portals.conf b/ansible/roles/profile_desktop_hyprland/files/hyprland-portals.conf deleted file mode 100644 index 9ba090c..0000000 --- a/ansible/roles/profile_desktop_hyprland/files/hyprland-portals.conf +++ /dev/null @@ -1,4 +0,0 @@ -[preferred] -default=gtk -org.freedesktop.impl.portal.Screenshot=hyprland -org.freedesktop.impl.portal.ScreenCast=hyprland diff --git a/ansible/roles/profile_desktop_hyprland/files/hyprland.desktop b/ansible/roles/profile_desktop_hyprland/files/hyprland.desktop deleted file mode 100644 index c48504b..0000000 --- a/ansible/roles/profile_desktop_hyprland/files/hyprland.desktop +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Name=Hyprland -Comment=Hyprland (Wayland) -Exec=/usr/local/bin/start-hyprland-session -Type=Application -DesktopNames=Hyprland diff --git a/ansible/roles/profile_desktop_hyprland/tasks/main.yml b/ansible/roles/profile_desktop_hyprland/tasks/main.yml deleted file mode 100644 index 1df1a99..0000000 --- a/ansible/roles/profile_desktop_hyprland/tasks/main.yml +++ /dev/null @@ -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([]))" diff --git a/ansible/roles/profile_desktop_hyprland_freebsd/files/hyprland-portals.conf b/ansible/roles/profile_desktop_hyprland_freebsd/files/hyprland-portals.conf deleted file mode 100644 index 9ba090c..0000000 --- a/ansible/roles/profile_desktop_hyprland_freebsd/files/hyprland-portals.conf +++ /dev/null @@ -1,4 +0,0 @@ -[preferred] -default=gtk -org.freedesktop.impl.portal.Screenshot=hyprland -org.freedesktop.impl.portal.ScreenCast=hyprland diff --git a/ansible/roles/profile_desktop_hyprland_freebsd/tasks/main.yml b/ansible/roles/profile_desktop_hyprland_freebsd/tasks/main.yml deleted file mode 100644 index 842dc31..0000000 --- a/ansible/roles/profile_desktop_hyprland_freebsd/tasks/main.yml +++ /dev/null @@ -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" diff --git a/ansible/roles/profile_desktop_hyprland_freebsd/templates/start-hyprland-session.j2 b/ansible/roles/profile_desktop_hyprland_freebsd/templates/start-hyprland-session.j2 deleted file mode 100644 index 7653ad0..0000000 --- a/ansible/roles/profile_desktop_hyprland_freebsd/templates/start-hyprland-session.j2 +++ /dev/null @@ -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 diff --git a/ansible/roles/profile_desktop_niri_freebsd/tasks/main.yml b/ansible/roles/profile_desktop_niri_freebsd/tasks/main.yml deleted file mode 100644 index 51d1f58..0000000 --- a/ansible/roles/profile_desktop_niri_freebsd/tasks/main.yml +++ /dev/null @@ -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" diff --git a/ansible/roles/profile_desktop_niri_freebsd/templates/start-niri-session.j2 b/ansible/roles/profile_desktop_niri_freebsd/templates/start-niri-session.j2 deleted file mode 100644 index 2101951..0000000 --- a/ansible/roles/profile_desktop_niri_freebsd/templates/start-niri-session.j2 +++ /dev/null @@ -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 diff --git a/ansible/roles/services_freebsd/tasks/main.yml b/ansible/roles/services_freebsd/tasks/main.yml index 36b5aef..5105930 100644 --- a/ansible/roles/services_freebsd/tasks/main.yml +++ b/ansible/roles/services_freebsd/tasks/main.yml @@ -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 }}" diff --git a/ansible/site.yml b/ansible/site.yml index 34a1105..9c8f2a5 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -37,7 +37,6 @@ roles: - profile_desktop_common - profile_desktop_sway - - profile_desktop_hyprland - profile_desktop_niri - profile_desktop_host @@ -49,13 +48,6 @@ - packages_freebsd - services_freebsd -- 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 diff --git a/dotfiles/desktop/.config/hypr/host.conf b/dotfiles/desktop/.config/hypr/host.conf deleted file mode 100644 index f31af54..0000000 --- a/dotfiles/desktop/.config/hypr/host.conf +++ /dev/null @@ -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. diff --git a/dotfiles/desktop/.config/hypr/hypridle.conf b/dotfiles/desktop/.config/hypr/hypridle.conf deleted file mode 100644 index 0506cb0..0000000 --- a/dotfiles/desktop/.config/hypr/hypridle.conf +++ /dev/null @@ -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 -} diff --git a/dotfiles/desktop/.config/hypr/hyprland.conf b/dotfiles/desktop/.config/hypr/hyprland.conf deleted file mode 100644 index 482dc7b..0000000 --- a/dotfiles/desktop/.config/hypr/hyprland.conf +++ /dev/null @@ -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 diff --git a/dotfiles/desktop/.config/hypr/hyprlock.conf b/dotfiles/desktop/.config/hypr/hyprlock.conf deleted file mode 100644 index d708a99..0000000 --- a/dotfiles/desktop/.config/hypr/hyprlock.conf +++ /dev/null @@ -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 = Access code - fail_text = Access denied ($ATTEMPTS) - fade_on_empty = false - shadow_passes = 2 - shadow_size = 6 - shadow_color = rgba(000000aa) - position = 0, -90 - halign = center - valign = center -} diff --git a/dotfiles/desktop/.config/hypr/hyprpaper.conf b/dotfiles/desktop/.config/hypr/hyprpaper.conf deleted file mode 100644 index 7e8479a..0000000 --- a/dotfiles/desktop/.config/hypr/hyprpaper.conf +++ /dev/null @@ -1,7 +0,0 @@ -splash = false - -wallpaper { - monitor = - path = ~/.config/hypr/wallpapers/geek-girl.jpg - fit_mode = cover -} diff --git a/dotfiles/desktop/.config/hypr/scripts/lock-and-dpms b/dotfiles/desktop/.config/hypr/scripts/lock-and-dpms deleted file mode 100755 index 94a58ee..0000000 --- a/dotfiles/desktop/.config/hypr/scripts/lock-and-dpms +++ /dev/null @@ -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 & diff --git a/dotfiles/desktop/.config/hypr/scripts/powermenu.sh b/dotfiles/desktop/.config/hypr/scripts/powermenu.sh deleted file mode 100755 index 98223d7..0000000 --- a/dotfiles/desktop/.config/hypr/scripts/powermenu.sh +++ /dev/null @@ -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 diff --git a/dotfiles/desktop/.config/hypr/scripts/screenshot b/dotfiles/desktop/.config/hypr/scripts/screenshot deleted file mode 100755 index 209380f..0000000 --- a/dotfiles/desktop/.config/hypr/scripts/screenshot +++ /dev/null @@ -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 diff --git a/dotfiles/desktop/.config/hypr/scripts/workspace-cycle b/dotfiles/desktop/.config/hypr/scripts/workspace-cycle deleted file mode 100755 index fc41400..0000000 --- a/dotfiles/desktop/.config/hypr/scripts/workspace-cycle +++ /dev/null @@ -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" diff --git a/dotfiles/desktop/.config/hypr/wallpapers/darth-vader-sam.jpg b/dotfiles/desktop/.config/hypr/wallpapers/darth-vader-sam.jpg deleted file mode 100755 index 22b3f3d..0000000 Binary files a/dotfiles/desktop/.config/hypr/wallpapers/darth-vader-sam.jpg and /dev/null differ diff --git a/dotfiles/desktop/.config/hypr/wallpapers/geek-girl.jpg b/dotfiles/desktop/.config/hypr/wallpapers/geek-girl.jpg deleted file mode 100755 index bf5c2c6..0000000 Binary files a/dotfiles/desktop/.config/hypr/wallpapers/geek-girl.jpg and /dev/null differ diff --git a/dotfiles/desktop/.config/hypr/wallpapers/maxresdefault.jpg b/dotfiles/desktop/.config/hypr/wallpapers/maxresdefault.jpg deleted file mode 100755 index b0da946..0000000 Binary files a/dotfiles/desktop/.config/hypr/wallpapers/maxresdefault.jpg and /dev/null differ diff --git a/dotfiles/desktop/.config/waybar/hyprland-style.css b/dotfiles/desktop/.config/waybar/hyprland-style.css deleted file mode 100644 index eb647ef..0000000 --- a/dotfiles/desktop/.config/waybar/hyprland-style.css +++ /dev/null @@ -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); -} diff --git a/dotfiles/desktop/.config/waybar/hyprland.jsonc b/dotfiles/desktop/.config/waybar/hyprland.jsonc deleted file mode 100644 index b8abce5..0000000 --- a/dotfiles/desktop/.config/waybar/hyprland.jsonc +++ /dev/null @@ -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": "{calendar}" - }, - - "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" - } -} diff --git a/dotfiles/desktop/.local/bin/start-hyprland-session b/dotfiles/desktop/.local/bin/start-hyprland-session deleted file mode 100755 index 9b1dcbd..0000000 --- a/dotfiles/desktop/.local/bin/start-hyprland-session +++ /dev/null @@ -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 -' diff --git a/dotfiles/nymph/.config/hypr/host.conf b/dotfiles/nymph/.config/hypr/host.conf deleted file mode 100644 index 2ba43a2..0000000 --- a/dotfiles/nymph/.config/hypr/host.conf +++ /dev/null @@ -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 diff --git a/dotfiles/nymph/.config/hypr/session-env b/dotfiles/nymph/.config/hypr/session-env deleted file mode 100644 index bf3fda7..0000000 --- a/dotfiles/nymph/.config/hypr/session-env +++ /dev/null @@ -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