mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 15:39:58 +00:00
Compare commits
14 Commits
e7570d3bd3
...
712face3f3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
712face3f3 | ||
|
|
1763a309ef | ||
|
|
4854b1ae11 | ||
|
|
5a3d32cb0e | ||
|
|
fd07d6ad1f | ||
|
|
bff3d542ef | ||
|
|
e9466b24cc | ||
|
|
8e54448943 | ||
|
|
a755920fcf | ||
|
|
43619b714f | ||
|
|
ef65841030 | ||
|
|
8dea4ec07d | ||
|
|
36a8762e4d | ||
|
|
ac0d779f0f |
@@ -1,7 +1,16 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(xargs ls -la)"
|
||||
"Bash(xargs ls -la)",
|
||||
"Bash(command -v pacman)",
|
||||
"Bash(command -v paclist)",
|
||||
"Bash(command -v pacinfo)",
|
||||
"Bash(git -C /home/fscotto/AnsiblePlaybook add ansible/inventory/group_vars/arch.yml ansible/roles/services_systemd/tasks/main.yml)",
|
||||
"Bash(git -C /home/fscotto/AnsiblePlaybook commit -m ' *)",
|
||||
"Bash(git -C /home/fscotto/AnsiblePlaybook diff --stat)",
|
||||
"Bash(git -C /home/fscotto/AnsiblePlaybook status --short)",
|
||||
"Bash(git -C /home/fscotto/AnsiblePlaybook log --oneline --all -- ansible/inventory/host_vars/nymph.yml ansible/roles/profile_desktop_host/tasks/nymph.yml 'dotfiles/nymph/*')",
|
||||
"Bash(git *)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
18
AGENTS.md
18
AGENTS.md
@@ -1,6 +1,6 @@
|
||||
# AGENTS.md
|
||||
|
||||
Ansible-driven personal infrastructure repo for Void/Arch desktops, Linux workstations, Windows+WSL, and an Ubuntu server.
|
||||
Ansible-driven personal infrastructure repo for Void desktops, Linux workstations, Windows+WSL, and an Ubuntu server.
|
||||
|
||||
## Source Of Truth
|
||||
- Main orchestration: `ansible/site.yml`
|
||||
@@ -11,8 +11,7 @@ Ansible-driven personal infrastructure repo for Void/Arch desktops, Linux workst
|
||||
- Codex config is rendered from `dotfiles/common/.codex/config.toml.j2` so `model_instructions_file` points to the deployed `~/.config/ai/bootstrap.md`.
|
||||
|
||||
## Topology
|
||||
- Void desktops: `ikaros`
|
||||
- Arch desktops: `nymph`
|
||||
- Void desktops: `ikaros`, `nymph`
|
||||
- Native Linux workstations: `deadalus-ubuntu`, `deadalus-fedora`
|
||||
- Windows host + WSL dev: `deadalus-win`, `deadalus-wsl`
|
||||
- Ubuntu server: `prometheus`
|
||||
@@ -35,15 +34,13 @@ Ansible-driven personal infrastructure repo for Void/Arch desktops, Linux workst
|
||||
- `ansible-lint ansible/roles`
|
||||
- `yamllint ansible/`
|
||||
- Host-focused dry runs:
|
||||
- Void desktop work: `ansible-playbook ansible/site.yml --limit ikaros --check --diff`
|
||||
- Arch desktop work: `ansible-playbook ansible/site.yml --limit nymph --check --diff`
|
||||
- Void desktop work: `ansible-playbook ansible/site.yml --limit ikaros --check --diff` or `--limit nymph --check --diff`
|
||||
- Ubuntu workstation: `ansible-playbook ansible/site.yml --limit deadalus-ubuntu --check --diff`
|
||||
- Fedora workstation: `ansible-playbook ansible/site.yml --limit deadalus-fedora --check --diff`
|
||||
- WSL dev: `ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff`
|
||||
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
||||
- Focused checks:
|
||||
- Emacs dotfiles only: `ansible-playbook ansible/site.yml --limit ikaros --tags emacs --check --diff` or `--limit nymph --tags emacs --check --diff`
|
||||
- Arch GNOME desktop bootstrap on nymph: `ansible-playbook ansible/site.yml --limit nymph --tags packages,services,gnome --check --diff`
|
||||
- Mail bootstrap: `sh -n scripts/bootstrap_mail.sh` and `shellcheck scripts/bootstrap_mail.sh`
|
||||
- Windows bootstrap parse: `pwsh -NoProfile -Command "[void][System.Management.Automation.Language.Parser]::ParseFile('scripts/bootstrap_windows_workstation.ps1', [ref]$null, [ref]$null)"`
|
||||
- Server compose render: `docker compose -f /opt/docker/server/docker-compose.yml config`
|
||||
@@ -61,18 +58,11 @@ Ansible-driven personal infrastructure repo for Void/Arch desktops, Linux workst
|
||||
- `.emacs.d` is deployed by a dedicated `profile_desktop_common` task tagged `emacs`.
|
||||
- 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/`.
|
||||
- Arch user services are systemd user units under `dotfiles/desktop/.config/systemd/user/`.
|
||||
- `ssh-agent` keeps the stable socket `~/.local/state/ssh-agent/socket`.
|
||||
- Critical session entrypoints:
|
||||
- `dotfiles/desktop/.xinitrc`
|
||||
- `dotfiles/desktop/.local/bin/start-sway-session`
|
||||
- Do not auto-restart `emptty` during playbook runs on active Void desktop hosts; restart it manually from another TTY/SSH session if needed.
|
||||
- `nymph` is an Arch GNOME/GDM desktop; do not route it through Void/i3/Sway/emptty tasks.
|
||||
- `nymph` uses systemd-boot; keep loader entries and kernel cmdline in `ansible/inventory/host_vars/nymph.yml`.
|
||||
- `profile_desktop_sway` owns the Sway session, Noctalia config rendering, and official plugin linking when a Sway desktop is explicitly enabled.
|
||||
- Noctalia shared config lives in `dotfiles/desktop/.config/noctalia/`; bar monitors and `screenOverrides` come from inventory (`noctalia_bar_monitors`, `noctalia_screen_overrides`) on Sway hosts.
|
||||
- On Sway hosts, `udiskie` is the backend for automount/LUKS but runs without tray; USB device UI is handled by `usb-drive-manager`.
|
||||
- Do not re-introduce `network-manager-applet` or `blueman` on Sway hosts without an explicit host-specific reason.
|
||||
- `nymph` is an i3/X11 Void laptop with NVIDIA Optimus; host-specific tasks in `profile_desktop_host/tasks/nymph.yml` handle GRUB NVIDIA cmdline params, `prime-run` wrapper, and the WirePlumber camera priority config.
|
||||
|
||||
## Workstation / Windows Notes
|
||||
- Native Linux workstation hosts can combine `workstation_host_linux` with an OS-specific dev group.
|
||||
|
||||
27
README.md
27
README.md
@@ -31,8 +31,11 @@ infra/
|
||||
│ ├── common/
|
||||
│ ├── desktop/
|
||||
│ ├── fedora/
|
||||
│ ├── ubuntu/
|
||||
│ ├── server/
|
||||
│ ├── workstation/
|
||||
│ ├── workstation_host_linux/
|
||||
│ ├── workstation_dev_wsl/
|
||||
│ ├── ikaros/
|
||||
│ └── nymph/
|
||||
│
|
||||
@@ -70,7 +73,7 @@ Sistema operativo:
|
||||
Sessioni desktop:
|
||||
|
||||
- `ikaros`: i3
|
||||
- `nymph`: SwayFX
|
||||
- `nymph`: i3
|
||||
|
||||
Macchine:
|
||||
|
||||
@@ -82,8 +85,8 @@ Queste macchine condividono la stessa configurazione base desktop e vengono mant
|
||||
Lo stato attuale del profilo desktop include, tra le altre cose:
|
||||
|
||||
- dotfiles comuni e desktop
|
||||
- sessione i3 su `ikaros` e sessione Sway su `nymph`
|
||||
- `emptty` con default host-specific per il desktop attivo su ogni host
|
||||
- sessione i3 su entrambi gli host
|
||||
- `emptty` con default host-specific per il desktop attivo, con `XORG_SESSIONS_PATH` puntato a `/etc/emptty/xsessions` per esporre solo le sessioni esplicitamente whitelistate
|
||||
- pacchetti Void Linux e servizi runit
|
||||
- `turnstile` per i servizi utente, inclusi `emacs` e `ssh-agent`
|
||||
- `ssh-agent` con socket stabile condiviso tra shell, SSH ed Emacs in `~/.local/state/ssh-agent/socket`
|
||||
@@ -91,10 +94,9 @@ Lo stato attuale del profilo desktop include, tra le altre cose:
|
||||
- `tmux` con plugin gestiti da TPM al bootstrap del profilo desktop
|
||||
- Flatpak con remoto Flathub
|
||||
- GNOME Keyring e bootstrap della posta via script dedicato
|
||||
- shell Noctalia su Sway su `nymph`, con plugin ufficiali per clipboard (`clipper`), polkit (`polkit-agent`), screenshot (`screenshot`) e gestione USB (`usb-drive-manager`); config condivisa in `dotfiles/desktop/.config/noctalia/` e `settings.json` renderizzato da template Ansible con variabili host-specifiche
|
||||
- `udiskie` come backend per automount/LUKS su Sway, senza tray; la UI dei dispositivi removibili è demandata a `usb-drive-manager`
|
||||
- `kanshi` su `nymph` per il profilo monitor Wayland, con workspace Sway deterministici: in dual monitor `1` resta su `eDP-1` e `2-10` vanno su `DP-1`, mentre in laptop-only tutti tornano su `eDP-1`
|
||||
- monitor Noctalia e `screenOverrides` dichiarati in inventory (`noctalia_bar_monitors`, `noctalia_screen_overrides`) per host `nymph`
|
||||
- `udiskie` come backend per automount/LUKS
|
||||
- `autorandr` per profili monitor host-specifici (`nymph` ha profili `dual` e `solo`)
|
||||
- override NVIDIA Optimus su `nymph`: parametri kernel GRUB iniettati in modo idempotente in `GRUB_CMDLINE_LINUX`, wrapper `prime-run` e config WirePlumber per priorità telecamera
|
||||
|
||||
---
|
||||
|
||||
@@ -270,7 +272,6 @@ I principali ruoli attualmente presenti sono:
|
||||
| services_systemd | gestione servizi systemd |
|
||||
| profile_desktop_common | bootstrap desktop Void condiviso |
|
||||
| profile_desktop_i3 | sessione desktop i3 |
|
||||
| profile_desktop_sway | sessione desktop Sway |
|
||||
| profile_desktop_host | override desktop specifici per host |
|
||||
| profile_workstation_dev_common | configurazione dev workstation condivisa |
|
||||
| profile_workstation_gnome | configurazione host workstation GNOME |
|
||||
@@ -288,7 +289,7 @@ Il playbook `ansible/site.yml` e attualmente composto da sette blocchi:
|
||||
|
||||
```text
|
||||
all:!workstation_host_windows -> dotfiles_common
|
||||
void -> packages_void + services_runit + profile_desktop_common + profile_desktop_i3 + profile_desktop_sway + profile_desktop_host
|
||||
void -> packages_void + services_runit + profile_desktop_common + profile_desktop_i3 + profile_desktop_host
|
||||
workstation_dev_ubuntu -> packages_ubuntu + services_systemd + profile_workstation_dev_common
|
||||
workstation_dev_fedora -> packages_fedora + services_systemd + profile_workstation_dev_common
|
||||
workstation_host_linux -> profile_workstation_gnome
|
||||
@@ -316,7 +317,10 @@ dotfiles/
|
||||
├── desktop
|
||||
├── server
|
||||
├── fedora
|
||||
├── ubuntu
|
||||
├── workstation
|
||||
├── workstation_host_linux
|
||||
├── workstation_dev_wsl
|
||||
├── ikaros
|
||||
└── nymph
|
||||
```
|
||||
@@ -372,7 +376,7 @@ ansible-playbook ansible/site.yml
|
||||
Allo stato attuale questo comando:
|
||||
|
||||
- distribuisce i dotfiles comuni a tutti gli host
|
||||
- per gli host Void applica bootstrap desktop condiviso, sessioni i3/Sway e override specifici per host
|
||||
- per gli host Void applica bootstrap desktop condiviso, sessione i3 e override specifici per host
|
||||
- per `workstation_dev_ubuntu` applica pacchetti Ubuntu, servizi systemd e profilo dev comune
|
||||
- per `workstation_dev_fedora` applica pacchetti Fedora, servizi systemd e profilo dev comune
|
||||
- per `workstation_host_linux` applica il layer host Linux GNOME
|
||||
@@ -440,14 +444,13 @@ Allo stato attuale `ansible/site.yml` espone questi tag:
|
||||
| `nvidia` | componenti NVIDIA desktop | desktop Void |
|
||||
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
||||
| `services` | gestione servizi runit/systemd/Windows | tutti i profili |
|
||||
| `sway` | sessione/configurazione Sway | desktop Void |
|
||||
| `vscode` | installazione/configurazione VS Code | Fedora, host Linux, Windows |
|
||||
| `wsl` | bootstrap e configurazione WSL | WSL, Windows |
|
||||
|
||||
Esempi pratici:
|
||||
|
||||
```bash
|
||||
ansible-playbook ansible/site.yml --limit nymph --tags dotfiles:desktop,sway --check --diff
|
||||
ansible-playbook ansible/site.yml --limit nymph --tags dotfiles:desktop,i3 --check --diff
|
||||
ansible-playbook ansible/site.yml --limit deadalus-fedora --tags packages,vscode --check --diff
|
||||
ansible-playbook ansible/site.yml --limit prometheus --tags services,dotfiles:server --check --diff
|
||||
```
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
---
|
||||
arch_packages_base:
|
||||
- 7zip
|
||||
- archlinux-keyring
|
||||
- avahi
|
||||
- base-devel
|
||||
- bluez
|
||||
- clang
|
||||
- cmake
|
||||
- cups
|
||||
- cups-filters
|
||||
- cups-pk-helper
|
||||
- fastfetch
|
||||
- flatpak
|
||||
- fuse3
|
||||
- gcc
|
||||
- gdb
|
||||
- git-delta
|
||||
- github-cli
|
||||
- gnome-keyring
|
||||
- go
|
||||
- gvfs
|
||||
- gvfs-mtp
|
||||
- gvfs-smb
|
||||
- imagemagick
|
||||
- isync
|
||||
- libsecret
|
||||
- libtool
|
||||
- linux
|
||||
- linux-headers
|
||||
- lm_sensors
|
||||
- man-db
|
||||
- man-pages
|
||||
- msmtp
|
||||
- networkmanager
|
||||
- nodejs
|
||||
- npm
|
||||
- pavucontrol
|
||||
- pipewire
|
||||
- pipewire-alsa
|
||||
- pipewire-jack
|
||||
- pipewire-pulse
|
||||
- pkgconf
|
||||
- plocate
|
||||
- podman
|
||||
- podman-compose
|
||||
- rclone
|
||||
- sane
|
||||
- sane-airscan
|
||||
- seahorse
|
||||
- simple-scan
|
||||
- speech-dispatcher
|
||||
- syncthing
|
||||
- tealdeer
|
||||
- tmux
|
||||
- tree-sitter-cli
|
||||
- ufw
|
||||
- wireplumber
|
||||
- xdotool
|
||||
- yt-dlp
|
||||
|
||||
arch_desktop_common_packages:
|
||||
- brightnessctl
|
||||
- dex
|
||||
- pinentry
|
||||
- xdg-desktop-portal
|
||||
- xdg-desktop-portal-gtk
|
||||
- xdg-user-dirs
|
||||
|
||||
arch_desktop_gnome_packages:
|
||||
- baobab
|
||||
- gdm
|
||||
- gnome-backgrounds
|
||||
- gnome-calculator
|
||||
- gnome-calendar
|
||||
- gnome-characters
|
||||
- gnome-clocks
|
||||
- gnome-control-center
|
||||
- gnome-disk-utility
|
||||
- gnome-font-viewer
|
||||
- gnome-session
|
||||
- gnome-settings-daemon
|
||||
- gnome-shell
|
||||
- gnome-shell-extensions
|
||||
- gnome-tweaks
|
||||
- gvfs-afc
|
||||
- gvfs-dnssd
|
||||
- gvfs-goa
|
||||
- gvfs-gphoto2
|
||||
- gvfs-nfs
|
||||
- gvfs-onedrive
|
||||
- gvfs-wsdd
|
||||
- loupe
|
||||
- mutter
|
||||
- nautilus
|
||||
- papers
|
||||
- ptyxis
|
||||
- rygel
|
||||
- showtime
|
||||
- snapshot
|
||||
- sushi
|
||||
- xdg-desktop-portal-gnome
|
||||
- xdg-user-dirs-gtk
|
||||
|
||||
arch_profile_packages:
|
||||
- deluge
|
||||
- dnsmasq
|
||||
- edk2-ovmf
|
||||
- emacs-wayland
|
||||
- ffmpegthumbnailer
|
||||
- firefox
|
||||
- fontconfig
|
||||
- freetype2
|
||||
- gufw
|
||||
- iproute2
|
||||
- libvterm
|
||||
- libx11
|
||||
- libxft
|
||||
- libvirt
|
||||
- libreoffice-fresh
|
||||
- meld
|
||||
- mpv
|
||||
- noto-fonts
|
||||
- noto-fonts-emoji
|
||||
- pdfarranger
|
||||
- poppler
|
||||
- poppler-glib
|
||||
- qemu-desktop
|
||||
- remmina
|
||||
- ripgrep
|
||||
- rsync
|
||||
- ruff
|
||||
- rustup
|
||||
- texlive-basic
|
||||
- texlive-binextra
|
||||
- texlive-latex
|
||||
- texlive-latexextra
|
||||
- ttf-hack-nerd
|
||||
- ttf-liberation
|
||||
- ttf-nerd-fonts-symbols
|
||||
- ctags
|
||||
- uv
|
||||
- virt-manager
|
||||
- xournalpp
|
||||
- zstd
|
||||
|
||||
enabled_services:
|
||||
- NetworkManager
|
||||
- avahi-daemon
|
||||
- bluetooth
|
||||
- cups
|
||||
- libvirtd
|
||||
- ufw
|
||||
|
||||
enabled_services_only:
|
||||
- gdm
|
||||
|
||||
desktop_systemd_user_services:
|
||||
- syncthing.service
|
||||
- rclone-pcloud.service
|
||||
@@ -112,20 +112,6 @@ desktop_common_dotfiles:
|
||||
dest: .ssh/config
|
||||
mode: "0600"
|
||||
|
||||
desktop_arch_dotfiles:
|
||||
- name: rclone pcloud systemd user service
|
||||
src: .config/systemd/user/rclone-pcloud.service
|
||||
dest: .config/systemd/user/rclone-pcloud.service
|
||||
mode: "0644"
|
||||
- name: syncthing systemd user service
|
||||
src: .config/systemd/user/syncthing.service
|
||||
dest: .config/systemd/user/syncthing.service
|
||||
mode: "0644"
|
||||
- name: MIME application defaults
|
||||
src: .config/mimeapps.arch.list
|
||||
dest: .config/mimeapps.list
|
||||
mode: "0644"
|
||||
|
||||
desktop_emacs_dotfiles:
|
||||
- name: Emacs config
|
||||
src: .emacs.d/
|
||||
@@ -154,32 +140,6 @@ desktop_i3_dotfiles:
|
||||
dest: .xinitrc
|
||||
mode: "0644"
|
||||
|
||||
desktop_sway_dotfiles:
|
||||
- name: Sway config
|
||||
src: .config/sway/
|
||||
dest: .config/sway/
|
||||
mode: preserve
|
||||
- name: Sway wallpaper assets
|
||||
src: .config/i3/wallpapers/
|
||||
dest: .config/sway/wallpapers/
|
||||
mode: preserve
|
||||
- name: Sway session wrapper
|
||||
src: .local/bin/start-sway-session
|
||||
dest: .local/bin/start-sway-session
|
||||
mode: "0755"
|
||||
- name: Noctalia colors
|
||||
src: .config/noctalia/colors.json
|
||||
dest: .config/noctalia/colors.json
|
||||
mode: "0644"
|
||||
- name: Noctalia plugins
|
||||
src: .config/noctalia/plugins.json
|
||||
dest: .config/noctalia/plugins.json
|
||||
mode: "0644"
|
||||
- name: Noctalia colorschemes
|
||||
src: .config/noctalia/colorschemes/
|
||||
dest: .config/noctalia/colorschemes/
|
||||
mode: preserve
|
||||
|
||||
noctalia_bar_monitors:
|
||||
- DP-1
|
||||
|
||||
|
||||
@@ -135,6 +135,10 @@ desktop_void_dotfiles:
|
||||
src: .local/bin/update-turnstile-env
|
||||
dest: .local/bin/update-turnstile-env
|
||||
mode: "0755"
|
||||
- name: Noctalia config
|
||||
src: .config/noctalia/
|
||||
dest: .config/noctalia/
|
||||
mode: preserve
|
||||
|
||||
desktop_common_packages:
|
||||
- brightnessctl
|
||||
@@ -173,14 +177,6 @@ desktop_i3_packages:
|
||||
- xorg-minimal
|
||||
- xss-lock
|
||||
|
||||
desktop_sway_packages:
|
||||
- grim
|
||||
- kanshi
|
||||
- slurp
|
||||
- swayfx
|
||||
- wl-clipboard
|
||||
- xdg-desktop-portal-wlr
|
||||
|
||||
profile_packages:
|
||||
- alacritty
|
||||
- bluez
|
||||
|
||||
@@ -2,48 +2,31 @@
|
||||
hostname: nymph
|
||||
|
||||
desktop_sessions_enabled:
|
||||
- gnome
|
||||
- i3
|
||||
|
||||
desktop_default_session: gnome
|
||||
desktop_default_session_env: wayland
|
||||
|
||||
host_kernel_cmdline: >-
|
||||
rd.luks.uuid=1e15d159-5d05-4a1f-9639-ac200dff9f9c rootflags=subvol=@
|
||||
apparmor=1 security=apparmor nouveau.modeset=0 nvidia-drm.modeset=1
|
||||
|
||||
host_systemd_boot_esp_path: /boot
|
||||
host_systemd_boot_default: arch.conf
|
||||
host_systemd_boot_timeout: 3
|
||||
host_systemd_boot_console_mode: max
|
||||
host_systemd_boot_editor: false
|
||||
host_systemd_boot_entries:
|
||||
- filename: arch.conf
|
||||
title: Arch Linux
|
||||
linux: /vmlinuz-linux
|
||||
initrds:
|
||||
- /intel-ucode.img
|
||||
- /initramfs-linux.img
|
||||
options: "{{ host_kernel_cmdline }}"
|
||||
- filename: arch-fallback.conf
|
||||
title: Arch Linux fallback
|
||||
linux: /vmlinuz-linux
|
||||
initrds:
|
||||
- /intel-ucode.img
|
||||
- /initramfs-linux-fallback.img
|
||||
options: "{{ host_kernel_cmdline }}"
|
||||
desktop_default_session: i3
|
||||
desktop_default_session_env: xorg
|
||||
desktop_emptty_session_error_logging: rotate
|
||||
|
||||
host_packages:
|
||||
- intel-ucode
|
||||
- intel-media-driver
|
||||
- libva-intel-driver
|
||||
- mesa
|
||||
- nvidia-open
|
||||
- nvidia-settings
|
||||
- nvidia-utils
|
||||
- nvidia
|
||||
- linux-mainline-headers
|
||||
- mesa-dri
|
||||
- vulkan-loader
|
||||
- mesa-vulkan-intel
|
||||
- intel-video-accel
|
||||
- power-profiles-daemon
|
||||
- tlp
|
||||
- tlp-rdw
|
||||
- upower
|
||||
- vulkan-icd-loader
|
||||
- vulkan-intel
|
||||
|
||||
host_enabled_services:
|
||||
- power-profiles-daemon
|
||||
- tlp
|
||||
|
||||
host_i3_dotfiles:
|
||||
- src: .config/autorandr/
|
||||
dest: .config/autorandr/
|
||||
mode: preserve
|
||||
- src: .config/wireplumber/wireplumber.conf.d/60-camera-priority.conf
|
||||
dest: .config/wireplumber/wireplumber.conf.d/60-camera-priority.conf
|
||||
mode: "0644"
|
||||
|
||||
@@ -5,10 +5,8 @@ all:
|
||||
hosts:
|
||||
ikaros:
|
||||
ansible_connection: local
|
||||
|
||||
arch:
|
||||
children:
|
||||
arch_desktop:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
desktop:
|
||||
hosts:
|
||||
@@ -57,11 +55,6 @@ all:
|
||||
deadalus-fedora:
|
||||
ansible_connection: local
|
||||
|
||||
arch_desktop:
|
||||
hosts:
|
||||
nymph:
|
||||
ansible_connection: local
|
||||
|
||||
workstation_host_linux:
|
||||
hosts:
|
||||
deadalus-ubuntu:
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
- name: Synchronize and upgrade Arch Linux packages
|
||||
tags: [packages]
|
||||
community.general.pacman:
|
||||
update_cache: true
|
||||
upgrade: true
|
||||
|
||||
- name: Install packages on Arch Linux
|
||||
tags: [packages]
|
||||
community.general.pacman:
|
||||
name: >-
|
||||
{{
|
||||
(
|
||||
(common_packages | default([]))
|
||||
+ (arch_packages_base | default([]))
|
||||
+ (arch_desktop_common_packages | default([]))
|
||||
+ (
|
||||
(arch_desktop_gnome_packages | default([]))
|
||||
if 'gnome' in (desktop_sessions_enabled | default([]))
|
||||
else []
|
||||
)
|
||||
+ (arch_profile_packages | default([]))
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
}}
|
||||
state: present
|
||||
@@ -61,11 +61,6 @@
|
||||
if 'i3' in (desktop_sessions_enabled | default([]))
|
||||
else []
|
||||
)
|
||||
+ (
|
||||
(desktop_sway_packages | default([]))
|
||||
if 'sway' in (desktop_sessions_enabled | default([]))
|
||||
else []
|
||||
)
|
||||
+ (host_packages | default([]))
|
||||
)
|
||||
| unique
|
||||
|
||||
@@ -27,12 +27,3 @@
|
||||
when:
|
||||
- not ansible_check_mode
|
||||
- "'void' in group_names"
|
||||
|
||||
- name: Reload SSH service with systemd
|
||||
listen: Reload SSH service
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ desktop_ssh_service_name | default('sshd') }}"
|
||||
state: reloaded
|
||||
when:
|
||||
- not ansible_check_mode
|
||||
- "'arch' in group_names"
|
||||
|
||||
@@ -19,12 +19,11 @@
|
||||
loop:
|
||||
- "{{ user_home }}/.config"
|
||||
- "{{ user_home }}/.config/autostart"
|
||||
- "{{ user_home }}/.config/systemd"
|
||||
- "{{ user_home }}/.config/systemd/user"
|
||||
- "{{ user_home }}/.bashrc.d"
|
||||
- "{{ user_home }}/.tmux"
|
||||
- "{{ user_home }}/.tmux/bin"
|
||||
- "{{ user_home }}/.tmux/plugins"
|
||||
- "{{ user_home }}/.ssh"
|
||||
|
||||
- name: Ensure user local bin directory exists
|
||||
tags: [dotfiles, dotfiles:desktop, dotfiles:host]
|
||||
@@ -247,7 +246,6 @@
|
||||
mode: "0755"
|
||||
loop:
|
||||
- /etc/emptty/xsessions
|
||||
- /etc/emptty/wayland-sessions
|
||||
when: "'void' in group_names"
|
||||
|
||||
- name: Configure emptty
|
||||
@@ -273,37 +271,10 @@
|
||||
{{
|
||||
(desktop_common_dotfiles | default([]))
|
||||
+ ((desktop_void_dotfiles | default([])) if 'void' in group_names else [])
|
||||
+ ((desktop_arch_dotfiles | default([])) if 'arch' in group_names else [])
|
||||
}}
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
|
||||
- name: Ensure systemd user enablement directory exists
|
||||
tags: [services, dotfiles, dotfiles:desktop]
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/.config/systemd/user/default.target.wants"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
when:
|
||||
- "'arch' in group_names"
|
||||
- (desktop_systemd_user_services | default([])) | length > 0
|
||||
|
||||
- name: Enable desktop systemd user services
|
||||
tags: [services, dotfiles, dotfiles:desktop]
|
||||
ansible.builtin.file:
|
||||
src: "{{ user_home }}/.config/systemd/user/{{ item }}"
|
||||
dest: "{{ user_home }}/.config/systemd/user/default.target.wants/{{ item }}"
|
||||
state: link
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
force: true
|
||||
loop: "{{ desktop_systemd_user_services | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when: "'arch' in group_names"
|
||||
|
||||
- name: Copy Emacs desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, emacs]
|
||||
ansible.builtin.copy:
|
||||
@@ -500,27 +471,14 @@
|
||||
path: "{{ user_home }}/.cargo/bin/rustc"
|
||||
register: rustup_initialized
|
||||
|
||||
- name: Run rustup-init with cargo env sourced (Void)
|
||||
ansible.builtin.shell:
|
||||
cmd: . ~/.cargo/env && rustup-init -y --no-modify-path
|
||||
creates: "{{ user_home }}/.cargo/bin/rustc"
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
when:
|
||||
- not rustup_initialized.stat.exists
|
||||
- "'void' in group_names"
|
||||
|
||||
- name: Install Rust stable toolchain via rustup (Arch)
|
||||
- name: Run rustup-init
|
||||
ansible.builtin.command:
|
||||
cmd: rustup toolchain install stable
|
||||
cmd: rustup-init -y --no-modify-path
|
||||
creates: "{{ user_home }}/.cargo/bin/rustc"
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
when:
|
||||
- not rustup_initialized.stat.exists
|
||||
- "'arch' in group_names"
|
||||
when: not rustup_initialized.stat.exists
|
||||
|
||||
- name: Ensure cargo env is sourced in shell profile
|
||||
ansible.builtin.lineinfile:
|
||||
|
||||
@@ -10,7 +10,6 @@ DEFAULT_SESSION_ENV={{ desktop_default_session_env | default('') }}
|
||||
DBUS_LAUNCH=false
|
||||
XINITRC_LAUNCH=true
|
||||
XORG_SESSIONS_PATH=/etc/emptty/xsessions
|
||||
WAYLAND_SESSIONS_PATH=/etc/emptty/wayland-sessions
|
||||
VERTICAL_SELECTION=true
|
||||
IDENTIFY_ENVS=true
|
||||
SELECT_LAST_USER=global
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
- name: Ensure GNOME desktop session is enabled for this profile
|
||||
tags: [gnome]
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'gnome' in (desktop_sessions_enabled | default([]))"
|
||||
fail_msg: >-
|
||||
profile_desktop_gnome requires desktop_sessions_enabled to include gnome.
|
||||
|
||||
- name: Ensure systemd boots to the graphical target
|
||||
tags: [services, gnome]
|
||||
ansible.builtin.file:
|
||||
src: /usr/lib/systemd/system/graphical.target
|
||||
dest: /etc/systemd/system/default.target
|
||||
state: link
|
||||
force: true
|
||||
owner: root
|
||||
group: root
|
||||
|
||||
- name: Enable emacs user service from package
|
||||
tags: [services, emacs]
|
||||
ansible.builtin.systemd:
|
||||
name: emacs.service
|
||||
enabled: true
|
||||
scope: user
|
||||
become_user: "{{ username }}"
|
||||
|
||||
- name: Deploy gpg-agent.conf for GNOME (pinentry-gnome3, no ssh-support)
|
||||
tags: [dotfiles, dotfiles:desktop, gnome]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.gnupg/gpg-agent.arch.conf"
|
||||
dest: "{{ user_home }}/.gnupg/gpg-agent.conf"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0600"
|
||||
|
||||
- name: Enable gnome-keyring PAM auth hook for GDM
|
||||
tags: [gnome]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/gdm-password
|
||||
insertafter: '^auth\s+include\s+system-local-login$'
|
||||
line: "auth optional pam_gnome_keyring.so"
|
||||
state: present
|
||||
|
||||
- name: Enable gnome-keyring PAM session hook for GDM
|
||||
tags: [gnome]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/gdm-password
|
||||
insertafter: '^session\s+include\s+system-local-login$'
|
||||
line: "session optional pam_gnome_keyring.so auto_start"
|
||||
state: present
|
||||
|
||||
- name: Enable gnome-keyring PAM password hook for GDM
|
||||
tags: [gnome]
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pam.d/gdm-password
|
||||
insertafter: '^password\s+include\s+system-local-login$'
|
||||
line: "password optional pam_gnome_keyring.so use_authtok"
|
||||
state: present
|
||||
@@ -19,17 +19,3 @@
|
||||
- "'i3' in (desktop_sessions_enabled | default([]))"
|
||||
- (host_i3_dotfiles | default([])) | length > 0
|
||||
|
||||
- name: Copy host-specific Sway dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, dotfiles:host, sway]
|
||||
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_sway_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when:
|
||||
- "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
- (host_sway_dotfiles | default([])) | length > 0
|
||||
|
||||
@@ -1,75 +1,38 @@
|
||||
---
|
||||
- name: Ensure systemd-boot loader entries directory exists
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.file:
|
||||
path: "{{ host_systemd_boot_esp_path }}/loader/entries"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
when: host_systemd_boot_esp_path is defined
|
||||
|
||||
- name: Check whether systemd-boot is installed
|
||||
- name: Check if GRUB_CMDLINE_LINUX line exists in /etc/default/grub
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- bootctl
|
||||
- "--esp-path={{ host_systemd_boot_esp_path }}"
|
||||
- is-installed
|
||||
register: nymph_systemd_boot_state
|
||||
cmd: grep -E '^GRUB_CMDLINE_LINUX=' /etc/default/grub
|
||||
register: nymph_grub_cmdline_check
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
when:
|
||||
- host_systemd_boot_esp_path is defined
|
||||
- not ansible_check_mode
|
||||
|
||||
- name: Install systemd-boot
|
||||
- name: Initialize empty GRUB_CMDLINE_LINUX line if missing
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- bootctl
|
||||
- "--esp-path={{ host_systemd_boot_esp_path }}"
|
||||
- install
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/default/grub
|
||||
line: 'GRUB_CMDLINE_LINUX=""'
|
||||
insertafter: '^GRUB_CMDLINE_LINUX_DEFAULT='
|
||||
state: present
|
||||
when: nymph_grub_cmdline_check.rc != 0
|
||||
register: nymph_grub_cmdline_init
|
||||
|
||||
- name: Append NVIDIA kernel parameters to GRUB_CMDLINE_LINUX if missing
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.replace:
|
||||
path: /etc/default/grub
|
||||
regexp: '^(GRUB_CMDLINE_LINUX="(?:(?!{{ item | regex_escape }})[^"])*?)"$'
|
||||
replace: '\1 {{ item }}"'
|
||||
loop:
|
||||
- nouveau.modeset=0
|
||||
- nvidia-drm.modeset=1
|
||||
register: nymph_grub_cmdline_append
|
||||
|
||||
- name: Regenerate GRUB configuration
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.command: grub-mkconfig -o /boot/grub/grub.cfg
|
||||
changed_when: true
|
||||
when:
|
||||
- host_systemd_boot_esp_path is defined
|
||||
- not ansible_check_mode
|
||||
- nymph_systemd_boot_state.rc | default(1) != 0
|
||||
|
||||
- name: Configure systemd-boot loader defaults
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ host_systemd_boot_esp_path }}/loader/loader.conf"
|
||||
content: |
|
||||
default {{ host_systemd_boot_default }}
|
||||
timeout {{ host_systemd_boot_timeout | default(3) }}
|
||||
console-mode {{ host_systemd_boot_console_mode | default('max') }}
|
||||
editor {{ 'yes' if host_systemd_boot_editor | default(false) else 'no' }}
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when:
|
||||
- host_systemd_boot_esp_path is defined
|
||||
- host_systemd_boot_default is defined
|
||||
|
||||
- name: Configure systemd-boot Arch entries
|
||||
tags: [packages, nvidia]
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ host_systemd_boot_esp_path }}/loader/entries/{{ item.filename }}"
|
||||
content: |-
|
||||
title {{ item.title }}
|
||||
linux {{ item.linux }}
|
||||
{% for initrd in item.initrds | default([]) %}
|
||||
initrd {{ initrd }}
|
||||
{% endfor %}
|
||||
options {{ item.options }}
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
loop: "{{ host_systemd_boot_entries | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.filename }}"
|
||||
when: host_systemd_boot_esp_path is defined
|
||||
when: nymph_grub_cmdline_init is changed or nymph_grub_cmdline_append is changed
|
||||
|
||||
- name: Configure NVIDIA power management for hybrid graphics
|
||||
tags: [packages, nvidia]
|
||||
@@ -98,13 +61,3 @@
|
||||
regexp: '^bindsym \$mod\+Return exec --no-startup-id /usr/bin/alacritty'
|
||||
line: 'bindsym $mod+Return exec --no-startup-id ~/.local/bin/prime-run /usr/bin/alacritty'
|
||||
when: "'i3' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Deploy WirePlumber camera priority config
|
||||
tags: [dotfiles, dotfiles:host]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/nymph/.config/wireplumber/wireplumber.conf.d/60-camera-priority.conf"
|
||||
dest: "{{ user_home }}/.config/wireplumber/wireplumber.conf.d/60-camera-priority.conf"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
force: true
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
---
|
||||
- name: Ensure Sway config directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, sway]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config/sway"
|
||||
- "{{ user_home }}/.config/kanshi"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Ensure Noctalia config directories exist
|
||||
tags: [dotfiles, dotfiles:desktop, sway, noctalia]
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0755"
|
||||
loop:
|
||||
- "{{ user_home }}/.config/noctalia"
|
||||
- "{{ user_home }}/.config/noctalia/plugins"
|
||||
- "{{ user_home }}/.local/share/noctalia-plugins"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Install Sway emptty session entry
|
||||
tags: [packages, services, emptty, sway]
|
||||
ansible.builtin.template:
|
||||
src: Sway.desktop.j2
|
||||
dest: /etc/emptty/wayland-sessions/Sway.desktop
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Copy Sway desktop dotfiles
|
||||
tags: [dotfiles, dotfiles:desktop, sway]
|
||||
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_sway_dotfiles | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item.dest }}"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Render Sway shell config
|
||||
tags: [dotfiles, dotfiles:desktop, sway]
|
||||
ansible.builtin.template:
|
||||
src: shell.conf.j2
|
||||
dest: "{{ user_home }}/.config/sway/shell.conf"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Render Noctalia settings template
|
||||
tags: [dotfiles, dotfiles:desktop, sway, noctalia]
|
||||
ansible.builtin.template:
|
||||
src: noctalia-settings.json.j2
|
||||
dest: "{{ user_home }}/.config/noctalia/settings.json"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Manage Noctalia shell plugins
|
||||
tags: [dotfiles, dotfiles:desktop, sway, noctalia]
|
||||
ansible.builtin.include_tasks: noctalia.yml
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
|
||||
- name: Copy shared Clipper settings
|
||||
tags: [dotfiles, dotfiles:desktop, sway, noctalia]
|
||||
ansible.builtin.copy:
|
||||
src: "{{ playbook_dir }}/../dotfiles/desktop/.config/noctalia/plugins/clipper/settings.json"
|
||||
dest: "{{ user_home }}/.config/noctalia/plugins/clipper/settings.json"
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||
@@ -1,142 +0,0 @@
|
||||
---
|
||||
- name: Check whether official Clipper plugin directory exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ user_home }}/.local/share/noctalia-plugins/official/clipper"
|
||||
follow: false
|
||||
register: official_clipper_path_state
|
||||
|
||||
- name: Repair official Clipper plugin permissions before git update
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/.local/share/noctalia-plugins/official/clipper"
|
||||
state: directory
|
||||
recurse: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "u=rwX,go=rX"
|
||||
when:
|
||||
- official_clipper_path_state.stat.exists
|
||||
- official_clipper_path_state.stat.isdir
|
||||
|
||||
- name: Remove untracked files from official Clipper subtree before git update
|
||||
ansible.builtin.command:
|
||||
cmd: git clean -fd -- clipper
|
||||
chdir: "{{ user_home }}/.local/share/noctalia-plugins/official"
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
register: official_clipper_clean
|
||||
changed_when: >-
|
||||
(official_clipper_clean.stdout | default('') | trim) != '' or
|
||||
(official_clipper_clean.stderr | default('') | trim) != ''
|
||||
when:
|
||||
- official_clipper_path_state.stat.exists
|
||||
- official_clipper_path_state.stat.isdir
|
||||
|
||||
- name: Bootstrap official Noctalia plugins checkout
|
||||
ansible.builtin.git:
|
||||
repo: https://github.com/noctalia-dev/noctalia-plugins.git
|
||||
dest: "{{ user_home }}/.local/share/noctalia-plugins/official"
|
||||
version: main
|
||||
update: true
|
||||
force: true
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
|
||||
- name: Check if Clipper is a real directory (needs migration to symlink)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ user_home }}/.config/noctalia/plugins/clipper"
|
||||
follow: false
|
||||
register: clipper_path_state
|
||||
|
||||
- name: Check whether Clipper pinned data exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ user_home }}/.config/noctalia/plugins/clipper/pinned.json"
|
||||
register: clipper_pinned_state
|
||||
when:
|
||||
- clipper_path_state.stat.exists
|
||||
- clipper_path_state.stat.isdir
|
||||
- not (clipper_path_state.stat.islnk | default(false))
|
||||
|
||||
- name: Preserve Clipper pinned data before migration
|
||||
ansible.builtin.copy:
|
||||
src: "{{ user_home }}/.config/noctalia/plugins/clipper/pinned.json"
|
||||
dest: "{{ user_home }}/.local/share/noctalia-plugins/official/clipper/pinned.json"
|
||||
remote_src: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: "0644"
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
when:
|
||||
- clipper_pinned_state is defined and clipper_pinned_state.stat is defined and clipper_pinned_state.stat.exists
|
||||
|
||||
- name: Check whether Clipper notecards directory exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ user_home }}/.config/noctalia/plugins/clipper/notecards"
|
||||
register: clipper_notecards_state
|
||||
when:
|
||||
- clipper_path_state.stat.exists
|
||||
- clipper_path_state.stat.isdir
|
||||
- not (clipper_path_state.stat.islnk | default(false))
|
||||
|
||||
- name: Preserve Clipper notecards before migration
|
||||
ansible.builtin.copy:
|
||||
src: "{{ user_home }}/.config/noctalia/plugins/clipper/notecards/"
|
||||
dest: "{{ user_home }}/.local/share/noctalia-plugins/official/clipper/notecards/"
|
||||
remote_src: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
mode: preserve
|
||||
become_user: "{{ username }}"
|
||||
environment:
|
||||
HOME: "{{ user_home }}"
|
||||
when:
|
||||
- clipper_notecards_state is defined and clipper_notecards_state.stat is defined and clipper_notecards_state.stat.exists and clipper_notecards_state.stat.isdir
|
||||
|
||||
- name: Remove old Clipper directory (migration to symlink)
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/.config/noctalia/plugins/clipper"
|
||||
state: absent
|
||||
when:
|
||||
- clipper_path_state.stat.exists
|
||||
- clipper_path_state.stat.isdir
|
||||
- not (clipper_path_state.stat.islnk | default(false))
|
||||
|
||||
- name: Create Clipper symlink to official plugin
|
||||
ansible.builtin.file:
|
||||
src: "{{ user_home }}/.local/share/noctalia-plugins/official/clipper"
|
||||
dest: "{{ user_home }}/.config/noctalia/plugins/clipper"
|
||||
state: link
|
||||
force: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
|
||||
- name: Check if usb-drive-manager is a real directory (needs migration to symlink)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ user_home }}/.config/noctalia/plugins/usb-drive-manager"
|
||||
follow: false
|
||||
register: usb_drive_manager_path_state
|
||||
|
||||
- name: Remove old usb-drive-manager directory (migration to symlink)
|
||||
ansible.builtin.file:
|
||||
path: "{{ user_home }}/.config/noctalia/plugins/usb-drive-manager"
|
||||
state: absent
|
||||
when:
|
||||
- usb_drive_manager_path_state.stat.exists
|
||||
- usb_drive_manager_path_state.stat.isdir
|
||||
- not (usb_drive_manager_path_state.stat.islnk | default(false))
|
||||
|
||||
- name: Link official Noctalia plugins
|
||||
ansible.builtin.file:
|
||||
src: "{{ user_home }}/.local/share/noctalia-plugins/official/{{ item }}"
|
||||
dest: "{{ user_home }}/.config/noctalia/plugins/{{ item }}"
|
||||
state: link
|
||||
force: true
|
||||
owner: "{{ username }}"
|
||||
group: "{{ user_group }}"
|
||||
loop:
|
||||
- polkit-agent
|
||||
- screenshot
|
||||
- usb-drive-manager
|
||||
@@ -1,8 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Sway
|
||||
Comment=Sway Wayland compositor
|
||||
Exec={{ user_home }}/.local/bin/start-sway-session
|
||||
TryExec=sway
|
||||
Type=Application
|
||||
DesktopNames=sway;wlroots
|
||||
Keywords=wayland;wm;windowmanager;window;manager;tiling;compositor;
|
||||
@@ -1,622 +0,0 @@
|
||||
{
|
||||
"appLauncher": {
|
||||
"autoPasteClipboard": false,
|
||||
"clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store",
|
||||
"clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store",
|
||||
"clipboardWrapText": true,
|
||||
"customLaunchPrefix": "",
|
||||
"customLaunchPrefixEnabled": false,
|
||||
"density": "default",
|
||||
"enableClipPreview": true,
|
||||
"enableClipboardChips": true,
|
||||
"enableClipboardHistory": false,
|
||||
"enableClipboardSmartIcons": true,
|
||||
"enableSessionSearch": true,
|
||||
"enableSettingsSearch": true,
|
||||
"enableWindowsSearch": true,
|
||||
"iconMode": "tabler",
|
||||
"ignoreMouseInput": false,
|
||||
"overviewLayer": false,
|
||||
"pinnedApps": [],
|
||||
"position": "center",
|
||||
"screenshotAnnotationTool": "",
|
||||
"showCategories": true,
|
||||
"showIconBackground": false,
|
||||
"sortByMostUsed": true,
|
||||
"terminalCommand": "alacritty -e",
|
||||
"viewMode": "list"
|
||||
},
|
||||
"audio": {
|
||||
"mprisBlacklist": [],
|
||||
"preferredPlayer": "",
|
||||
"spectrumFrameRate": 30,
|
||||
"spectrumMirrored": true,
|
||||
"visualizerType": "linear",
|
||||
"volumeFeedback": false,
|
||||
"volumeFeedbackSoundFile": "",
|
||||
"volumeOverdrive": false,
|
||||
"volumeStep": 5
|
||||
},
|
||||
"bar": {
|
||||
"autoHideDelay": 500,
|
||||
"autoShowDelay": 150,
|
||||
"backgroundOpacity": 0.93,
|
||||
"barType": "simple",
|
||||
"capsuleColorKey": "none",
|
||||
"capsuleOpacity": 1,
|
||||
"contentPadding": 2,
|
||||
"density": "default",
|
||||
"displayMode": "always_visible",
|
||||
"enableExclusionZoneInset": true,
|
||||
"fontScale": 1,
|
||||
"frameRadius": 12,
|
||||
"frameThickness": 8,
|
||||
"hideOnOverview": false,
|
||||
"marginHorizontal": 4,
|
||||
"marginVertical": 4,
|
||||
"middleClickAction": "none",
|
||||
"middleClickCommand": "",
|
||||
"middleClickFollowMouse": false,
|
||||
"monitors": [
|
||||
{% for monitor in noctalia_bar_monitors | default(['DP-1']) %}
|
||||
"{{ monitor }}"{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
],
|
||||
"mouseWheelAction": "none",
|
||||
"mouseWheelWrap": true,
|
||||
"outerCorners": true,
|
||||
"position": "top",
|
||||
"reverseScroll": false,
|
||||
"rightClickAction": "controlCenter",
|
||||
"rightClickCommand": "",
|
||||
"rightClickFollowMouse": true,
|
||||
"screenOverrides": [
|
||||
{% for override in noctalia_screen_overrides | default([]) %}
|
||||
{
|
||||
"enabled": {{ override.enabled | lower }},
|
||||
"name": "{{ override.name }}"
|
||||
}{% if not loop.last %},{% endif %}
|
||||
{% endfor %}
|
||||
],
|
||||
"showCapsule": true,
|
||||
"showOnWorkspaceSwitch": true,
|
||||
"showOutline": false,
|
||||
"useSeparateOpacity": false,
|
||||
"widgetSpacing": 6,
|
||||
"widgets": {
|
||||
"center": [
|
||||
{
|
||||
"clockColor": "none",
|
||||
"customFont": "",
|
||||
"formatHorizontal": "HH:mm ddd, MMM dd",
|
||||
"formatVertical": "HH mm - dd MM",
|
||||
"id": "Clock",
|
||||
"tooltipFormat": "HH:mm ddd, MMM dd",
|
||||
"useCustomFont": false
|
||||
},
|
||||
{
|
||||
"compactMode": false,
|
||||
"hideMode": "hidden",
|
||||
"hideWhenIdle": false,
|
||||
"id": "MediaMini",
|
||||
"maxWidth": 145,
|
||||
"panelShowAlbumArt": true,
|
||||
"scrollingMode": "hover",
|
||||
"showAlbumArt": true,
|
||||
"showArtistFirst": true,
|
||||
"showProgressRing": true,
|
||||
"showVisualizer": false,
|
||||
"textColor": "none",
|
||||
"useFixedWidth": false,
|
||||
"visualizerType": "linear"
|
||||
}
|
||||
],
|
||||
"left": [
|
||||
{
|
||||
"characterCount": 2,
|
||||
"colorizeIcons": false,
|
||||
"emptyColor": "secondary",
|
||||
"enableScrollWheel": true,
|
||||
"focusedColor": "primary",
|
||||
"followFocusedScreen": false,
|
||||
"fontWeight": "bold",
|
||||
"groupedBorderOpacity": 1,
|
||||
"hideUnoccupied": false,
|
||||
"iconScale": 0.8,
|
||||
"id": "Workspace",
|
||||
"labelMode": "index",
|
||||
"occupiedColor": "secondary",
|
||||
"pillSize": 0.6,
|
||||
"showApplications": false,
|
||||
"showApplicationsHover": false,
|
||||
"showBadge": true,
|
||||
"showLabelsOnlyWhenOccupied": true,
|
||||
"unfocusedIconsOpacity": 1
|
||||
}
|
||||
],
|
||||
"right": [
|
||||
{
|
||||
"blacklist": [],
|
||||
"chevronColor": "none",
|
||||
"colorizeIcons": false,
|
||||
"drawerEnabled": true,
|
||||
"hidePassive": false,
|
||||
"id": "Tray",
|
||||
"pinned": []
|
||||
},
|
||||
{
|
||||
"compactMode": true,
|
||||
"diskPath": "/",
|
||||
"iconColor": "none",
|
||||
"id": "SystemMonitor",
|
||||
"showCpuCores": false,
|
||||
"showCpuFreq": false,
|
||||
"showCpuTemp": true,
|
||||
"showCpuUsage": true,
|
||||
"showDiskAvailable": false,
|
||||
"showDiskUsage": false,
|
||||
"showDiskUsageAsPercent": false,
|
||||
"showGpuTemp": false,
|
||||
"showLoadAverage": false,
|
||||
"showMemoryAsPercent": false,
|
||||
"showMemoryUsage": true,
|
||||
"showNetworkStats": false,
|
||||
"showSwapUsage": false,
|
||||
"textColor": "none",
|
||||
"useMonospaceFont": true,
|
||||
"usePadding": false
|
||||
},
|
||||
{
|
||||
"defaultSettings": {
|
||||
"autoMount": false,
|
||||
"fileBrowser": "yazi",
|
||||
"hideWhenEmpty": false,
|
||||
"iconColor": "none",
|
||||
"showBadge": false,
|
||||
"showNotifications": true,
|
||||
"terminalCommand": "kitty"
|
||||
},
|
||||
"id": "plugin:usb-drive-manager"
|
||||
},
|
||||
{
|
||||
"defaultSettings": {
|
||||
"autoPaste": false,
|
||||
"autoPasteDelay": 300,
|
||||
"autoPasteOnRightClick": false,
|
||||
"cardColors": {},
|
||||
"customColors": {},
|
||||
"enableTodoIntegration": false,
|
||||
"fullscreenMode": false,
|
||||
"hidePanelBackground": false,
|
||||
"notecardsEnabled": true,
|
||||
"panelHeight": 0,
|
||||
"panelWidth": 1450,
|
||||
"pincardsEnabled": true,
|
||||
"showCloseButton": true
|
||||
},
|
||||
"id": "plugin:clipper"
|
||||
},
|
||||
{
|
||||
"displayMode": "onhover",
|
||||
"iconColor": "none",
|
||||
"id": "Volume",
|
||||
"middleClickCommand": "pwvucontrol || pavucontrol",
|
||||
"textColor": "none"
|
||||
},
|
||||
{
|
||||
"applyToAllMonitors": false,
|
||||
"displayMode": "onhover",
|
||||
"iconColor": "none",
|
||||
"id": "Brightness",
|
||||
"textColor": "none"
|
||||
},
|
||||
{
|
||||
"deviceNativePath": "__default__",
|
||||
"displayMode": "graphic-clean",
|
||||
"hideIfIdle": false,
|
||||
"hideIfNotDetected": true,
|
||||
"id": "Battery",
|
||||
"showNoctaliaPerformance": false,
|
||||
"showPowerProfiles": false
|
||||
},
|
||||
{
|
||||
"colorizeDistroLogo": false,
|
||||
"colorizeSystemIcon": "secondary",
|
||||
"colorizeSystemText": "none",
|
||||
"customIconPath": "",
|
||||
"enableColorization": true,
|
||||
"icon": "settings",
|
||||
"id": "ControlCenter",
|
||||
"useDistroLogo": false
|
||||
},
|
||||
{
|
||||
"hideWhenZero": false,
|
||||
"hideWhenZeroUnread": false,
|
||||
"iconColor": "none",
|
||||
"id": "NotificationHistory",
|
||||
"showUnreadBadge": true,
|
||||
"unreadBadgeColor": "tertiary"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"brightness": {
|
||||
"backlightDeviceMappings": [],
|
||||
"brightnessStep": 5,
|
||||
"enableDdcSupport": false,
|
||||
"enforceMinimum": true
|
||||
},
|
||||
"calendar": {
|
||||
"cards": [
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "calendar-header-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "calendar-month-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "weather-card"
|
||||
}
|
||||
]
|
||||
},
|
||||
"colorSchemes": {
|
||||
"darkMode": true,
|
||||
"generationMethod": "tonal-spot",
|
||||
"manualSunrise": "06:30",
|
||||
"manualSunset": "18:30",
|
||||
"monitorForColors": "",
|
||||
"predefinedScheme": "Ayu",
|
||||
"schedulingMode": "off",
|
||||
"syncGsettings": true,
|
||||
"useWallpaperColors": false
|
||||
},
|
||||
"controlCenter": {
|
||||
"cards": [
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "profile-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "shortcuts-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "audio-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "brightness-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "weather-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "media-sysmon-card"
|
||||
}
|
||||
],
|
||||
"diskPath": "/",
|
||||
"position": "close_to_bar_button",
|
||||
"shortcuts": {
|
||||
"left": [
|
||||
{"id": "Network"},
|
||||
{"id": "Bluetooth"},
|
||||
{"id": "WallpaperSelector"},
|
||||
{"id": "NoctaliaPerformance"}
|
||||
],
|
||||
"right": [
|
||||
{"id": "Notifications"},
|
||||
{"id": "PowerProfile"},
|
||||
{"id": "KeepAwake"},
|
||||
{"id": "NightLight"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"desktopWidgets": {
|
||||
"enabled": false,
|
||||
"gridSnap": false,
|
||||
"gridSnapScale": false,
|
||||
"monitorWidgets": [],
|
||||
"overviewEnabled": true
|
||||
},
|
||||
"dock": {
|
||||
"animationSpeed": 1,
|
||||
"backgroundOpacity": 1,
|
||||
"colorizeIcons": false,
|
||||
"deadOpacity": 0.6,
|
||||
"displayMode": "auto_hide",
|
||||
"dockType": "floating",
|
||||
"enabled": false,
|
||||
"floatingRatio": 1,
|
||||
"groupApps": false,
|
||||
"groupClickAction": "cycle",
|
||||
"groupContextMenuMode": "extended",
|
||||
"groupIndicatorStyle": "dots",
|
||||
"inactiveIndicators": false,
|
||||
"indicatorColor": "primary",
|
||||
"indicatorOpacity": 0.6,
|
||||
"indicatorThickness": 3,
|
||||
"launcherIcon": "",
|
||||
"launcherIconColor": "none",
|
||||
"launcherPosition": "end",
|
||||
"launcherUseDistroLogo": false,
|
||||
"monitors": [],
|
||||
"onlySameOutput": true,
|
||||
"pinnedApps": [],
|
||||
"pinnedStatic": false,
|
||||
"position": "bottom",
|
||||
"showDockIndicator": false,
|
||||
"showLauncherIcon": false,
|
||||
"sitOnFrame": false,
|
||||
"size": 1
|
||||
},
|
||||
"general": {
|
||||
"allowPanelsOnScreenWithoutBar": true,
|
||||
"allowPasswordWithFprintd": false,
|
||||
"animationDisabled": false,
|
||||
"animationSpeed": 1,
|
||||
"autoStartAuth": false,
|
||||
"avatarImage": "{{ user_home }}/.face",
|
||||
"boxRadiusRatio": 1,
|
||||
"clockFormat": "hh\\nmm",
|
||||
"clockStyle": "custom",
|
||||
"compactLockScreen": false,
|
||||
"dimmerOpacity": 0.2,
|
||||
"enableBlurBehind": true,
|
||||
"enableLockScreenCountdown": true,
|
||||
"enableLockScreenMediaControls": false,
|
||||
"enableShadows": true,
|
||||
"forceBlackScreenCorners": false,
|
||||
"iRadiusRatio": 1,
|
||||
"keybinds": {
|
||||
"keyDown": ["Down"],
|
||||
"keyEnter": ["Return", "Enter"],
|
||||
"keyEscape": ["Esc"],
|
||||
"keyLeft": ["Left"],
|
||||
"keyRemove": ["Del"],
|
||||
"keyRight": ["Right"],
|
||||
"keyUp": ["Up"]
|
||||
},
|
||||
"language": "",
|
||||
"lockOnSuspend": true,
|
||||
"lockScreenAnimations": false,
|
||||
"lockScreenBlur": 0,
|
||||
"lockScreenCountdownDuration": 10000,
|
||||
"lockScreenMonitors": [],
|
||||
"lockScreenTint": 0,
|
||||
"passwordChars": false,
|
||||
"radiusRatio": 1,
|
||||
"reverseScroll": false,
|
||||
"scaleRatio": 1,
|
||||
"screenRadiusRatio": 1,
|
||||
"shadowDirection": "bottom_right",
|
||||
"shadowOffsetX": 2,
|
||||
"shadowOffsetY": 3,
|
||||
"showChangelogOnStartup": true,
|
||||
"showHibernateOnLockScreen": false,
|
||||
"showScreenCorners": false,
|
||||
"showSessionButtonsOnLockScreen": true,
|
||||
"smoothScrollEnabled": true,
|
||||
"telemetryEnabled": false
|
||||
},
|
||||
"hooks": {
|
||||
"colorGeneration": "",
|
||||
"darkModeChange": "",
|
||||
"enabled": false,
|
||||
"performanceModeDisabled": "",
|
||||
"performanceModeEnabled": "",
|
||||
"screenLock": "",
|
||||
"screenUnlock": "",
|
||||
"session": "",
|
||||
"startup": "",
|
||||
"wallpaperChange": ""
|
||||
},
|
||||
"idle": {
|
||||
"customCommands": "[]",
|
||||
"enabled": true,
|
||||
"fadeDuration": 5,
|
||||
"lockCommand": "",
|
||||
"lockTimeout": 660,
|
||||
"resumeLockCommand": "",
|
||||
"resumeScreenOffCommand": "",
|
||||
"resumeSuspendCommand": "",
|
||||
"screenOffCommand": "",
|
||||
"screenOffTimeout": 600,
|
||||
"suspendCommand": "",
|
||||
"suspendTimeout": 1800
|
||||
},
|
||||
"location": {
|
||||
"analogClockInCalendar": false,
|
||||
"autoLocate": false,
|
||||
"firstDayOfWeek": -1,
|
||||
"hideWeatherCityName": false,
|
||||
"hideWeatherTimezone": false,
|
||||
"name": "",
|
||||
"showCalendarEvents": true,
|
||||
"showCalendarWeather": true,
|
||||
"showWeekNumberInCalendar": false,
|
||||
"use12hourFormat": false,
|
||||
"useFahrenheit": false,
|
||||
"weatherEnabled": true,
|
||||
"weatherShowEffects": true,
|
||||
"weatherTaliaMascotAlways": false
|
||||
},
|
||||
"network": {
|
||||
"bluetoothAutoConnect": true,
|
||||
"bluetoothDetailsViewMode": "grid",
|
||||
"bluetoothHideUnnamedDevices": false,
|
||||
"bluetoothRssiPollIntervalMs": 60000,
|
||||
"bluetoothRssiPollingEnabled": false,
|
||||
"disableDiscoverability": false,
|
||||
"networkPanelView": "wifi",
|
||||
"wifiDetailsViewMode": "grid"
|
||||
},
|
||||
"nightLight": {
|
||||
"autoSchedule": true,
|
||||
"dayTemp": "6500",
|
||||
"enabled": false,
|
||||
"forced": false,
|
||||
"manualSunrise": "06:30",
|
||||
"manualSunset": "18:30",
|
||||
"nightTemp": "4000"
|
||||
},
|
||||
"noctaliaPerformance": {
|
||||
"disableDesktopWidgets": true,
|
||||
"disableWallpaper": true
|
||||
},
|
||||
"notifications": {
|
||||
"backgroundOpacity": 1,
|
||||
"clearDismissed": true,
|
||||
"criticalUrgencyDuration": 15,
|
||||
"density": "default",
|
||||
"enableBatteryToast": true,
|
||||
"enableKeyboardLayoutToast": true,
|
||||
"enableMarkdown": false,
|
||||
"enableMediaToast": false,
|
||||
"enabled": true,
|
||||
"location": "top_right",
|
||||
"lowUrgencyDuration": 3,
|
||||
"monitors": [],
|
||||
"normalUrgencyDuration": 8,
|
||||
"overlayLayer": true,
|
||||
"respectExpireTimeout": false,
|
||||
"saveToHistory": {
|
||||
"critical": true,
|
||||
"low": true,
|
||||
"normal": true
|
||||
},
|
||||
"sounds": {
|
||||
"criticalSoundFile": "",
|
||||
"enabled": false,
|
||||
"excludedApps": "discord,firefox,chrome,chromium,edge",
|
||||
"lowSoundFile": "",
|
||||
"normalSoundFile": "",
|
||||
"separateSounds": false,
|
||||
"volume": 0.5
|
||||
}
|
||||
},
|
||||
"osd": {
|
||||
"autoHideMs": 2000,
|
||||
"backgroundOpacity": 1,
|
||||
"enabled": true,
|
||||
"enabledTypes": [0, 1, 2],
|
||||
"location": "top_right",
|
||||
"monitors": [],
|
||||
"overlayLayer": true
|
||||
},
|
||||
"plugins": {
|
||||
"autoUpdate": false,
|
||||
"notifyUpdates": true
|
||||
},
|
||||
"sessionMenu": {
|
||||
"countdownDuration": 10000,
|
||||
"enableCountdown": true,
|
||||
"largeButtonsLayout": "single-row",
|
||||
"largeButtonsStyle": true,
|
||||
"position": "center",
|
||||
"powerOptions": [
|
||||
{"action": "lock", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "1"},
|
||||
{"action": "suspend", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "2"},
|
||||
{"action": "hibernate", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "3"},
|
||||
{"action": "reboot", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "4"},
|
||||
{"action": "logout", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "5"},
|
||||
{"action": "shutdown", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "6"},
|
||||
{"action": "rebootToUefi", "command": "", "countdownEnabled": true, "enabled": true, "keybind": "7"},
|
||||
{"action": "userspaceReboot", "command": "", "countdownEnabled": true, "enabled": false, "keybind": ""}
|
||||
],
|
||||
"showHeader": true,
|
||||
"showKeybinds": true
|
||||
},
|
||||
"settingsVersion": 59,
|
||||
"systemMonitor": {
|
||||
"batteryCriticalThreshold": 5,
|
||||
"batteryWarningThreshold": 20,
|
||||
"cpuCriticalThreshold": 90,
|
||||
"cpuWarningThreshold": 80,
|
||||
"criticalColor": "",
|
||||
"diskAvailCriticalThreshold": 10,
|
||||
"diskAvailWarningThreshold": 20,
|
||||
"diskCriticalThreshold": 90,
|
||||
"diskWarningThreshold": 80,
|
||||
"enableDgpuMonitoring": true,
|
||||
"externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor",
|
||||
"gpuCriticalThreshold": 90,
|
||||
"gpuWarningThreshold": 80,
|
||||
"memCriticalThreshold": 90,
|
||||
"memWarningThreshold": 80,
|
||||
"swapCriticalThreshold": 90,
|
||||
"swapWarningThreshold": 80,
|
||||
"tempCriticalThreshold": 90,
|
||||
"tempWarningThreshold": 80,
|
||||
"useCustomColors": false,
|
||||
"warningColor": ""
|
||||
},
|
||||
"templates": {
|
||||
"activeTemplates": [
|
||||
{"enabled": true, "id": "alacritty"},
|
||||
{"enabled": true, "id": "gtk"},
|
||||
{"enabled": true, "id": "emacs"},
|
||||
{"enabled": true, "id": "telegram"}
|
||||
],
|
||||
"enableUserTheming": false
|
||||
},
|
||||
"ui": {
|
||||
"boxBorderEnabled": false,
|
||||
"fontDefault": "Sans Serif",
|
||||
"fontDefaultScale": 1,
|
||||
"fontFixed": "monospace",
|
||||
"fontFixedScale": 1,
|
||||
"panelBackgroundOpacity": 0.93,
|
||||
"panelsAttachedToBar": true,
|
||||
"scrollbarAlwaysVisible": true,
|
||||
"settingsPanelMode": "centered",
|
||||
"settingsPanelSideBarCardStyle": false,
|
||||
"tooltipsEnabled": true,
|
||||
"translucentWidgets": false
|
||||
},
|
||||
"wallpaper": {
|
||||
"automationEnabled": false,
|
||||
"directory": "{{ user_home }}/Pictures/Wallpapers",
|
||||
"enableMultiMonitorDirectories": false,
|
||||
"enabled": true,
|
||||
"favorites": [],
|
||||
"fillColor": "#000000",
|
||||
"fillMode": "crop",
|
||||
"hideWallpaperFilenames": false,
|
||||
"linkLightAndDarkWallpapers": true,
|
||||
"monitorDirectories": [],
|
||||
"overviewBlur": 0.4,
|
||||
"overviewEnabled": false,
|
||||
"overviewTint": 0.6,
|
||||
"panelPosition": "follow_bar",
|
||||
"randomIntervalSec": 300,
|
||||
"setWallpaperOnAllMonitors": true,
|
||||
"showHiddenFiles": false,
|
||||
"skipStartupTransition": false,
|
||||
"solidColor": "#1a1a2e",
|
||||
"sortOrder": "name",
|
||||
"transitionDuration": 1500,
|
||||
"transitionEdgeSmoothness": 0.05,
|
||||
"transitionType": ["fade", "disc", "stripes", "wipe", "pixelate", "honeycomb"],
|
||||
"useOriginalImages": false,
|
||||
"useSolidColor": false,
|
||||
"useWallhaven": false,
|
||||
"viewMode": "single",
|
||||
"wallhavenApiKey": "",
|
||||
"wallhavenCategories": "111",
|
||||
"wallhavenOrder": "desc",
|
||||
"wallhavenPurity": "100",
|
||||
"wallhavenQuery": "",
|
||||
"wallhavenRatios": "",
|
||||
"wallhavenResolutionHeight": "",
|
||||
"wallhavenResolutionMode": "atleast",
|
||||
"wallhavenResolutionWidth": "",
|
||||
"wallhavenSorting": "relevance",
|
||||
"wallpaperChangeMode": "random"
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
set $menu qs -c noctalia-shell ipc call launcher toggle
|
||||
set $audio_panel qs -c noctalia-shell ipc call volume openPanel
|
||||
set $locker qs -c noctalia-shell ipc call lockScreen lock
|
||||
set $powermenu qs -c noctalia-shell ipc call sessionMenu toggle
|
||||
set $screenshot_full qs -c noctalia-shell ipc call plugin:screenshot takeScreenshot output
|
||||
set $screenshot_region qs -c noctalia-shell ipc call plugin:screenshot takeScreenshot region
|
||||
set $screenshot_window qs -c noctalia-shell ipc call plugin:screenshot takeScreenshot window
|
||||
set $audio_raise qs -c noctalia-shell ipc call volume increase
|
||||
set $audio_lower qs -c noctalia-shell ipc call volume decrease
|
||||
set $audio_mute qs -c noctalia-shell ipc call volume muteOutput
|
||||
set $audio_mic_mute qs -c noctalia-shell ipc call volume muteInput
|
||||
set $brightness_up qs -c noctalia-shell ipc call brightness increase
|
||||
set $brightness_down qs -c noctalia-shell ipc call brightness decrease
|
||||
|
||||
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE XCURSOR_THEME XCURSOR_SIZE
|
||||
exec systemctl --user import-environment WAYLAND_DISPLAY DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE XCURSOR_THEME XCURSOR_SIZE
|
||||
exec ~/.local/bin/update-turnstile-env
|
||||
exec dex --autostart --environment sway
|
||||
exec gnome-keyring-daemon --start --components=secrets
|
||||
exec ~/.local/bin/setup-gtk-theme
|
||||
exec pipewire
|
||||
exec pipewire-pulse
|
||||
exec wireplumber
|
||||
exec kanshi
|
||||
exec udiskie --no-tray
|
||||
exec wl-paste --watch cliphist store
|
||||
exec qs -c noctalia-shell
|
||||
|
||||
bindsym $mod+c exec qs -c noctalia-shell ipc call launcher clipboard
|
||||
@@ -19,11 +19,3 @@
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
|
||||
- name: Enable systemd services without starting them
|
||||
tags: [services, packages]
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ item }}"
|
||||
enabled: true
|
||||
loop: "{{ enabled_services_only | default([]) }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
|
||||
@@ -25,17 +25,6 @@
|
||||
- services_runit
|
||||
- profile_desktop_common
|
||||
- profile_desktop_i3
|
||||
- profile_desktop_sway
|
||||
- profile_desktop_host
|
||||
|
||||
- hosts: arch
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- packages_arch
|
||||
- services_systemd
|
||||
- profile_desktop_common
|
||||
- profile_desktop_gnome
|
||||
- profile_desktop_host
|
||||
|
||||
- hosts: workstation_dev_ubuntu
|
||||
|
||||
@@ -1,250 +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=com.github.xournalpp.xournalpp.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.gnome.Nautilus.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
|
||||
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=com.github.xournalpp.xournalpp.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.gnome.Nautilus.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;
|
||||
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,174 +0,0 @@
|
||||
set $mod Mod4
|
||||
set $terminal alacritty
|
||||
set $fallback_terminal st
|
||||
|
||||
# Host-specific overrides
|
||||
include ~/.config/sway/host.conf
|
||||
include ~/.config/sway/shell.conf
|
||||
|
||||
font pango:Liberation Mono 10
|
||||
|
||||
# Input and output defaults
|
||||
seat seat0 xcursor_theme Yaru 24
|
||||
|
||||
input type:keyboard {
|
||||
xkb_layout us
|
||||
xkb_variant intl
|
||||
}
|
||||
|
||||
focus_follows_mouse no
|
||||
mouse_warping none
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Borders
|
||||
default_border pixel 2
|
||||
default_floating_border pixel 2
|
||||
hide_edge_borders none
|
||||
|
||||
# Floating rules
|
||||
for_window [app_id="Rofi"] floating enable
|
||||
for_window [app_id="org.pulseaudio.pavucontrol"] floating enable
|
||||
for_window [class="Pavucontrol"] floating enable
|
||||
for_window [app_id="nm-connection-editor"] floating enable
|
||||
for_window [class="Nm-connection-editor"] floating enable
|
||||
for_window [app_id="blueman-manager"] floating enable
|
||||
for_window [class="Blueman-manager"] floating enable
|
||||
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
|
||||
# App launchers and window actions
|
||||
bindsym $mod+Return exec $terminal
|
||||
bindsym $mod+Shift+Return exec $fallback_terminal
|
||||
bindsym $mod+Shift+e exec emacsclient -c -n
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $mod+Shift+v exec $audio_panel
|
||||
bindsym $mod+Shift+f exec thunar
|
||||
bindsym $mod+Shift+x exec $locker
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# Screenshots
|
||||
bindsym Print exec $screenshot_full
|
||||
bindsym Shift+Print exec $screenshot_region
|
||||
bindsym Alt+Print exec $screenshot_window
|
||||
|
||||
# Focus
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move windows
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# Split and layouts
|
||||
bindsym $mod+b split h
|
||||
bindsym $mod+v split v
|
||||
|
||||
bindsym $mod+f fullscreen toggle
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
bindsym $mod+space focus mode_toggle
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# Scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
# Volume and brightness OSD
|
||||
bindsym XF86AudioRaiseVolume exec $audio_raise
|
||||
bindsym XF86AudioLowerVolume exec $audio_lower
|
||||
bindsym XF86AudioMute exec $audio_mute
|
||||
bindsym XF86AudioMicMute exec $audio_mic_mute
|
||||
|
||||
bindsym XF86MonBrightnessUp exec $brightness_up
|
||||
bindsym XF86MonBrightnessDown exec $brightness_down
|
||||
|
||||
# Media keys
|
||||
bindsym XF86AudioPlay exec playerctl play-pause
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
# Workspaces
|
||||
set $ws1 1
|
||||
set $ws2 2
|
||||
set $ws3 3
|
||||
set $ws4 4
|
||||
set $ws5 5
|
||||
set $ws6 6
|
||||
set $ws7 7
|
||||
set $ws8 8
|
||||
set $ws9 9
|
||||
set $ws10 10
|
||||
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
bindsym $mod+comma workspace prev
|
||||
bindsym $mod+period workspace next
|
||||
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||
|
||||
# Reload and power menu
|
||||
bindsym $mod+Shift+c reload
|
||||
bindsym $mod+Shift+r reload
|
||||
bindsym $mod+Shift+BackSpace exit
|
||||
bindsym $mod+Shift+Escape exec $powermenu
|
||||
|
||||
# Resize mode
|
||||
mode "resize" {
|
||||
bindsym $left resize shrink width 10 px or 10 ppt
|
||||
bindsym $down resize grow height 10 px or 10 ppt
|
||||
bindsym $up resize shrink height 10 px or 10 ppt
|
||||
bindsym $right resize grow width 10 px or 10 ppt
|
||||
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
client.focused #4a90d9 #4a90d9 #ffffff #4a90d9 #4a90d9
|
||||
client.focused_inactive #3a3a46 #2b2b36 #eeeeee #3a3a46 #3a3a46
|
||||
client.unfocused #2b2b36 #1f1f28 #bcbcbc #2b2b36 #2b2b36
|
||||
client.urgent #c7162b #c7162b #ffffff #c7162b #c7162b
|
||||
client.placeholder #1f1f28 #1f1f28 #bcbcbc #1f1f28 #1f1f28
|
||||
client.background #1f1f28
|
||||
@@ -1 +0,0 @@
|
||||
# Host-specific Sway overrides live here.
|
||||
@@ -1,11 +0,0 @@
|
||||
[Unit]
|
||||
Description=Emacs daemon
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=%h
|
||||
ExecStart=/usr/bin/emacs --fg-daemon
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
@@ -1,12 +0,0 @@
|
||||
[Unit]
|
||||
Description=Mount pCloud remote with rclone
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/bin/sh -lc 'mkdir -p "$HOME/.cache/rclone/pcloud" "$HOME/Remotes/pCloud"; mountpoint -q "$HOME/Remotes/pCloud" && exit 0; exec /usr/bin/rclone mount pcloud: "$HOME/Remotes/pCloud" --config "$HOME/.config/rclone/rclone.conf" --cache-dir "$HOME/.cache/rclone/pcloud" --vfs-cache-mode writes --dir-cache-time 10m --poll-interval 1m --log-level INFO'
|
||||
ExecStop=/bin/sh -lc 'mountpoint -q "$HOME/Remotes/pCloud" && exec /usr/bin/fusermount3 -u "$HOME/Remotes/pCloud" || exit 0'
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
@@ -1,13 +0,0 @@
|
||||
[Unit]
|
||||
Description=SSH key agent
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Environment=SSH_AUTH_SOCK=%h/.local/state/ssh-agent/socket
|
||||
ExecStartPre=/usr/bin/mkdir -p %h/.local/state/ssh-agent
|
||||
ExecStartPre=/usr/bin/rm -f %h/.local/state/ssh-agent/socket
|
||||
ExecStart=/usr/bin/ssh-agent -D -a %h/.local/state/ssh-agent/socket
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
@@ -1,10 +0,0 @@
|
||||
[Unit]
|
||||
Description=Syncthing file synchronization
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logfile=default
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
@@ -1,3 +0,0 @@
|
||||
pinentry-program /usr/bin/pinentry-gnome3
|
||||
default-cache-ttl 600
|
||||
max-cache-ttl 7200
|
||||
@@ -1,28 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -r /etc/profile ] && . /etc/profile
|
||||
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
||||
[ -r "$HOME/.config/sway/session-env" ] && . "$HOME/.config/sway/session-env"
|
||||
|
||||
set -eu
|
||||
|
||||
session_name=sway
|
||||
|
||||
export XDG_CURRENT_DESKTOP="$session_name"
|
||||
export XDG_SESSION_DESKTOP="$session_name"
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export SSH_AUTH_SOCK="$HOME/.local/state/ssh-agent/socket"
|
||||
|
||||
if [ "${SWAY_UNSUPPORTED_GPU:-0}" = "1" ]; then
|
||||
set -- sway --unsupported-gpu
|
||||
else
|
||||
set -- sway
|
||||
fi
|
||||
|
||||
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 "$@"
|
||||
' sh "$@"
|
||||
@@ -1,17 +0,0 @@
|
||||
profile solo {
|
||||
output DP-1 disable
|
||||
output DP-2 disable
|
||||
output HDMI-A-1 disable
|
||||
output HDMI-A-2 disable
|
||||
output eDP-1 enable mode 1920x1080 position 0,0
|
||||
exec swaymsg "workspace 1, move workspace to output eDP-1; workspace 2, move workspace to output eDP-1; workspace 3, move workspace to output eDP-1; workspace 4, move workspace to output eDP-1; workspace 5, move workspace to output eDP-1; workspace 6, move workspace to output eDP-1; workspace 7, move workspace to output eDP-1; workspace 8, move workspace to output eDP-1; workspace 9, move workspace to output eDP-1; workspace 10, move workspace to output eDP-1"
|
||||
}
|
||||
|
||||
profile dual {
|
||||
output DP-2 disable
|
||||
output HDMI-A-1 disable
|
||||
output HDMI-A-2 disable
|
||||
output eDP-1 enable mode 1920x1080 position 0,0
|
||||
output DP-1 enable mode 3440x1440@100Hz position 1920,0
|
||||
exec swaymsg "workspace 1, move workspace to output eDP-1; workspace 2, move workspace to output DP-1; workspace 3, move workspace to output DP-1; workspace 4, move workspace to output DP-1; workspace 5, move workspace to output DP-1; workspace 6, move workspace to output DP-1; workspace 7, move workspace to output DP-1; workspace 8, move workspace to output DP-1; workspace 9, move workspace to output DP-1; workspace 10, move workspace to output DP-1"
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
set $terminal ~/.local/bin/prime-run /usr/bin/alacritty
|
||||
|
||||
gaps inner 10
|
||||
gaps outer 5
|
||||
corner_radius 10
|
||||
|
||||
workspace 1 output eDP-1
|
||||
workspace 2 output DP-1
|
||||
workspace 3 output DP-1
|
||||
workspace 4 output DP-1
|
||||
workspace 5 output DP-1
|
||||
workspace 6 output DP-1
|
||||
workspace 7 output DP-1
|
||||
workspace 8 output DP-1
|
||||
workspace 9 output DP-1
|
||||
workspace 10 output DP-1
|
||||
@@ -1,4 +0,0 @@
|
||||
export LIBVA_DRIVER_NAME=iHD
|
||||
export SWAY_UNSUPPORTED_GPU=1
|
||||
export WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1
|
||||
export WLR_NO_HARDWARE_CURSORS=1
|
||||
@@ -1,73 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
set -eu
|
||||
|
||||
PACKAGES="
|
||||
swayfx
|
||||
kanshi
|
||||
grim
|
||||
grimshot
|
||||
slurp
|
||||
wl-clipboard
|
||||
xdg-desktop-portal-wlr
|
||||
cliphist
|
||||
noctalia-shell
|
||||
"
|
||||
|
||||
USER_PATHS="
|
||||
$HOME/.config/sway
|
||||
$HOME/.config/kanshi
|
||||
$HOME/.config/noctalia
|
||||
$HOME/.local/share/noctalia-plugins
|
||||
$HOME/.local/bin/start-sway-session
|
||||
"
|
||||
|
||||
SYSTEM_FILES="
|
||||
/etc/emptty/wayland-sessions/Sway.desktop
|
||||
/etc/xbps.d/noctalia.conf
|
||||
"
|
||||
|
||||
check_host() {
|
||||
if [ "$(hostname)" != "nymph" ]; then
|
||||
printf 'Error: questo script è destinato solo a nymph (hostname attuale: %s)\n' "$(hostname)" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
remove_packages() {
|
||||
printf 'Rimozione pacchetti swayfx+noctalia...\n'
|
||||
# shellcheck disable=SC2086
|
||||
sudo xbps-remove -Ry $PACKAGES
|
||||
printf 'Rimozione dipendenze orfane...\n'
|
||||
sudo xbps-remove -o
|
||||
}
|
||||
|
||||
remove_user_configs() {
|
||||
printf 'Rimozione configurazioni utente...\n'
|
||||
for path in $USER_PATHS; do
|
||||
if [ -e "$path" ]; then
|
||||
rm -rf "$path"
|
||||
printf ' rimosso: %s\n' "$path"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
remove_system_files() {
|
||||
printf 'Rimozione file di sistema...\n'
|
||||
for file in $SYSTEM_FILES; do
|
||||
if [ -e "$file" ]; then
|
||||
sudo rm -f "$file"
|
||||
printf ' rimosso: %s\n' "$file"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
check_host
|
||||
remove_packages
|
||||
remove_user_configs
|
||||
remove_system_files
|
||||
printf 'Cleanup completato.\n'
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user