mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 15:39:58 +00:00
Compare commits
37 Commits
525fa05352
...
feature/mi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6a8ca4a5a | ||
|
|
b23123ae4e | ||
|
|
25379afe2e | ||
|
|
b84a57fc5b | ||
|
|
63cd774f6f | ||
|
|
e5a2b4ee41 | ||
|
|
2065164459 | ||
|
|
85bf7cfd03 | ||
|
|
b7c1cb4482 | ||
|
|
69efe18e2b | ||
|
|
0910ecbd87 | ||
|
|
a6fc0573f2 | ||
|
|
47a45cb285 | ||
|
|
ae8c311044 | ||
|
|
b827ea97a1 | ||
|
|
2d3fb543de | ||
|
|
5023722505 | ||
|
|
1bcaaca92e | ||
|
|
0b3f5e4f0c | ||
|
|
dfa1bd194f | ||
|
|
5c510220a3 | ||
|
|
c9b02d8793 | ||
|
|
712face3f3 | ||
|
|
1763a309ef | ||
|
|
4854b1ae11 | ||
|
|
5a3d32cb0e | ||
|
|
fd07d6ad1f | ||
|
|
bff3d542ef | ||
|
|
e9466b24cc | ||
|
|
8e54448943 | ||
|
|
a755920fcf | ||
|
|
43619b714f | ||
|
|
ef65841030 | ||
|
|
8dea4ec07d | ||
|
|
36a8762e4d | ||
|
|
ac0d779f0f | ||
|
|
e7570d3bd3 |
@@ -1,7 +1,16 @@
|
|||||||
{
|
{
|
||||||
"permissions": {
|
"permissions": {
|
||||||
"allow": [
|
"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
|
# 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
|
## Source Of Truth
|
||||||
- Main orchestration: `ansible/site.yml`
|
- 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`.
|
- Codex config is rendered from `dotfiles/common/.codex/config.toml.j2` so `model_instructions_file` points to the deployed `~/.config/ai/bootstrap.md`.
|
||||||
|
|
||||||
## Topology
|
## Topology
|
||||||
- Void desktops: `ikaros`
|
- Void desktops: `ikaros`, `nymph`
|
||||||
- Arch desktops: `nymph`
|
|
||||||
- Native Linux workstations: `deadalus-ubuntu`, `deadalus-fedora`
|
- Native Linux workstations: `deadalus-ubuntu`, `deadalus-fedora`
|
||||||
- Windows host + WSL dev: `deadalus-win`, `deadalus-wsl`
|
- Windows host + WSL dev: `deadalus-win`, `deadalus-wsl`
|
||||||
- Ubuntu server: `prometheus`
|
- Ubuntu server: `prometheus`
|
||||||
@@ -35,15 +34,13 @@ Ansible-driven personal infrastructure repo for Void/Arch desktops, Linux workst
|
|||||||
- `ansible-lint ansible/roles`
|
- `ansible-lint ansible/roles`
|
||||||
- `yamllint ansible/`
|
- `yamllint ansible/`
|
||||||
- Host-focused dry runs:
|
- Host-focused dry runs:
|
||||||
- Void desktop work: `ansible-playbook ansible/site.yml --limit ikaros --check --diff`
|
- Void desktop work: `ansible-playbook ansible/site.yml --limit ikaros --check --diff` or `--limit nymph --check --diff`
|
||||||
- Arch desktop work: `ansible-playbook ansible/site.yml --limit nymph --check --diff`
|
|
||||||
- Ubuntu workstation: `ansible-playbook ansible/site.yml --limit deadalus-ubuntu --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`
|
- Fedora workstation: `ansible-playbook ansible/site.yml --limit deadalus-fedora --check --diff`
|
||||||
- WSL dev: `ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff`
|
- WSL dev: `ansible-playbook ansible/site.yml --limit deadalus-wsl --check --diff`
|
||||||
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
- Server: `ansible-playbook ansible/site.yml --limit prometheus --check --diff`
|
||||||
- Focused checks:
|
- Focused checks:
|
||||||
- Emacs dotfiles only: `ansible-playbook ansible/site.yml --limit ikaros --tags emacs --check --diff` or `--limit nymph --tags emacs --check --diff`
|
- 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`
|
- 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)"`
|
- 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`
|
- 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`.
|
- `.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`.
|
- 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/`.
|
- 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`.
|
- `ssh-agent` keeps the stable socket `~/.local/state/ssh-agent/socket`.
|
||||||
- Critical session entrypoints:
|
- Critical session entrypoints:
|
||||||
- `dotfiles/desktop/.xinitrc`
|
- `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.
|
- 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` 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.
|
||||||
- `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.
|
|
||||||
|
|
||||||
## Workstation / Windows Notes
|
## Workstation / Windows Notes
|
||||||
- Native Linux workstation hosts can combine `workstation_host_linux` with an OS-specific dev group.
|
- 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/
|
│ ├── common/
|
||||||
│ ├── desktop/
|
│ ├── desktop/
|
||||||
│ ├── fedora/
|
│ ├── fedora/
|
||||||
|
│ ├── ubuntu/
|
||||||
│ ├── server/
|
│ ├── server/
|
||||||
│ ├── workstation/
|
│ ├── workstation/
|
||||||
|
│ ├── workstation_host_linux/
|
||||||
|
│ ├── workstation_dev_wsl/
|
||||||
│ ├── ikaros/
|
│ ├── ikaros/
|
||||||
│ └── nymph/
|
│ └── nymph/
|
||||||
│
|
│
|
||||||
@@ -70,7 +73,7 @@ Sistema operativo:
|
|||||||
Sessioni desktop:
|
Sessioni desktop:
|
||||||
|
|
||||||
- `ikaros`: i3
|
- `ikaros`: i3
|
||||||
- `nymph`: SwayFX
|
- `nymph`: i3
|
||||||
|
|
||||||
Macchine:
|
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:
|
Lo stato attuale del profilo desktop include, tra le altre cose:
|
||||||
|
|
||||||
- dotfiles comuni e desktop
|
- dotfiles comuni e desktop
|
||||||
- sessione i3 su `ikaros` e sessione Sway su `nymph`
|
- sessione i3 su entrambi gli host
|
||||||
- `emptty` con default host-specific per il desktop attivo su ogni 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
|
- pacchetti Void Linux e servizi runit
|
||||||
- `turnstile` per i servizi utente, inclusi `emacs` e `ssh-agent`
|
- `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`
|
- `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
|
- `tmux` con plugin gestiti da TPM al bootstrap del profilo desktop
|
||||||
- Flatpak con remoto Flathub
|
- Flatpak con remoto Flathub
|
||||||
- GNOME Keyring e bootstrap della posta via script dedicato
|
- 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
|
||||||
- `udiskie` come backend per automount/LUKS su Sway, senza tray; la UI dei dispositivi removibili è demandata a `usb-drive-manager`
|
- `autorandr` per profili monitor host-specifici (`nymph` ha profili `dual` e `solo`)
|
||||||
- `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`
|
- 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
|
||||||
- monitor Noctalia e `screenOverrides` dichiarati in inventory (`noctalia_bar_monitors`, `noctalia_screen_overrides`) per host `nymph`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -270,7 +272,6 @@ I principali ruoli attualmente presenti sono:
|
|||||||
| services_systemd | gestione servizi systemd |
|
| services_systemd | gestione servizi systemd |
|
||||||
| profile_desktop_common | bootstrap desktop Void condiviso |
|
| profile_desktop_common | bootstrap desktop Void condiviso |
|
||||||
| profile_desktop_i3 | sessione desktop i3 |
|
| profile_desktop_i3 | sessione desktop i3 |
|
||||||
| profile_desktop_sway | sessione desktop Sway |
|
|
||||||
| profile_desktop_host | override desktop specifici per host |
|
| profile_desktop_host | override desktop specifici per host |
|
||||||
| profile_workstation_dev_common | configurazione dev workstation condivisa |
|
| profile_workstation_dev_common | configurazione dev workstation condivisa |
|
||||||
| profile_workstation_gnome | configurazione host workstation GNOME |
|
| profile_workstation_gnome | configurazione host workstation GNOME |
|
||||||
@@ -288,7 +289,7 @@ Il playbook `ansible/site.yml` e attualmente composto da sette blocchi:
|
|||||||
|
|
||||||
```text
|
```text
|
||||||
all:!workstation_host_windows -> dotfiles_common
|
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_ubuntu -> packages_ubuntu + services_systemd + profile_workstation_dev_common
|
||||||
workstation_dev_fedora -> packages_fedora + services_systemd + profile_workstation_dev_common
|
workstation_dev_fedora -> packages_fedora + services_systemd + profile_workstation_dev_common
|
||||||
workstation_host_linux -> profile_workstation_gnome
|
workstation_host_linux -> profile_workstation_gnome
|
||||||
@@ -316,7 +317,10 @@ dotfiles/
|
|||||||
├── desktop
|
├── desktop
|
||||||
├── server
|
├── server
|
||||||
├── fedora
|
├── fedora
|
||||||
|
├── ubuntu
|
||||||
├── workstation
|
├── workstation
|
||||||
|
├── workstation_host_linux
|
||||||
|
├── workstation_dev_wsl
|
||||||
├── ikaros
|
├── ikaros
|
||||||
└── nymph
|
└── nymph
|
||||||
```
|
```
|
||||||
@@ -372,7 +376,7 @@ ansible-playbook ansible/site.yml
|
|||||||
Allo stato attuale questo comando:
|
Allo stato attuale questo comando:
|
||||||
|
|
||||||
- distribuisce i dotfiles comuni a tutti gli host
|
- 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_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_dev_fedora` applica pacchetti Fedora, servizi systemd e profilo dev comune
|
||||||
- per `workstation_host_linux` applica il layer host Linux GNOME
|
- 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 |
|
| `nvidia` | componenti NVIDIA desktop | desktop Void |
|
||||||
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
| `packages` | installazione e aggiornamento pacchetti | tutti i profili |
|
||||||
| `services` | gestione servizi runit/systemd/Windows | 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 |
|
| `vscode` | installazione/configurazione VS Code | Fedora, host Linux, Windows |
|
||||||
| `wsl` | bootstrap e configurazione WSL | WSL, Windows |
|
| `wsl` | bootstrap e configurazione WSL | WSL, Windows |
|
||||||
|
|
||||||
Esempi pratici:
|
Esempi pratici:
|
||||||
|
|
||||||
```bash
|
```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 deadalus-fedora --tags packages,vscode --check --diff
|
||||||
ansible-playbook ansible/site.yml --limit prometheus --tags services,dotfiles:server --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-console
|
|
||||||
- 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
|
|
||||||
- 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
|
|
||||||
@@ -6,6 +6,7 @@ desktop_sessions_enabled:
|
|||||||
|
|
||||||
desktop_default_session: i3
|
desktop_default_session: i3
|
||||||
desktop_default_session_env: xorg
|
desktop_default_session_env: xorg
|
||||||
|
desktop_prompt_for_session: true
|
||||||
|
|
||||||
desktop_source_tools:
|
desktop_source_tools:
|
||||||
- name: gf
|
- name: gf
|
||||||
@@ -112,20 +113,6 @@ desktop_common_dotfiles:
|
|||||||
dest: .ssh/config
|
dest: .ssh/config
|
||||||
mode: "0600"
|
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:
|
desktop_emacs_dotfiles:
|
||||||
- name: Emacs config
|
- name: Emacs config
|
||||||
src: .emacs.d/
|
src: .emacs.d/
|
||||||
@@ -149,41 +136,48 @@ desktop_i3_dotfiles:
|
|||||||
src: .config/rofi/
|
src: .config/rofi/
|
||||||
dest: .config/rofi/
|
dest: .config/rofi/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
|
- name: picom config
|
||||||
|
src: .config/picom/picom.conf
|
||||||
|
dest: .config/picom/picom.conf
|
||||||
|
mode: "0644"
|
||||||
|
- name: polybar config
|
||||||
|
src: .config/polybar/config.ini
|
||||||
|
dest: .config/polybar/config.ini
|
||||||
|
mode: "0644"
|
||||||
|
- name: polybar launcher
|
||||||
|
src: .config/polybar/launch.sh
|
||||||
|
dest: .config/polybar/launch.sh
|
||||||
|
mode: "0755"
|
||||||
|
- name: alacritty config
|
||||||
|
src: .config/alacritty/
|
||||||
|
dest: .config/alacritty/
|
||||||
|
mode: preserve
|
||||||
- name: .xinitrc
|
- name: .xinitrc
|
||||||
src: .xinitrc
|
src: .xinitrc
|
||||||
dest: .xinitrc
|
dest: .xinitrc
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
|
|
||||||
desktop_sway_dotfiles:
|
desktop_sway_dotfiles:
|
||||||
- name: Sway config
|
- name: sway config
|
||||||
src: .config/sway/
|
src: .config/sway/
|
||||||
dest: .config/sway/
|
dest: .config/sway/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
- name: Sway wallpaper assets
|
- name: dunst config
|
||||||
src: .config/i3/wallpapers/
|
src: .config/dunst/
|
||||||
dest: .config/sway/wallpapers/
|
dest: .config/dunst/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
- name: Sway session wrapper
|
- name: rofi config
|
||||||
src: .local/bin/start-sway-session
|
src: .config/rofi/
|
||||||
dest: .local/bin/start-sway-session
|
dest: .config/rofi/
|
||||||
mode: "0755"
|
mode: preserve
|
||||||
- name: Noctalia colors
|
- name: waybar config
|
||||||
src: .config/noctalia/colors.json
|
src: .config/waybar/
|
||||||
dest: .config/noctalia/colors.json
|
dest: .config/waybar/
|
||||||
mode: "0644"
|
mode: preserve
|
||||||
- name: Noctalia plugins
|
- name: alacritty config
|
||||||
src: .config/noctalia/plugins.json
|
src: .config/alacritty/
|
||||||
dest: .config/noctalia/plugins.json
|
dest: .config/alacritty/
|
||||||
mode: "0644"
|
|
||||||
- name: Noctalia colorschemes
|
|
||||||
src: .config/noctalia/colorschemes/
|
|
||||||
dest: .config/noctalia/colorschemes/
|
|
||||||
mode: preserve
|
mode: preserve
|
||||||
|
|
||||||
noctalia_bar_monitors:
|
|
||||||
- DP-1
|
|
||||||
|
|
||||||
noctalia_screen_overrides: []
|
|
||||||
|
|
||||||
desktop_flatpak_packages:
|
desktop_flatpak_packages:
|
||||||
- be.alexandervanhee.gradia
|
- be.alexandervanhee.gradia
|
||||||
@@ -194,6 +188,7 @@ desktop_flatpak_packages:
|
|||||||
- com.spotify.Client
|
- com.spotify.Client
|
||||||
- io.github.flattool.Warehouse
|
- io.github.flattool.Warehouse
|
||||||
- org.telegram.desktop
|
- org.telegram.desktop
|
||||||
|
- org.mozilla.Thunderbird
|
||||||
|
|
||||||
desktop_flatpak_extensions:
|
desktop_flatpak_extensions:
|
||||||
- org.gtk.Gtk3theme.Yaru-Blue-dark//stable
|
- org.gtk.Gtk3theme.Yaru-Blue-dark//stable
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ void_packages_base:
|
|||||||
- tealdeer
|
- tealdeer
|
||||||
- tree-sitter-grammars
|
- tree-sitter-grammars
|
||||||
- ufw
|
- ufw
|
||||||
- xdotool
|
|
||||||
- void-repo-nonfree
|
- void-repo-nonfree
|
||||||
- vpm
|
- vpm
|
||||||
- vsv
|
- vsv
|
||||||
@@ -115,10 +114,6 @@ desktop_void_dotfiles:
|
|||||||
src: .bashrc.d/15-runit-desktop.sh
|
src: .bashrc.d/15-runit-desktop.sh
|
||||||
dest: .bashrc.d/15-runit-desktop.sh
|
dest: .bashrc.d/15-runit-desktop.sh
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
- name: alacritty config
|
|
||||||
src: .config/alacritty/
|
|
||||||
dest: .config/alacritty/
|
|
||||||
mode: preserve
|
|
||||||
- name: GTK theme setup script
|
- name: GTK theme setup script
|
||||||
src: .local/bin/setup-gtk-theme
|
src: .local/bin/setup-gtk-theme
|
||||||
dest: .local/bin/setup-gtk-theme
|
dest: .local/bin/setup-gtk-theme
|
||||||
@@ -137,9 +132,11 @@ desktop_void_dotfiles:
|
|||||||
mode: "0755"
|
mode: "0755"
|
||||||
|
|
||||||
desktop_common_packages:
|
desktop_common_packages:
|
||||||
|
- blueman
|
||||||
- brightnessctl
|
- brightnessctl
|
||||||
- dex
|
- dex
|
||||||
- emptty
|
- emptty
|
||||||
|
- network-manager-applet
|
||||||
- pinentry-emacs
|
- pinentry-emacs
|
||||||
- pinentry-gtk
|
- pinentry-gtk
|
||||||
- turnstile
|
- turnstile
|
||||||
@@ -147,6 +144,7 @@ desktop_common_packages:
|
|||||||
- xdg-desktop-portal
|
- xdg-desktop-portal
|
||||||
- xdg-desktop-portal-gtk
|
- xdg-desktop-portal-gtk
|
||||||
- xdg-user-dirs
|
- xdg-user-dirs
|
||||||
|
- xfce-polkit
|
||||||
|
|
||||||
desktop_i3_packages:
|
desktop_i3_packages:
|
||||||
- arandr
|
- arandr
|
||||||
@@ -158,28 +156,39 @@ desktop_i3_packages:
|
|||||||
- i3lock-color
|
- i3lock-color
|
||||||
- i3status
|
- i3status
|
||||||
- dunst
|
- dunst
|
||||||
- network-manager-applet
|
- picom
|
||||||
|
- polybar
|
||||||
- rofi
|
- rofi
|
||||||
- scrot
|
- scrot
|
||||||
- setxkbmap
|
- setxkbmap
|
||||||
- blueman
|
|
||||||
- volumeicon
|
- volumeicon
|
||||||
- xclip
|
- xclip
|
||||||
- xfce-polkit
|
|
||||||
- xfce4-clipman-plugin
|
- xfce4-clipman-plugin
|
||||||
- xfce4-screenshooter
|
- xfce4-screenshooter
|
||||||
- xkbutils
|
- xkbutils
|
||||||
- xorg-fonts
|
- xorg-fonts
|
||||||
- xorg-minimal
|
- xorg-minimal
|
||||||
- xss-lock
|
- xss-lock
|
||||||
|
- xdotool
|
||||||
|
|
||||||
desktop_sway_packages:
|
desktop_sway_packages:
|
||||||
|
- cliphist
|
||||||
|
- dunst
|
||||||
|
- flameshot
|
||||||
- grim
|
- grim
|
||||||
|
- jq
|
||||||
- kanshi
|
- kanshi
|
||||||
|
- rofi
|
||||||
- slurp
|
- slurp
|
||||||
- swayfx
|
- swayfx
|
||||||
|
- swaybg
|
||||||
|
- swayidle
|
||||||
|
- swaylock
|
||||||
|
- SwayOSD
|
||||||
|
- Waybar
|
||||||
- wl-clipboard
|
- wl-clipboard
|
||||||
- xdg-desktop-portal-wlr
|
- xdg-desktop-portal-wlr
|
||||||
|
- xorg-server-xwayland
|
||||||
|
|
||||||
profile_packages:
|
profile_packages:
|
||||||
- alacritty
|
- alacritty
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ hostname: ikaros
|
|||||||
|
|
||||||
desktop_sessions_enabled:
|
desktop_sessions_enabled:
|
||||||
- i3
|
- i3
|
||||||
|
- sway
|
||||||
|
|
||||||
desktop_default_session: i3
|
desktop_default_session: i3
|
||||||
desktop_default_session_env: xorg
|
desktop_default_session_env: xorg
|
||||||
|
|||||||
@@ -2,48 +2,43 @@
|
|||||||
hostname: nymph
|
hostname: nymph
|
||||||
|
|
||||||
desktop_sessions_enabled:
|
desktop_sessions_enabled:
|
||||||
- gnome
|
- i3
|
||||||
|
- sway
|
||||||
|
|
||||||
desktop_default_session: gnome
|
desktop_default_session: i3
|
||||||
desktop_default_session_env: wayland
|
desktop_default_session_env: xorg
|
||||||
|
desktop_emptty_session_error_logging: rotate
|
||||||
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 }}"
|
|
||||||
|
|
||||||
host_packages:
|
host_packages:
|
||||||
- intel-ucode
|
- nvidia580
|
||||||
- intel-media-driver
|
- linux-mainline-headers
|
||||||
- libva-intel-driver
|
- mesa-dri
|
||||||
- mesa
|
- vulkan-loader
|
||||||
- nvidia-open
|
- mesa-vulkan-intel
|
||||||
- nvidia-settings
|
- intel-video-accel
|
||||||
- nvidia-utils
|
|
||||||
- power-profiles-daemon
|
- power-profiles-daemon
|
||||||
|
- tlp
|
||||||
|
- tlp-rdw
|
||||||
- upower
|
- upower
|
||||||
- vulkan-icd-loader
|
|
||||||
- vulkan-intel
|
|
||||||
|
|
||||||
host_enabled_services:
|
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"
|
||||||
|
|
||||||
|
host_sway_dotfiles:
|
||||||
|
- src: .config/sway/host.conf
|
||||||
|
dest: .config/sway/host.conf
|
||||||
|
mode: "0644"
|
||||||
|
- src: .config/sway/session-env
|
||||||
|
dest: .config/sway/session-env
|
||||||
|
mode: "0644"
|
||||||
|
- src: .config/kanshi/
|
||||||
|
dest: .config/kanshi/
|
||||||
|
mode: preserve
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ all:
|
|||||||
hosts:
|
hosts:
|
||||||
ikaros:
|
ikaros:
|
||||||
ansible_connection: local
|
ansible_connection: local
|
||||||
|
nymph:
|
||||||
arch:
|
ansible_connection: local
|
||||||
children:
|
|
||||||
arch_desktop:
|
|
||||||
|
|
||||||
desktop:
|
desktop:
|
||||||
hosts:
|
hosts:
|
||||||
@@ -57,11 +55,6 @@ all:
|
|||||||
deadalus-fedora:
|
deadalus-fedora:
|
||||||
ansible_connection: local
|
ansible_connection: local
|
||||||
|
|
||||||
arch_desktop:
|
|
||||||
hosts:
|
|
||||||
nymph:
|
|
||||||
ansible_connection: local
|
|
||||||
|
|
||||||
workstation_host_linux:
|
workstation_host_linux:
|
||||||
hosts:
|
hosts:
|
||||||
deadalus-ubuntu:
|
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
|
|
||||||
@@ -27,12 +27,3 @@
|
|||||||
when:
|
when:
|
||||||
- not ansible_check_mode
|
- not ansible_check_mode
|
||||||
- "'void' in group_names"
|
- "'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:
|
loop:
|
||||||
- "{{ user_home }}/.config"
|
- "{{ user_home }}/.config"
|
||||||
- "{{ user_home }}/.config/autostart"
|
- "{{ user_home }}/.config/autostart"
|
||||||
- "{{ user_home }}/.config/systemd"
|
|
||||||
- "{{ user_home }}/.config/systemd/user"
|
|
||||||
- "{{ user_home }}/.bashrc.d"
|
- "{{ user_home }}/.bashrc.d"
|
||||||
- "{{ user_home }}/.tmux"
|
- "{{ user_home }}/.tmux"
|
||||||
- "{{ user_home }}/.tmux/bin"
|
- "{{ user_home }}/.tmux/bin"
|
||||||
- "{{ user_home }}/.tmux/plugins"
|
- "{{ user_home }}/.tmux/plugins"
|
||||||
|
- "{{ user_home }}/.ssh"
|
||||||
|
|
||||||
- name: Ensure user local bin directory exists
|
- name: Ensure user local bin directory exists
|
||||||
tags: [dotfiles, dotfiles:desktop, dotfiles:host]
|
tags: [dotfiles, dotfiles:desktop, dotfiles:host]
|
||||||
@@ -273,37 +272,10 @@
|
|||||||
{{
|
{{
|
||||||
(desktop_common_dotfiles | default([]))
|
(desktop_common_dotfiles | default([]))
|
||||||
+ ((desktop_void_dotfiles | default([])) if 'void' in group_names else [])
|
+ ((desktop_void_dotfiles | default([])) if 'void' in group_names else [])
|
||||||
+ ((desktop_arch_dotfiles | default([])) if 'arch' in group_names else [])
|
|
||||||
}}
|
}}
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.dest }}"
|
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
|
- name: Copy Emacs desktop dotfiles
|
||||||
tags: [dotfiles, dotfiles:desktop, emacs]
|
tags: [dotfiles, dotfiles:desktop, emacs]
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
@@ -492,6 +464,28 @@
|
|||||||
- (desktop_flatpak_extensions | default([])) | length > 0
|
- (desktop_flatpak_extensions | default([])) | length > 0
|
||||||
- item | length > 0
|
- item | length > 0
|
||||||
|
|
||||||
|
- name: Ensure /etc/flatpak/overrides exists
|
||||||
|
tags: [packages, flatpak, theme]
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/flatpak/overrides
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
when: (desktop_flatpak_packages | default([])) | length > 0
|
||||||
|
|
||||||
|
- name: Force dark GTK theme for Flatpak applications
|
||||||
|
tags: [packages, flatpak, theme]
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /etc/flatpak/overrides/global
|
||||||
|
content: |
|
||||||
|
[Environment]
|
||||||
|
GTK_THEME={{ desktop_flatpak_gtk_theme | default('Yaru-Blue-dark') }}
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when: (desktop_flatpak_packages | default([])) | length > 0
|
||||||
|
|
||||||
- name: Bootstrap rustup toolchain installer
|
- name: Bootstrap rustup toolchain installer
|
||||||
tags: [packages]
|
tags: [packages]
|
||||||
block:
|
block:
|
||||||
@@ -500,27 +494,14 @@
|
|||||||
path: "{{ user_home }}/.cargo/bin/rustc"
|
path: "{{ user_home }}/.cargo/bin/rustc"
|
||||||
register: rustup_initialized
|
register: rustup_initialized
|
||||||
|
|
||||||
- name: Run rustup-init with cargo env sourced (Void)
|
- name: Run rustup-init
|
||||||
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)
|
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: rustup toolchain install stable
|
cmd: rustup-init -y --no-modify-path
|
||||||
creates: "{{ user_home }}/.cargo/bin/rustc"
|
creates: "{{ user_home }}/.cargo/bin/rustc"
|
||||||
become_user: "{{ username }}"
|
become_user: "{{ username }}"
|
||||||
environment:
|
environment:
|
||||||
HOME: "{{ user_home }}"
|
HOME: "{{ user_home }}"
|
||||||
when:
|
when: not rustup_initialized.stat.exists
|
||||||
- not rustup_initialized.stat.exists
|
|
||||||
- "'arch' in group_names"
|
|
||||||
|
|
||||||
- name: Ensure cargo env is sourced in shell profile
|
- name: Ensure cargo env is sourced in shell profile
|
||||||
ansible.builtin.lineinfile:
|
ansible.builtin.lineinfile:
|
||||||
|
|||||||
@@ -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,7 +19,7 @@
|
|||||||
- "'i3' in (desktop_sessions_enabled | default([]))"
|
- "'i3' in (desktop_sessions_enabled | default([]))"
|
||||||
- (host_i3_dotfiles | default([])) | length > 0
|
- (host_i3_dotfiles | default([])) | length > 0
|
||||||
|
|
||||||
- name: Copy host-specific Sway dotfiles
|
- name: Copy host-specific sway dotfiles
|
||||||
tags: [dotfiles, dotfiles:desktop, dotfiles:host, sway]
|
tags: [dotfiles, dotfiles:desktop, dotfiles:host, sway]
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
src: "{{ playbook_dir }}/../dotfiles/{{ hostname }}/{{ item.src }}"
|
src: "{{ playbook_dir }}/../dotfiles/{{ hostname }}/{{ item.src }}"
|
||||||
@@ -33,3 +33,4 @@
|
|||||||
when:
|
when:
|
||||||
- "'sway' in (desktop_sessions_enabled | default([]))"
|
- "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
- (host_sway_dotfiles | default([])) | length > 0
|
- (host_sway_dotfiles | default([])) | length > 0
|
||||||
|
|
||||||
|
|||||||
@@ -1,75 +1,38 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure systemd-boot loader entries directory exists
|
- name: Check if GRUB_CMDLINE_LINUX line exists in /etc/default/grub
|
||||||
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
|
|
||||||
tags: [packages, nvidia]
|
tags: [packages, nvidia]
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
argv:
|
cmd: grep -E '^GRUB_CMDLINE_LINUX=' /etc/default/grub
|
||||||
- bootctl
|
register: nymph_grub_cmdline_check
|
||||||
- "--esp-path={{ host_systemd_boot_esp_path }}"
|
|
||||||
- is-installed
|
|
||||||
register: nymph_systemd_boot_state
|
|
||||||
changed_when: false
|
changed_when: false
|
||||||
failed_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]
|
tags: [packages, nvidia]
|
||||||
ansible.builtin.command:
|
ansible.builtin.lineinfile:
|
||||||
argv:
|
path: /etc/default/grub
|
||||||
- bootctl
|
line: 'GRUB_CMDLINE_LINUX=""'
|
||||||
- "--esp-path={{ host_systemd_boot_esp_path }}"
|
insertafter: '^GRUB_CMDLINE_LINUX_DEFAULT='
|
||||||
- install
|
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
|
changed_when: true
|
||||||
when:
|
when: nymph_grub_cmdline_init is changed or nymph_grub_cmdline_append is changed
|
||||||
- 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
|
|
||||||
|
|
||||||
- name: Configure NVIDIA power management for hybrid graphics
|
- name: Configure NVIDIA power management for hybrid graphics
|
||||||
tags: [packages, nvidia]
|
tags: [packages, nvidia]
|
||||||
@@ -98,13 +61,3 @@
|
|||||||
regexp: '^bindsym \$mod\+Return exec --no-startup-id /usr/bin/alacritty'
|
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'
|
line: 'bindsym $mod+Return exec --no-startup-id ~/.local/bin/prime-run /usr/bin/alacritty'
|
||||||
when: "'i3' in (desktop_sessions_enabled | default([]))"
|
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
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
- "{{ user_home }}/.config/dunst"
|
- "{{ user_home }}/.config/dunst"
|
||||||
- "{{ user_home }}/.config/i3"
|
- "{{ user_home }}/.config/i3"
|
||||||
- "{{ user_home }}/.config/i3blocks"
|
- "{{ user_home }}/.config/i3blocks"
|
||||||
|
- "{{ user_home }}/.config/picom"
|
||||||
|
- "{{ user_home }}/.config/polybar"
|
||||||
- "{{ user_home }}/.config/rofi"
|
- "{{ user_home }}/.config/rofi"
|
||||||
when: "'i3' in (desktop_sessions_enabled | default([]))"
|
when: "'i3' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[preferred]
|
||||||
|
default=gtk
|
||||||
|
org.freedesktop.impl.portal.Screenshot=wlr
|
||||||
|
org.freedesktop.impl.portal.ScreenCast=wlr
|
||||||
5
ansible/roles/profile_desktop_sway/files/sway.desktop
Normal file
5
ansible/roles/profile_desktop_sway/files/sway.desktop
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Sway
|
||||||
|
Comment=SwayFX (Wayland)
|
||||||
|
Exec=/usr/local/bin/start-sway
|
||||||
|
Type=Application
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure Sway config directories exist
|
- name: Ensure sway config directories exist
|
||||||
tags: [dotfiles, dotfiles:desktop, sway]
|
tags: [dotfiles, dotfiles:desktop, sway]
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
@@ -8,35 +8,56 @@
|
|||||||
group: "{{ user_group }}"
|
group: "{{ user_group }}"
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
loop:
|
loop:
|
||||||
|
- "{{ user_home }}/.config/alacritty"
|
||||||
|
- "{{ user_home }}/.config/dunst"
|
||||||
|
- "{{ user_home }}/.config/rofi"
|
||||||
- "{{ user_home }}/.config/sway"
|
- "{{ user_home }}/.config/sway"
|
||||||
- "{{ user_home }}/.config/kanshi"
|
- "{{ user_home }}/.config/sway/scripts"
|
||||||
|
- "{{ user_home }}/.config/sway/wallpapers"
|
||||||
|
- "{{ user_home }}/.config/waybar"
|
||||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
- name: Ensure Noctalia config directories exist
|
- name: Install allowed emptty Wayland sessions
|
||||||
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]
|
tags: [packages, services, emptty, sway]
|
||||||
ansible.builtin.template:
|
ansible.builtin.copy:
|
||||||
src: Sway.desktop.j2
|
src: sway.desktop
|
||||||
dest: /etc/emptty/wayland-sessions/Sway.desktop
|
dest: /etc/emptty/wayland-sessions/sway.desktop
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
- name: Copy Sway desktop dotfiles
|
- name: Install Sway session launcher in /usr/local/bin
|
||||||
|
tags: [packages, services, sway]
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ playbook_dir }}/../dotfiles/desktop/.local/bin/start-sway"
|
||||||
|
dest: /usr/local/bin/start-sway
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Ensure /etc/xdg/xdg-desktop-portal exists
|
||||||
|
tags: [packages, services, sway, portal]
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /etc/xdg/xdg-desktop-portal
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Configure xdg-desktop-portal backend preferences for sway
|
||||||
|
tags: [packages, services, sway, portal]
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: sway-portals.conf
|
||||||
|
dest: /etc/xdg/xdg-desktop-portal/sway-portals.conf
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Copy sway desktop dotfiles
|
||||||
tags: [dotfiles, dotfiles:desktop, sway]
|
tags: [dotfiles, dotfiles:desktop, sway]
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
src: "{{ playbook_dir }}/../dotfiles/desktop/{{ item.src }}"
|
||||||
@@ -48,38 +69,3 @@
|
|||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.dest }}"
|
label: "{{ item.dest }}"
|
||||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
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:
|
loop_control:
|
||||||
label: "{{ item }}"
|
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 }}"
|
|
||||||
|
|||||||
@@ -28,16 +28,6 @@
|
|||||||
- profile_desktop_sway
|
- profile_desktop_sway
|
||||||
- profile_desktop_host
|
- 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
|
- hosts: workstation_dev_ubuntu
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[window]
|
[window]
|
||||||
padding = { x = 8, y = 8 }
|
padding = { x = 8, y = 8 }
|
||||||
opacity = 1.0
|
opacity = 0.90
|
||||||
|
|
||||||
[font]
|
[font]
|
||||||
normal = { family = "Hack Nerd Font", style = "Regular" }
|
normal = { family = "Hack Nerd Font", style = "Regular" }
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ follow = mouse
|
|||||||
gap_size = 10
|
gap_size = 10
|
||||||
|
|
||||||
width = 360
|
width = 360
|
||||||
height = 120
|
height = (0, 120)
|
||||||
origin = top-right
|
origin = top-right
|
||||||
offset = 20x40
|
offset = (20, 40)
|
||||||
|
|
||||||
font = Liberation Sans 10
|
font = LiterationMono Nerd Font 10
|
||||||
line_height = 2
|
line_height = 2
|
||||||
|
|
||||||
padding = 12
|
padding = 12
|
||||||
@@ -19,7 +19,7 @@ separator_height = 2
|
|||||||
frame_width = 2
|
frame_width = 2
|
||||||
corner_radius = 8
|
corner_radius = 8
|
||||||
|
|
||||||
transparency = 0
|
transparency = 15
|
||||||
|
|
||||||
background = "#1f1f28"
|
background = "#1f1f28"
|
||||||
foreground = "#eeeeee"
|
foreground = "#eeeeee"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
set $mod Mod4
|
set $mod Mod4
|
||||||
set $refresh_i3status killall -SIGUSR1 i3status
|
set $refresh_i3status killall -SIGUSR1 i3status
|
||||||
|
|
||||||
font pango:Liberation Mono 10
|
font pango:LiterationMono Nerd Font 10
|
||||||
|
|
||||||
# Start XDG autostart entries (.desktop), useful on Void for pipewire/wireplumber/etc.
|
# Start XDG autostart entries (.desktop), useful on Void for pipewire/wireplumber/etc.
|
||||||
exec --no-startup-id dex --autostart --environment i3
|
exec --no-startup-id dex --autostart --environment i3
|
||||||
@@ -18,6 +18,12 @@ exec --no-startup-id pipewire
|
|||||||
exec --no-startup-id pipewire-pulse
|
exec --no-startup-id pipewire-pulse
|
||||||
exec --no-startup-id wireplumber
|
exec --no-startup-id wireplumber
|
||||||
|
|
||||||
|
# Compositor
|
||||||
|
exec_always --no-startup-id picom -b
|
||||||
|
|
||||||
|
# Status bar
|
||||||
|
exec_always --no-startup-id ~/.config/polybar/launch.sh
|
||||||
|
|
||||||
# Monitor configuration
|
# Monitor configuration
|
||||||
exec --no-startup-id autorandr --persistent --change
|
exec --no-startup-id autorandr --persistent --change
|
||||||
|
|
||||||
@@ -46,6 +52,12 @@ new_window pixel 2
|
|||||||
new_float pixel 2
|
new_float pixel 2
|
||||||
hide_edge_borders none
|
hide_edge_borders none
|
||||||
|
|
||||||
|
# Gaps (i3 >= 4.22)
|
||||||
|
gaps inner 10
|
||||||
|
gaps outer 4
|
||||||
|
smart_gaps on
|
||||||
|
smart_borders on
|
||||||
|
|
||||||
# vim-like directions
|
# vim-like directions
|
||||||
set $left h
|
set $left h
|
||||||
set $down j
|
set $down j
|
||||||
@@ -150,6 +162,17 @@ set $ws8 "8"
|
|||||||
set $ws9 "9"
|
set $ws9 "9"
|
||||||
set $ws10 "10"
|
set $ws10 "10"
|
||||||
|
|
||||||
|
workspace $ws1 output primary
|
||||||
|
workspace $ws2 output primary
|
||||||
|
workspace $ws3 output primary
|
||||||
|
workspace $ws4 output primary
|
||||||
|
workspace $ws5 output primary
|
||||||
|
workspace $ws6 output primary
|
||||||
|
workspace $ws7 output primary
|
||||||
|
workspace $ws8 output primary
|
||||||
|
workspace $ws9 output primary
|
||||||
|
workspace $ws10 output primary
|
||||||
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
bindsym $mod+1 workspace number $ws1
|
||||||
bindsym $mod+2 workspace number $ws2
|
bindsym $mod+2 workspace number $ws2
|
||||||
bindsym $mod+3 workspace number $ws3
|
bindsym $mod+3 workspace number $ws3
|
||||||
@@ -199,24 +222,24 @@ mode "resize" {
|
|||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
# i3bar + i3status
|
# i3bar + i3status (disabilitato: ora gestito da polybar)
|
||||||
bar {
|
# bar {
|
||||||
status_command i3blocks
|
# status_command i3blocks
|
||||||
position bottom
|
# position bottom
|
||||||
tray_output primary
|
# tray_output primary
|
||||||
font pango:Liberation Mono 10
|
# font pango:Liberation Mono 10
|
||||||
|
#
|
||||||
colors {
|
# colors {
|
||||||
background #1f1f28
|
# background #1f1f28
|
||||||
statusline #d0d0d0
|
# statusline #d0d0d0
|
||||||
separator #3a3a46
|
# separator #3a3a46
|
||||||
|
#
|
||||||
focused_workspace #4a90d9 #4a90d9 #ffffff
|
# focused_workspace #4a90d9 #4a90d9 #ffffff
|
||||||
active_workspace #3a3a46 #2b2b36 #d0d0d0
|
# active_workspace #3a3a46 #2b2b36 #d0d0d0
|
||||||
inactive_workspace #1f1f28 #1f1f28 #9a9a9a
|
# inactive_workspace #1f1f28 #1f1f28 #9a9a9a
|
||||||
urgent_workspace #c7162b #c7162b #ffffff
|
# urgent_workspace #c7162b #c7162b #ffffff
|
||||||
}
|
# }
|
||||||
}
|
# }
|
||||||
|
|
||||||
client.focused #4a90d9 #4a90d9 #ffffff #4a90d9 #4a90d9
|
client.focused #4a90d9 #4a90d9 #ffffff #4a90d9 #4a90d9
|
||||||
client.focused_inactive #3a3a46 #2b2b36 #eeeeee #3a3a46 #3a3a46
|
client.focused_inactive #3a3a46 #2b2b36 #eeeeee #3a3a46 #3a3a46
|
||||||
|
|||||||
@@ -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,18 +0,0 @@
|
|||||||
{
|
|
||||||
"mError": "#d95757",
|
|
||||||
"mHover": "#39bae6",
|
|
||||||
"mOnError": "#0b0e14",
|
|
||||||
"mOnHover": "#0b0e14",
|
|
||||||
"mOnPrimary": "#0b0e14",
|
|
||||||
"mOnSecondary": "#0b0e14",
|
|
||||||
"mOnSurface": "#d1d1c7",
|
|
||||||
"mOnSurfaceVariant": "#8e959e",
|
|
||||||
"mOnTertiary": "#0b0e14",
|
|
||||||
"mOutline": "#565b66",
|
|
||||||
"mPrimary": "#e6b450",
|
|
||||||
"mSecondary": "#aad94c",
|
|
||||||
"mShadow": "#000000",
|
|
||||||
"mSurface": "#0b0e14",
|
|
||||||
"mSurfaceVariant": "#1e222a",
|
|
||||||
"mTertiary": "#39bae6"
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
"dark": {
|
|
||||||
"mPrimary": "#b58fff",
|
|
||||||
"mOnPrimary": "#000000",
|
|
||||||
"mSecondary": "#c79aff",
|
|
||||||
"mOnSecondary": "#000000",
|
|
||||||
"mTertiary": "#d8b4ff",
|
|
||||||
"mOnTertiary": "#000000",
|
|
||||||
"mError": "#ff6f9b",
|
|
||||||
"mOnError": "#000000",
|
|
||||||
"mSurface": "#000000",
|
|
||||||
"mOnSurface": "#e8d8ff",
|
|
||||||
"mSurfaceVariant": "#110d1a",
|
|
||||||
"mOnSurfaceVariant": "#b58fff",
|
|
||||||
"mOutline": "#4c3a70",
|
|
||||||
"mShadow": "#000000",
|
|
||||||
"terminal": {
|
|
||||||
"foreground": "#e8d8ff",
|
|
||||||
"background": "#000000",
|
|
||||||
"selectionFg": "#e8d8ff",
|
|
||||||
"selectionBg": "#4c3a70",
|
|
||||||
"cursorText": "#000000",
|
|
||||||
"cursor": "#e8d8ff",
|
|
||||||
"normal": {
|
|
||||||
"black": "#000000",
|
|
||||||
"red": "#ff6f9b",
|
|
||||||
"green": "#a8e6cf",
|
|
||||||
"yellow": "#d8b4ff",
|
|
||||||
"blue": "#b58fff",
|
|
||||||
"magenta": "#c79aff",
|
|
||||||
"cyan": "#e0c1ff",
|
|
||||||
"white": "#e8d8ff"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#4c3a70",
|
|
||||||
"red": "#ff8cb3",
|
|
||||||
"green": "#b8f0d8",
|
|
||||||
"yellow": "#e6d1ff",
|
|
||||||
"blue": "#c9a8ff",
|
|
||||||
"magenta": "#d4b8ff",
|
|
||||||
"cyan": "#f0e0ff",
|
|
||||||
"white": "#f5f0ff"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"light": {
|
|
||||||
"mPrimary": "#8a56d4",
|
|
||||||
"mOnPrimary": "#ffffff",
|
|
||||||
"mSecondary": "#a074ff",
|
|
||||||
"mOnSecondary": "#ffffff",
|
|
||||||
"mTertiary": "#c79aff",
|
|
||||||
"mOnTertiary": "#ffffff",
|
|
||||||
"mError": "#ff6f9b",
|
|
||||||
"mOnError": "#ffffff",
|
|
||||||
"mSurface": "#fbf8ff",
|
|
||||||
"mOnSurface": "#1a1428",
|
|
||||||
"mSurfaceVariant": "#e8e0f8",
|
|
||||||
"mOnSurfaceVariant": "#8a56d4",
|
|
||||||
"mOutline": "#9b85c2",
|
|
||||||
"mShadow": "#e2d8f5",
|
|
||||||
"terminal": {
|
|
||||||
"foreground": "#1a1428",
|
|
||||||
"background": "#fbf8ff",
|
|
||||||
"selectionFg": "#1a1428",
|
|
||||||
"selectionBg": "#e8e0f8",
|
|
||||||
"cursorText": "#fbf8ff",
|
|
||||||
"cursor": "#1a1428",
|
|
||||||
"normal": {
|
|
||||||
"black": "#6b5b95",
|
|
||||||
"red": "#ff6f9b",
|
|
||||||
"green": "#6fb58f",
|
|
||||||
"yellow": "#c79aff",
|
|
||||||
"blue": "#8a56d4",
|
|
||||||
"magenta": "#a074ff",
|
|
||||||
"cyan": "#b89fff",
|
|
||||||
"white": "#1a1428"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#9b85c2",
|
|
||||||
"red": "#ff8cb3",
|
|
||||||
"green": "#85d7a8",
|
|
||||||
"yellow": "#e0c1ff",
|
|
||||||
"blue": "#b58fff",
|
|
||||||
"magenta": "#c79aff",
|
|
||||||
"cyan": "#d8b4ff",
|
|
||||||
"white": "#120f1f"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
{
|
|
||||||
"dark": {
|
|
||||||
"mPrimary": "#ff8cb3",
|
|
||||||
"mOnPrimary": "#000000",
|
|
||||||
"mSecondary": "#ffb3cc",
|
|
||||||
"mOnSecondary": "#000000",
|
|
||||||
"mTertiary": "#ffcce0",
|
|
||||||
"mOnTertiary": "#000000",
|
|
||||||
"mError": "#ff99b8",
|
|
||||||
"mOnError": "#000000",
|
|
||||||
"mSurface": "#000000",
|
|
||||||
"mOnSurface": "#ffe0eb",
|
|
||||||
"mSurfaceVariant": "#1a0f16",
|
|
||||||
"mOnSurfaceVariant": "#ff8cb3",
|
|
||||||
"mOutline": "#5a3f4d",
|
|
||||||
"mShadow": "#000000",
|
|
||||||
"terminal": {
|
|
||||||
"foreground": "#ffe0eb",
|
|
||||||
"background": "#000000",
|
|
||||||
"selectionFg": "#ffe0eb",
|
|
||||||
"selectionBg": "#5a3f4d",
|
|
||||||
"cursorText": "#000000",
|
|
||||||
"cursor": "#ffe0eb",
|
|
||||||
"normal": {
|
|
||||||
"black": "#000000",
|
|
||||||
"red": "#ff99b8",
|
|
||||||
"green": "#ffccdd",
|
|
||||||
"yellow": "#ffcce0",
|
|
||||||
"blue": "#ff8cb3",
|
|
||||||
"magenta": "#ffb3cc",
|
|
||||||
"cyan": "#ffd6e8",
|
|
||||||
"white": "#ffe0eb"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#5a3f4d",
|
|
||||||
"red": "#ffb8cc",
|
|
||||||
"green": "#ffd6e8",
|
|
||||||
"yellow": "#ffe0f0",
|
|
||||||
"blue": "#ffa8c2",
|
|
||||||
"magenta": "#ffccdd",
|
|
||||||
"cyan": "#ffe8f2",
|
|
||||||
"white": "#fff0f5"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"light": {
|
|
||||||
"mPrimary": "#e57399",
|
|
||||||
"mOnPrimary": "#ffffff",
|
|
||||||
"mSecondary": "#ff99b8",
|
|
||||||
"mOnSecondary": "#ffffff",
|
|
||||||
"mTertiary": "#ffb3cc",
|
|
||||||
"mOnTertiary": "#ffffff",
|
|
||||||
"mError": "#ff99b8",
|
|
||||||
"mOnError": "#ffffff",
|
|
||||||
"mSurface": "#fff5fa",
|
|
||||||
"mOnSurface": "#2c1822",
|
|
||||||
"mSurfaceVariant": "#f5d6e3",
|
|
||||||
"mOnSurfaceVariant": "#e57399",
|
|
||||||
"mOutline": "#b38099",
|
|
||||||
"mShadow": "#f0d0e0",
|
|
||||||
"terminal": {
|
|
||||||
"foreground": "#2c1822",
|
|
||||||
"background": "#fff5fa",
|
|
||||||
"selectionFg": "#2c1822",
|
|
||||||
"selectionBg": "#f5d6e3",
|
|
||||||
"cursorText": "#fff5fa",
|
|
||||||
"cursor": "#2c1822",
|
|
||||||
"normal": {
|
|
||||||
"black": "#8c6075",
|
|
||||||
"red": "#ff99b8",
|
|
||||||
"green": "#e599b3",
|
|
||||||
"yellow": "#ffb3cc",
|
|
||||||
"blue": "#e57399",
|
|
||||||
"magenta": "#ff99b8",
|
|
||||||
"cyan": "#ffb8d1",
|
|
||||||
"white": "#2c1822"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#b38099",
|
|
||||||
"red": "#ffb8cc",
|
|
||||||
"green": "#ffccdd",
|
|
||||||
"yellow": "#ffcce0",
|
|
||||||
"blue": "#ff8cb3",
|
|
||||||
"magenta": "#ffb3cc",
|
|
||||||
"cyan": "#ffd6e8",
|
|
||||||
"white": "#1a1015"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
{
|
|
||||||
"dark": {
|
|
||||||
"mPrimary": "#FFC799",
|
|
||||||
"mOnPrimary": "#000000",
|
|
||||||
"mSecondary": "#99FFE4",
|
|
||||||
"mOnSecondary": "#000000",
|
|
||||||
"mTertiary": "#FBADFF",
|
|
||||||
"mOnTertiary": "#000000",
|
|
||||||
"mError": "#FF8080",
|
|
||||||
"mOnError": "#000000",
|
|
||||||
"mSurface": "#0C0C0C",
|
|
||||||
"mOnSurface": "#FFFFFF",
|
|
||||||
"mSurfaceVariant": "#1C1C1C",
|
|
||||||
"mOnSurfaceVariant": "#A0A0A0",
|
|
||||||
"mOutline": "#505050",
|
|
||||||
"mShadow": "#000000",
|
|
||||||
"mHover": "#282828",
|
|
||||||
"mOnHover": "#FFFFFF",
|
|
||||||
"terminal": {
|
|
||||||
"foreground": "#FFFFFF",
|
|
||||||
"background": "#0C0C0C",
|
|
||||||
"normal": {
|
|
||||||
"black": "#0C0C0C",
|
|
||||||
"red": "#FF8080",
|
|
||||||
"green": "#99FFE4",
|
|
||||||
"yellow": "#FFC799",
|
|
||||||
"blue": "#80B3FF",
|
|
||||||
"magenta": "#FBADFF",
|
|
||||||
"cyan": "#99FFE4",
|
|
||||||
"white": "#A0A0A0"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#505050",
|
|
||||||
"red": "#FF8080",
|
|
||||||
"green": "#99FFE4",
|
|
||||||
"yellow": "#FFC799",
|
|
||||||
"blue": "#80B3FF",
|
|
||||||
"magenta": "#FBADFF",
|
|
||||||
"cyan": "#99FFE4",
|
|
||||||
"white": "#FFFFFF"
|
|
||||||
},
|
|
||||||
"cursor": "#FFFFFF",
|
|
||||||
"cursorText": "#000000",
|
|
||||||
"selectionFg": "#000000",
|
|
||||||
"selectionBg": "#FFC799"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"light": {
|
|
||||||
"mPrimary": "#FFB170",
|
|
||||||
"mOnPrimary": "#0C0C0C",
|
|
||||||
"mSecondary": "#00CC99",
|
|
||||||
"mOnSecondary": "#0C0C0C",
|
|
||||||
"mTertiary": "#FBADFF",
|
|
||||||
"mOnTertiary": "#0C0C0C",
|
|
||||||
"mError": "#FF8080",
|
|
||||||
"mOnError": "#0C0C0C",
|
|
||||||
"mSurface": "#F2F2F2",
|
|
||||||
"mOnSurface": "#0C0C0C",
|
|
||||||
"mSurfaceVariant": "#E5E5E5",
|
|
||||||
"mOnSurfaceVariant": "#282828",
|
|
||||||
"mOutline": "#505050",
|
|
||||||
"mShadow": "#D9D9D9",
|
|
||||||
"mHover": "#E0E0E0",
|
|
||||||
"mOnHover": "#0C0C0C",
|
|
||||||
"terminal": {
|
|
||||||
"foreground": "#0C0C0C",
|
|
||||||
"background": "#F2F2F2",
|
|
||||||
"normal": {
|
|
||||||
"black": "#F2F2F2",
|
|
||||||
"red": "#FF8080",
|
|
||||||
"green": "#00CC99",
|
|
||||||
"yellow": "#FFC799",
|
|
||||||
"blue": "#004A77",
|
|
||||||
"magenta": "#FBADFF",
|
|
||||||
"cyan": "#006B57",
|
|
||||||
"white": "#505050"
|
|
||||||
},
|
|
||||||
"bright": {
|
|
||||||
"black": "#A0A0A0",
|
|
||||||
"red": "#FF8080",
|
|
||||||
"green": "#00CC99",
|
|
||||||
"yellow": "#FFC799",
|
|
||||||
"blue": "#80B3FF",
|
|
||||||
"magenta": "#FBADFF",
|
|
||||||
"cyan": "#99FFE4",
|
|
||||||
"white": "#0C0C0C"
|
|
||||||
},
|
|
||||||
"cursor": "#0C0C0C",
|
|
||||||
"cursorText": "#F2F2F2",
|
|
||||||
"selectionFg": "#F2F2F2",
|
|
||||||
"selectionBg": "#FFC799"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
"sources": [
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"name": "Noctalia Plugins",
|
|
||||||
"url": "https://github.com/noctalia-dev/noctalia-plugins"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"states": {
|
|
||||||
"clipper": {
|
|
||||||
"enabled": true,
|
|
||||||
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
|
||||||
},
|
|
||||||
"polkit-agent": {
|
|
||||||
"enabled": true,
|
|
||||||
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
|
||||||
},
|
|
||||||
"screenshot": {
|
|
||||||
"enabled": true,
|
|
||||||
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
|
||||||
},
|
|
||||||
"usb-drive-manager": {
|
|
||||||
"enabled": true,
|
|
||||||
"sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"version": 2
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
{
|
|
||||||
"message": "Clipboard Panel",
|
|
||||||
"backgroundColor": "#fabd2f",
|
|
||||||
"cardColors": {
|
|
||||||
"Text": {
|
|
||||||
"bg": "mOutline",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnSurface"
|
|
||||||
},
|
|
||||||
"Image": {
|
|
||||||
"bg": "mTertiary",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnTertiary"
|
|
||||||
},
|
|
||||||
"Link": {
|
|
||||||
"bg": "mPrimary",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnPrimary"
|
|
||||||
},
|
|
||||||
"Code": {
|
|
||||||
"bg": "mSecondary",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnSecondary"
|
|
||||||
},
|
|
||||||
"Color": {
|
|
||||||
"bg": "mSecondary",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnSecondary"
|
|
||||||
},
|
|
||||||
"Emoji": {
|
|
||||||
"bg": "mHover",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnHover"
|
|
||||||
},
|
|
||||||
"File": {
|
|
||||||
"bg": "mError",
|
|
||||||
"separator": "mSurface",
|
|
||||||
"fg": "mOnError"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"customColors": {
|
|
||||||
"Text": {
|
|
||||||
"bg": "#555555",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#e9e4f0"
|
|
||||||
},
|
|
||||||
"Image": {
|
|
||||||
"bg": "#e0b7c9",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#20161f"
|
|
||||||
},
|
|
||||||
"Link": {
|
|
||||||
"bg": "#c7a1d8",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#1a151f"
|
|
||||||
},
|
|
||||||
"Code": {
|
|
||||||
"bg": "#a984c4",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#f3edf7"
|
|
||||||
},
|
|
||||||
"Color": {
|
|
||||||
"bg": "#a984c4",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#f3edf7"
|
|
||||||
},
|
|
||||||
"Emoji": {
|
|
||||||
"bg": "#e0b7c9",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#20161f"
|
|
||||||
},
|
|
||||||
"File": {
|
|
||||||
"bg": "#e9899d",
|
|
||||||
"separator": "#000000",
|
|
||||||
"fg": "#1e1418"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"enableTodoIntegration": true,
|
|
||||||
"autoOpenPinnedPanel": false,
|
|
||||||
"pincardsEnabled": true,
|
|
||||||
"notecardsEnabled": true,
|
|
||||||
"showCloseButton": true,
|
|
||||||
"closeOnBackgroundClick": true
|
|
||||||
}
|
|
||||||
57
dotfiles/desktop/.config/picom/picom.conf
Normal file
57
dotfiles/desktop/.config/picom/picom.conf
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
backend = "glx";
|
||||||
|
vsync = true;
|
||||||
|
use-damage = true;
|
||||||
|
detect-rounded-corners = true;
|
||||||
|
detect-client-opacity = true;
|
||||||
|
detect-transient = true;
|
||||||
|
|
||||||
|
corner-radius = 10;
|
||||||
|
rounded-corners-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"class_g = 'i3-frame'"
|
||||||
|
];
|
||||||
|
|
||||||
|
shadow = true;
|
||||||
|
shadow-radius = 18;
|
||||||
|
shadow-opacity = 0.55;
|
||||||
|
shadow-offset-x = -10;
|
||||||
|
shadow-offset-y = -10;
|
||||||
|
shadow-exclude = [
|
||||||
|
"name = 'Notification'",
|
||||||
|
"class_g = 'Conky'",
|
||||||
|
"class_g ?= 'Notify-osd'",
|
||||||
|
"class_g = 'Cairo-clock'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c",
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'"
|
||||||
|
];
|
||||||
|
|
||||||
|
fading = true;
|
||||||
|
fade-in-step = 0.05;
|
||||||
|
fade-out-step = 0.05;
|
||||||
|
fade-delta = 6;
|
||||||
|
|
||||||
|
blur-method = "dual_kawase";
|
||||||
|
blur-strength = 5;
|
||||||
|
blur-background = true;
|
||||||
|
blur-background-frame = true;
|
||||||
|
blur-background-fixed = false;
|
||||||
|
blur-background-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"class_g = 'i3-frame'",
|
||||||
|
"class_g = 'Dunst'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
opacity-rule = [];
|
||||||
|
|
||||||
|
wintypes:
|
||||||
|
{
|
||||||
|
tooltip = { fade = true; shadow = true; opacity = 0.95; focus = true; };
|
||||||
|
dock = { shadow = false; };
|
||||||
|
dnd = { shadow = false; };
|
||||||
|
popup_menu = { opacity = 0.95; };
|
||||||
|
dropdown_menu = { opacity = 0.95; };
|
||||||
|
};
|
||||||
208
dotfiles/desktop/.config/polybar/config.ini
Normal file
208
dotfiles/desktop/.config/polybar/config.ini
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
[colors]
|
||||||
|
background = #1f1f28
|
||||||
|
background-alt = #2b2b36
|
||||||
|
foreground = #d0d0d0
|
||||||
|
foreground-alt = #9a9a9a
|
||||||
|
primary = #4a90d9
|
||||||
|
secondary = #7dcfff
|
||||||
|
warm = #e0af68
|
||||||
|
success = #9ec07c
|
||||||
|
info = #bb9af7
|
||||||
|
alert = #c7162b
|
||||||
|
disabled = #3a3a46
|
||||||
|
|
||||||
|
[bar/main]
|
||||||
|
monitor = ${env:MONITOR:}
|
||||||
|
bottom = false
|
||||||
|
width = 100%
|
||||||
|
height = 24pt
|
||||||
|
radius = 0
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
line-size = 2pt
|
||||||
|
border-size = 0
|
||||||
|
padding-left = 1
|
||||||
|
padding-right = 1
|
||||||
|
module-margin = 1
|
||||||
|
|
||||||
|
font-0 = LiterationMono Nerd Font:size=10;2
|
||||||
|
font-1 = Symbols Nerd Font Mono:size=12;2
|
||||||
|
|
||||||
|
modules-left = i3
|
||||||
|
modules-center = date
|
||||||
|
modules-right = cpu memory disk temperature backlight wifi battery
|
||||||
|
|
||||||
|
tray-position = right
|
||||||
|
tray-padding = 2
|
||||||
|
|
||||||
|
cursor-click = pointer
|
||||||
|
|
||||||
|
wm-restack = i3
|
||||||
|
override-redirect = false
|
||||||
|
|
||||||
|
[module/i3]
|
||||||
|
type = internal/i3
|
||||||
|
pin-workspaces = false
|
||||||
|
show-urgent = true
|
||||||
|
strip-wsnumbers = true
|
||||||
|
enable-scroll = false
|
||||||
|
index-sort = true
|
||||||
|
|
||||||
|
ws-icon-0 = 1;I
|
||||||
|
ws-icon-1 = 2;II
|
||||||
|
ws-icon-2 = 3;III
|
||||||
|
ws-icon-3 = 4;IV
|
||||||
|
ws-icon-4 = 5;V
|
||||||
|
ws-icon-5 = 6;VI
|
||||||
|
ws-icon-6 = 7;VII
|
||||||
|
ws-icon-7 = 8;VIII
|
||||||
|
ws-icon-8 = 9;IX
|
||||||
|
ws-icon-9 = 10;X
|
||||||
|
ws-icon-default =
|
||||||
|
|
||||||
|
label-focused = %icon%
|
||||||
|
label-focused-foreground = #ffffff
|
||||||
|
label-focused-background = ${colors.primary}
|
||||||
|
label-focused-padding = 1
|
||||||
|
|
||||||
|
label-unfocused = %icon%
|
||||||
|
label-unfocused-foreground = ${colors.foreground-alt}
|
||||||
|
label-unfocused-padding = 1
|
||||||
|
|
||||||
|
label-visible = %icon%
|
||||||
|
label-visible-foreground = ${colors.foreground}
|
||||||
|
label-visible-background = ${colors.background-alt}
|
||||||
|
label-visible-padding = 1
|
||||||
|
|
||||||
|
label-urgent = %icon%
|
||||||
|
label-urgent-foreground = #ffffff
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 60
|
||||||
|
date = %Y-%m-%d
|
||||||
|
time = %H:%M
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.foreground-alt}
|
||||||
|
label = %date% %time%
|
||||||
|
label-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 10
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.secondary}
|
||||||
|
label = %gb_used% / %gb_total%
|
||||||
|
label-foreground = ${colors.secondary}
|
||||||
|
|
||||||
|
[module/temperature]
|
||||||
|
type = internal/temperature
|
||||||
|
interval = 10
|
||||||
|
thermal-zone = 0
|
||||||
|
warn-temperature = 80
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.warm}
|
||||||
|
format-warn = <label-warn>
|
||||||
|
format-warn-prefix = " "
|
||||||
|
format-warn-prefix-foreground = ${colors.alert}
|
||||||
|
label = %temperature-c%
|
||||||
|
label-foreground = ${colors.warm}
|
||||||
|
label-warn = %temperature-c%
|
||||||
|
label-warn-foreground = ${colors.alert}
|
||||||
|
|
||||||
|
[module/backlight]
|
||||||
|
type = internal/backlight
|
||||||
|
card = intel_backlight
|
||||||
|
use-actual-brightness = true
|
||||||
|
enable-scroll = true
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.foreground}
|
||||||
|
label = %percentage%%
|
||||||
|
label-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
[module/wifi]
|
||||||
|
type = internal/network
|
||||||
|
interface-type = wireless
|
||||||
|
interval = 5
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-connected-prefix = " "
|
||||||
|
format-connected-prefix-foreground = ${colors.primary}
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
format-disconnected-prefix = " "
|
||||||
|
format-disconnected-prefix-foreground = ${colors.disabled}
|
||||||
|
label-connected = %essid% %signal%%
|
||||||
|
label-connected-foreground = ${colors.primary}
|
||||||
|
label-disconnected = offline
|
||||||
|
label-disconnected-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/battery]
|
||||||
|
type = internal/battery
|
||||||
|
battery = BAT0
|
||||||
|
adapter = AC
|
||||||
|
full-at = 98
|
||||||
|
low-at = 15
|
||||||
|
|
||||||
|
format-charging = <animation-charging> <label-charging>
|
||||||
|
format-discharging = <ramp-capacity> <label-discharging>
|
||||||
|
format-full = <label-full>
|
||||||
|
format-low = <label-low>
|
||||||
|
|
||||||
|
format-full-prefix = " "
|
||||||
|
format-full-prefix-foreground = ${colors.success}
|
||||||
|
|
||||||
|
label-charging = %percentage%%
|
||||||
|
label-charging-foreground = ${colors.success}
|
||||||
|
label-discharging = %percentage%%
|
||||||
|
label-discharging-foreground = ${colors.foreground}
|
||||||
|
label-full = full
|
||||||
|
label-full-foreground = ${colors.success}
|
||||||
|
label-low = %percentage%%
|
||||||
|
label-low-foreground = ${colors.alert}
|
||||||
|
|
||||||
|
ramp-capacity-0 =
|
||||||
|
ramp-capacity-1 =
|
||||||
|
ramp-capacity-2 =
|
||||||
|
ramp-capacity-3 =
|
||||||
|
ramp-capacity-4 =
|
||||||
|
ramp-capacity-foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
animation-charging-0 =
|
||||||
|
animation-charging-1 =
|
||||||
|
animation-charging-2 =
|
||||||
|
animation-charging-3 =
|
||||||
|
animation-charging-4 =
|
||||||
|
animation-charging-foreground = ${colors.success}
|
||||||
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 5
|
||||||
|
format = <label>
|
||||||
|
format-prefix = " "
|
||||||
|
format-prefix-foreground = ${colors.info}
|
||||||
|
label = %percentage%%
|
||||||
|
label-foreground = ${colors.info}
|
||||||
|
|
||||||
|
[module/disk]
|
||||||
|
type = internal/fs
|
||||||
|
mount-0 = /
|
||||||
|
interval = 60
|
||||||
|
format-mounted = <label-mounted>
|
||||||
|
format-mounted-prefix = " "
|
||||||
|
format-mounted-prefix-foreground = ${colors.success}
|
||||||
|
label-mounted = %used% / %total%
|
||||||
|
label-mounted-foreground = ${colors.success}
|
||||||
|
format-unmounted = <label-unmounted>
|
||||||
|
format-unmounted-prefix = " "
|
||||||
|
format-unmounted-prefix-foreground = ${colors.disabled}
|
||||||
|
label-unmounted = %mountpoint% n/a
|
||||||
|
label-unmounted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
pseudo-transparency = false
|
||||||
20
dotfiles/desktop/.config/polybar/launch.sh
Normal file
20
dotfiles/desktop/.config/polybar/launch.sh
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Restart polybar on each connected monitor.
|
||||||
|
|
||||||
|
polybar-msg cmd quit >/dev/null 2>&1 || true
|
||||||
|
|
||||||
|
while pgrep -u "$UID" -x polybar >/dev/null; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
if command -v xrandr >/dev/null 2>&1; then
|
||||||
|
monitors=$(xrandr --query | awk '/ connected/ {print $1}')
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${monitors:-}" ]; then
|
||||||
|
for m in $monitors; do
|
||||||
|
MONITOR="$m" polybar main >/dev/null 2>&1 &
|
||||||
|
done
|
||||||
|
else
|
||||||
|
polybar main >/dev/null 2>&1 &
|
||||||
|
fi
|
||||||
@@ -2,7 +2,7 @@ configuration {
|
|||||||
modi: "drun,run,window";
|
modi: "drun,run,window";
|
||||||
show-icons: true;
|
show-icons: true;
|
||||||
icon-theme: "Yaru";
|
icon-theme: "Yaru";
|
||||||
font: "Liberation Sans 11";
|
font: "LiterationMono Nerd Font 11";
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
|
|||||||
@@ -1,64 +1,156 @@
|
|||||||
|
# Sway / SwayFX config
|
||||||
|
|
||||||
set $mod Mod4
|
set $mod Mod4
|
||||||
|
|
||||||
|
font pango:LiterationMono Nerd Font 10
|
||||||
|
|
||||||
|
# vim-like directions
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
|
||||||
|
# Default terminal (hosts can override via host.conf — e.g. nymph wraps it in prime-run)
|
||||||
set $terminal alacritty
|
set $terminal alacritty
|
||||||
set $fallback_terminal st
|
|
||||||
|
|
||||||
# Host-specific overrides
|
# Workspaces (waybar formatta i numeri in romani via format-icons)
|
||||||
include ~/.config/sway/host.conf
|
set $ws1 "1"
|
||||||
include ~/.config/sway/shell.conf
|
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"
|
||||||
|
|
||||||
font pango:Liberation Mono 10
|
# Input devices
|
||||||
|
input * {
|
||||||
# Input and output defaults
|
|
||||||
seat seat0 xcursor_theme Yaru 24
|
|
||||||
|
|
||||||
input type:keyboard {
|
|
||||||
xkb_layout us
|
xkb_layout us
|
||||||
xkb_variant intl
|
xkb_variant intl
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Cursor
|
||||||
|
seat * xcursor_theme Yaru 24
|
||||||
|
|
||||||
|
# Outputs
|
||||||
|
output * bg ~/.config/sway/wallpapers/wallpaper-161664.jpg center
|
||||||
|
|
||||||
|
# SwayFX effects
|
||||||
|
corner_radius 8
|
||||||
|
blur enable
|
||||||
|
blur_passes 2
|
||||||
|
blur_radius 5
|
||||||
|
shadows enable
|
||||||
|
default_dim_inactive 0.1
|
||||||
|
|
||||||
|
# Allow X11 applications
|
||||||
|
xwayland enable
|
||||||
|
|
||||||
|
# General behavior
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
mouse_warping none
|
mouse_warping none
|
||||||
floating_modifier $mod normal
|
floating_modifier $mod
|
||||||
|
tiling_drag enable
|
||||||
|
|
||||||
# Borders
|
# Borders
|
||||||
default_border pixel 2
|
default_border pixel 2
|
||||||
default_floating_border pixel 2
|
default_floating_border pixel 2
|
||||||
hide_edge_borders none
|
hide_edge_borders none
|
||||||
|
|
||||||
# Floating rules
|
# Gaps
|
||||||
for_window [app_id="Rofi"] floating enable
|
gaps inner 10
|
||||||
for_window [app_id="org.pulseaudio.pavucontrol"] floating enable
|
gaps outer 4
|
||||||
for_window [class="Pavucontrol"] floating enable
|
smart_gaps on
|
||||||
for_window [app_id="nm-connection-editor"] floating enable
|
smart_borders on
|
||||||
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
|
# Per-host overrides (terminal wrapper, gaps tweaks, workspace→output bindings, …)
|
||||||
set $down j
|
include ~/.config/sway/host.conf
|
||||||
set $up k
|
|
||||||
set $right l
|
|
||||||
|
|
||||||
# App launchers and window actions
|
# Window rules
|
||||||
|
for_window [app_id="(?i)polkit"] floating enable
|
||||||
|
for_window [class="(?i)polkit"] floating enable
|
||||||
|
for_window [title="^Authentication Required"] floating enable
|
||||||
|
|
||||||
|
# Autostart — XDG and session services
|
||||||
|
exec dex --autostart --environment sway
|
||||||
|
exec gnome-keyring-daemon --start --components=secrets
|
||||||
|
exec_always ~/.config/sway/scripts/setup-gtk-theme.sh
|
||||||
|
exec /usr/libexec/xdg-desktop-portal
|
||||||
|
|
||||||
|
# Audio
|
||||||
|
exec pipewire
|
||||||
|
exec pipewire-pulse
|
||||||
|
exec wireplumber
|
||||||
|
|
||||||
|
# Status bar
|
||||||
|
exec waybar
|
||||||
|
|
||||||
|
# OSD daemon (volume/brightness/caps-lock)
|
||||||
|
exec swayosd-server
|
||||||
|
|
||||||
|
# Tray services
|
||||||
|
exec dunst
|
||||||
|
exec /usr/libexec/xfce-polkit
|
||||||
|
exec nm-applet
|
||||||
|
exec blueman-applet
|
||||||
|
exec udiskie
|
||||||
|
exec flameshot
|
||||||
|
|
||||||
|
# Clipboard manager (Wayland-native)
|
||||||
|
exec wl-paste --type text --watch cliphist store
|
||||||
|
exec wl-paste --type image --watch cliphist store
|
||||||
|
|
||||||
|
# Idle / lock policy
|
||||||
|
# 5 min idle → lock
|
||||||
|
# 10 min idle → screen off (DPMS)
|
||||||
|
# resume → screen on
|
||||||
|
# before sleep → lock
|
||||||
|
exec swayidle -w \
|
||||||
|
timeout 300 '~/.config/sway/scripts/lockscreen' \
|
||||||
|
timeout 600 'swaymsg "output * dpms off"' \
|
||||||
|
resume 'swaymsg "output * dpms on"' \
|
||||||
|
before-sleep '~/.config/sway/scripts/lockscreen'
|
||||||
|
|
||||||
|
# Terminal
|
||||||
bindsym $mod+Return exec $terminal
|
bindsym $mod+Return exec $terminal
|
||||||
bindsym $mod+Shift+Return exec $fallback_terminal
|
|
||||||
|
# Emacs client
|
||||||
bindsym $mod+Shift+e exec emacsclient -c -n
|
bindsym $mod+Shift+e exec emacsclient -c -n
|
||||||
bindsym $mod+d exec $menu
|
|
||||||
bindsym $mod+Shift+v exec $audio_panel
|
# Launcher
|
||||||
|
bindsym $mod+d exec "rofi -show drun -theme ~/.config/rofi/config.rasi"
|
||||||
|
|
||||||
|
# Clipboard history picker
|
||||||
|
bindsym $mod+c exec "cliphist list | rofi -dmenu -theme ~/.config/rofi/config.rasi | cliphist decode | wl-copy"
|
||||||
|
|
||||||
|
# Audio panel control
|
||||||
|
bindsym $mod+Shift+v exec pavucontrol
|
||||||
|
|
||||||
|
# File manager
|
||||||
bindsym $mod+Shift+f exec thunar
|
bindsym $mod+Shift+f exec thunar
|
||||||
bindsym $mod+Shift+x exec $locker
|
|
||||||
|
# Manual lock screen
|
||||||
|
bindsym $mod+Shift+x exec ~/.config/sway/scripts/lockscreen
|
||||||
|
|
||||||
|
# Kill focused window
|
||||||
bindsym $mod+Shift+q kill
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
# Screenshots
|
# Screenshot
|
||||||
bindsym Print exec $screenshot_full
|
# Print → flameshot GUI (annotations, save + clipboard via portal)
|
||||||
bindsym Shift+Print exec $screenshot_region
|
# Shift+Print → grim+slurp region → clipboard
|
||||||
bindsym Alt+Print exec $screenshot_window
|
# Alt+Print → grim focused output → clipboard
|
||||||
|
bindsym Print exec flameshot gui --path "$HOME/Pictures/Screenshots" --clipboard
|
||||||
|
bindsym Shift+Print exec ~/.config/sway/scripts/screenshot region
|
||||||
|
bindsym Alt+Print exec ~/.config/sway/scripts/screenshot output
|
||||||
|
|
||||||
# Focus
|
# Focus
|
||||||
bindsym $mod+$left focus left
|
bindsym $mod+$left focus left
|
||||||
bindsym $mod+$down focus down
|
bindsym $mod+$down focus down
|
||||||
bindsym $mod+$up focus up
|
bindsym $mod+$up focus up
|
||||||
bindsym $mod+$right focus right
|
bindsym $mod+$right focus right
|
||||||
|
|
||||||
bindsym $mod+Left focus left
|
bindsym $mod+Left focus left
|
||||||
bindsym $mod+Down focus down
|
bindsym $mod+Down focus down
|
||||||
bindsym $mod+Up focus up
|
bindsym $mod+Up focus up
|
||||||
@@ -69,20 +161,23 @@ bindsym $mod+Shift+$left move left
|
|||||||
bindsym $mod+Shift+$down move down
|
bindsym $mod+Shift+$down move down
|
||||||
bindsym $mod+Shift+$up move up
|
bindsym $mod+Shift+$up move up
|
||||||
bindsym $mod+Shift+$right move right
|
bindsym $mod+Shift+$right move right
|
||||||
|
|
||||||
bindsym $mod+Shift+Left move left
|
bindsym $mod+Shift+Left move left
|
||||||
bindsym $mod+Shift+Down move down
|
bindsym $mod+Shift+Down move down
|
||||||
bindsym $mod+Shift+Up move up
|
bindsym $mod+Shift+Up move up
|
||||||
bindsym $mod+Shift+Right move right
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
# Split and layouts
|
# Split
|
||||||
bindsym $mod+b split h
|
bindsym $mod+b split h
|
||||||
bindsym $mod+v split v
|
bindsym $mod+v split v
|
||||||
|
|
||||||
|
# Layouts
|
||||||
bindsym $mod+f fullscreen toggle
|
bindsym $mod+f fullscreen toggle
|
||||||
bindsym $mod+s layout stacking
|
bindsym $mod+s layout stacking
|
||||||
bindsym $mod+w layout tabbed
|
bindsym $mod+w layout tabbed
|
||||||
bindsym $mod+e layout toggle split
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# Floating / focus mode
|
||||||
bindsym $mod+Shift+space floating toggle
|
bindsym $mod+Shift+space floating toggle
|
||||||
bindsym $mod+space focus mode_toggle
|
bindsym $mod+space focus mode_toggle
|
||||||
bindsym $mod+a focus parent
|
bindsym $mod+a focus parent
|
||||||
@@ -91,32 +186,22 @@ bindsym $mod+a focus parent
|
|||||||
bindsym $mod+Shift+minus move scratchpad
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
bindsym $mod+minus scratchpad show
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
# Volume and brightness OSD
|
# Volume (via swayosd: aggiorna pactl + mostra OSD)
|
||||||
bindsym XF86AudioRaiseVolume exec $audio_raise
|
bindsym XF86AudioRaiseVolume exec swayosd-client --output-volume raise
|
||||||
bindsym XF86AudioLowerVolume exec $audio_lower
|
bindsym XF86AudioLowerVolume exec swayosd-client --output-volume lower
|
||||||
bindsym XF86AudioMute exec $audio_mute
|
bindsym XF86AudioMute exec swayosd-client --output-volume mute-toggle
|
||||||
bindsym XF86AudioMicMute exec $audio_mic_mute
|
bindsym XF86AudioMicMute exec swayosd-client --input-volume mute-toggle
|
||||||
|
|
||||||
bindsym XF86MonBrightnessUp exec $brightness_up
|
# Brightness (via swayosd: aggiorna brightnessctl + mostra OSD)
|
||||||
bindsym XF86MonBrightnessDown exec $brightness_down
|
bindsym XF86MonBrightnessUp exec swayosd-client --brightness raise
|
||||||
|
bindsym XF86MonBrightnessDown exec swayosd-client --brightness lower
|
||||||
|
|
||||||
# Media keys
|
# Media keys
|
||||||
bindsym XF86AudioPlay exec playerctl play-pause
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
bindsym XF86AudioNext exec playerctl next
|
bindsym XF86AudioNext exec playerctl next
|
||||||
bindsym XF86AudioPrev exec playerctl previous
|
bindsym XF86AudioPrev exec playerctl previous
|
||||||
|
|
||||||
# Workspaces
|
# Workspace switch
|
||||||
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+1 workspace number $ws1
|
||||||
bindsym $mod+2 workspace number $ws2
|
bindsym $mod+2 workspace number $ws2
|
||||||
bindsym $mod+3 workspace number $ws3
|
bindsym $mod+3 workspace number $ws3
|
||||||
@@ -141,31 +226,31 @@ bindsym $mod+Shift+8 move container to workspace number $ws8
|
|||||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||||
|
|
||||||
# Reload and power menu
|
# Reload / exit
|
||||||
bindsym $mod+Shift+c reload
|
bindsym $mod+Shift+c reload
|
||||||
bindsym $mod+Shift+r reload
|
bindsym $mod+Shift+r reload
|
||||||
bindsym $mod+Shift+BackSpace exit
|
bindsym $mod+Shift+BackSpace exec swaymsg exit
|
||||||
bindsym $mod+Shift+Escape exec $powermenu
|
bindsym $mod+Shift+Escape exec ~/.config/sway/scripts/powermenu.sh
|
||||||
|
|
||||||
# Resize mode
|
# Resize mode
|
||||||
mode "resize" {
|
mode "resize" {
|
||||||
bindsym $left resize shrink 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 $down resize grow height 10 px or 10 ppt
|
||||||
bindsym $up resize shrink 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 $right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
bindsym Left resize shrink 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 Down resize grow height 10 px or 10 ppt
|
||||||
bindsym Up resize shrink 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 Right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
bindsym Return mode "default"
|
bindsym Return mode "default"
|
||||||
bindsym Escape mode "default"
|
bindsym Escape mode "default"
|
||||||
bindsym $mod+r mode "default"
|
bindsym $mod+r mode "default"
|
||||||
}
|
}
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
# Client colors (border, background, text, indicator, child_border)
|
||||||
client.focused #4a90d9 #4a90d9 #ffffff #4a90d9 #4a90d9
|
client.focused #4a90d9 #4a90d9 #ffffff #4a90d9 #4a90d9
|
||||||
client.focused_inactive #3a3a46 #2b2b36 #eeeeee #3a3a46 #3a3a46
|
client.focused_inactive #3a3a46 #2b2b36 #eeeeee #3a3a46 #3a3a46
|
||||||
client.unfocused #2b2b36 #1f1f28 #bcbcbc #2b2b36 #2b2b36
|
client.unfocused #2b2b36 #1f1f28 #bcbcbc #2b2b36 #2b2b36
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
# Host-specific Sway overrides live here.
|
# Per-host sway overrides. Empty by default; hosts that need tuning
|
||||||
|
# ship their own version via host_sway_dotfiles, which overwrites this
|
||||||
|
# placeholder during deploy.
|
||||||
|
|||||||
17
dotfiles/desktop/.config/sway/scripts/lockscreen
Executable file
17
dotfiles/desktop/.config/sway/scripts/lockscreen
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec swaylock \
|
||||||
|
--image "$HOME/.config/sway/wallpapers/maxresdefault.jpg" \
|
||||||
|
--scaling fill \
|
||||||
|
--indicator-idle-visible \
|
||||||
|
--ring-color 2f4058 \
|
||||||
|
--inside-color 1f1f28 \
|
||||||
|
--line-color 00000000 \
|
||||||
|
--separator-color 3a3a46 \
|
||||||
|
--key-hl-color 6daeea \
|
||||||
|
--bs-hl-color c7162b \
|
||||||
|
--ring-ver-color 4a90d9 \
|
||||||
|
--inside-ver-color 1f1f28 \
|
||||||
|
--ring-wrong-color c7162b \
|
||||||
|
--inside-wrong-color 1f1f28 \
|
||||||
|
--text-color d0d0d0
|
||||||
29
dotfiles/desktop/.config/sway/scripts/powermenu.sh
Executable file
29
dotfiles/desktop/.config/sway/scripts/powermenu.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/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)
|
||||||
|
~/.config/sway/scripts/lockscreen
|
||||||
|
;;
|
||||||
|
*Logout)
|
||||||
|
swaymsg exit
|
||||||
|
;;
|
||||||
|
*Suspend)
|
||||||
|
~/.config/sway/scripts/lockscreen
|
||||||
|
loginctl suspend
|
||||||
|
;;
|
||||||
|
*Reboot)
|
||||||
|
loginctl reboot
|
||||||
|
;;
|
||||||
|
*Shutdown)
|
||||||
|
loginctl poweroff
|
||||||
|
;;
|
||||||
|
esac
|
||||||
40
dotfiles/desktop/.config/sway/scripts/screenshot
Executable file
40
dotfiles/desktop/.config/sway/scripts/screenshot
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Quick screenshot helpers for sway. 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=$(swaymsg -t get_outputs --raw \
|
||||||
|
| jq -r '.[] | select(.focused) | .name')
|
||||||
|
grim -o "$out" "$file"
|
||||||
|
;;
|
||||||
|
window)
|
||||||
|
geom=$(swaymsg -t get_tree \
|
||||||
|
| jq -r '.. | select(.focused? == true)
|
||||||
|
| "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)"')
|
||||||
|
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
|
||||||
53
dotfiles/desktop/.config/sway/scripts/setup-gtk-theme.sh
Executable file
53
dotfiles/desktop/.config/sway/scripts/setup-gtk-theme.sh
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
THEME="Yaru-blue-dark"
|
||||||
|
ICONS="Yaru-blue-dark"
|
||||||
|
CURSOR="Yaru"
|
||||||
|
|
||||||
|
FONT_UI="Liberation Sans 10"
|
||||||
|
|
||||||
|
mkdir -p "$HOME/.config/gtk-3.0"
|
||||||
|
mkdir -p "$HOME/.config/gtk-4.0"
|
||||||
|
|
||||||
|
cat > "$HOME/.gtkrc-2.0" <<EOF
|
||||||
|
gtk-theme-name="$THEME"
|
||||||
|
gtk-icon-theme-name="$ICONS"
|
||||||
|
gtk-cursor-theme-name="$CURSOR"
|
||||||
|
gtk-font-name="$FONT_UI"
|
||||||
|
gtk-button-images=1
|
||||||
|
gtk-menu-images=1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > "$HOME/.config/gtk-3.0/settings.ini" <<EOF
|
||||||
|
[Settings]
|
||||||
|
gtk-theme-name=$THEME
|
||||||
|
gtk-icon-theme-name=$ICONS
|
||||||
|
gtk-cursor-theme-name=$CURSOR
|
||||||
|
gtk-font-name=$FONT_UI
|
||||||
|
gtk-application-prefer-dark-theme=1
|
||||||
|
gtk-xft-antialias=1
|
||||||
|
gtk-xft-hinting=1
|
||||||
|
gtk-xft-hintstyle=hintslight
|
||||||
|
gtk-xft-rgba=rgb
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > "$HOME/.config/gtk-4.0/settings.ini" <<EOF
|
||||||
|
[Settings]
|
||||||
|
gtk-theme-name=$THEME
|
||||||
|
gtk-icon-theme-name=$ICONS
|
||||||
|
gtk-cursor-theme-name=$CURSOR
|
||||||
|
gtk-font-name=$FONT_UI
|
||||||
|
gtk-application-prefer-dark-theme=1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# esporta variabili utili
|
||||||
|
export GTK_THEME=$THEME
|
||||||
|
export XCURSOR_THEME=$CURSOR
|
||||||
|
export XCURSOR_SIZE=24
|
||||||
|
|
||||||
|
if command -v gsettings >/dev/null 2>&1; then
|
||||||
|
gsettings set org.gnome.desktop.interface gtk-theme "$THEME" >/dev/null 2>&1 || true
|
||||||
|
gsettings set org.gnome.desktop.interface icon-theme "$ICONS" >/dev/null 2>&1 || true
|
||||||
|
gsettings set org.gnome.desktop.interface cursor-theme "$CURSOR" >/dev/null 2>&1 || true
|
||||||
|
gsettings set org.gnome.desktop.interface color-scheme prefer-dark >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
BIN
dotfiles/desktop/.config/sway/wallpapers/maxresdefault.jpg
Executable file
BIN
dotfiles/desktop/.config/sway/wallpapers/maxresdefault.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
BIN
dotfiles/desktop/.config/sway/wallpapers/wallpaper-161664.jpg
Executable file
BIN
dotfiles/desktop/.config/sway/wallpapers/wallpaper-161664.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 118 KiB |
@@ -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
|
|
||||||
101
dotfiles/desktop/.config/waybar/config.jsonc
Normal file
101
dotfiles/desktop/.config/waybar/config.jsonc
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"position": "top",
|
||||||
|
"height": 26,
|
||||||
|
"spacing": 4,
|
||||||
|
|
||||||
|
"modules-left": ["sway/workspaces"],
|
||||||
|
"modules-center": [],
|
||||||
|
"modules-right": ["cpu", "memory", "disk", "temperature", "backlight", "network", "pulseaudio", "battery", "tray", "clock"],
|
||||||
|
|
||||||
|
"sway/workspaces": {
|
||||||
|
"disable-scroll": true,
|
||||||
|
"all-outputs": false,
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"1": "I",
|
||||||
|
"2": "II",
|
||||||
|
"3": "III",
|
||||||
|
"4": "IV",
|
||||||
|
"5": "V",
|
||||||
|
"6": "VI",
|
||||||
|
"7": "VII",
|
||||||
|
"8": "VIII",
|
||||||
|
"9": "IX",
|
||||||
|
"10": "X"
|
||||||
|
},
|
||||||
|
"persistent-workspaces": {
|
||||||
|
"*": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock": {
|
||||||
|
"interval": 60,
|
||||||
|
"format": "{:%Y-%m-%d %H:%M}",
|
||||||
|
"tooltip-format": "<tt>{calendar}</tt>"
|
||||||
|
},
|
||||||
|
|
||||||
|
"cpu": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": " {usage}%"
|
||||||
|
},
|
||||||
|
|
||||||
|
"memory": {
|
||||||
|
"interval": 10,
|
||||||
|
"format": " {used:0.1f}G / {total:0.1f}G"
|
||||||
|
},
|
||||||
|
|
||||||
|
"disk": {
|
||||||
|
"interval": 60,
|
||||||
|
"path": "/",
|
||||||
|
"format": " {used} / {total}"
|
||||||
|
},
|
||||||
|
|
||||||
|
"temperature": {
|
||||||
|
"interval": 10,
|
||||||
|
"critical-threshold": 80,
|
||||||
|
"format": " {temperatureC}°C",
|
||||||
|
"format-critical": " {temperatureC}°C"
|
||||||
|
},
|
||||||
|
|
||||||
|
"backlight": {
|
||||||
|
"format": " {percent}%",
|
||||||
|
"on-scroll-up": "brightnessctl set +5%",
|
||||||
|
"on-scroll-down": "brightnessctl set 5%-"
|
||||||
|
},
|
||||||
|
|
||||||
|
"network": {
|
||||||
|
"interval": 5,
|
||||||
|
"format-wifi": " {essid} {signalStrength}%",
|
||||||
|
"format-ethernet": " {ifname}",
|
||||||
|
"format-disconnected": " offline",
|
||||||
|
"tooltip-format": "{ifname} {ipaddr}"
|
||||||
|
},
|
||||||
|
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-muted": " muted",
|
||||||
|
"format-bluetooth": "{icon} {volume}% ",
|
||||||
|
"format-icons": { "default": ["", "", ""] },
|
||||||
|
"on-click": "swayosd-client --output-volume mute-toggle",
|
||||||
|
"on-click-right": "pavucontrol"
|
||||||
|
},
|
||||||
|
|
||||||
|
"battery": {
|
||||||
|
"bat": "BAT0",
|
||||||
|
"interval": 30,
|
||||||
|
"states": {
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{icon} {capacity}%",
|
||||||
|
"format-charging": " {capacity}%",
|
||||||
|
"format-full": " full",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 16,
|
||||||
|
"spacing": 6
|
||||||
|
}
|
||||||
|
}
|
||||||
67
dotfiles/desktop/.config/waybar/style.css
Normal file
67
dotfiles/desktop/.config/waybar/style.css
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
* {
|
||||||
|
font-family: "LiterationMono Nerd Font", "Symbols Nerd Font Mono", monospace;
|
||||||
|
font-size: 10pt;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: #1f1f28;
|
||||||
|
color: #d0d0d0;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 8px;
|
||||||
|
margin: 0;
|
||||||
|
color: #9a9a9a;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.visible {
|
||||||
|
color: #d0d0d0;
|
||||||
|
background-color: #2b2b36;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #4a90d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #c7162b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#battery,
|
||||||
|
#tray {
|
||||||
|
padding: 0 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock { color: #d0d0d0; }
|
||||||
|
#cpu { color: #bb9af7; }
|
||||||
|
#memory { color: #7dcfff; }
|
||||||
|
#disk { color: #9ec07c; }
|
||||||
|
#temperature { color: #e0af68; }
|
||||||
|
#temperature.critical { color: #c7162b; }
|
||||||
|
#backlight { color: #d0d0d0; }
|
||||||
|
#network { color: #4a90d9; }
|
||||||
|
#network.disconnected { color: #3a3a46; }
|
||||||
|
#pulseaudio { color: #7dcfff; }
|
||||||
|
#pulseaudio.muted { color: #8e8e9a; }
|
||||||
|
#battery { color: #d0d0d0; }
|
||||||
|
#battery.charging { color: #9ec07c; }
|
||||||
|
#battery.warning { color: #e0af68; }
|
||||||
|
#battery.critical { color: #c7162b; }
|
||||||
|
#battery.full { color: #9ec07c; }
|
||||||
|
|
||||||
|
#tray { padding: 0 6px; }
|
||||||
@@ -46,6 +46,7 @@
|
|||||||
'misc/terminal
|
'misc/terminal
|
||||||
'misc/vcs
|
'misc/vcs
|
||||||
'misc/documents
|
'misc/documents
|
||||||
'misc/i3-config)
|
'misc/i3-config
|
||||||
|
'misc/xclip)
|
||||||
|
|
||||||
(message "...user configuration loaded")
|
(message "...user configuration loaded")
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
(load-theme 'nordic-night t))
|
(load-theme 'nordic-night t))
|
||||||
|
|
||||||
;; Setting default font
|
;; Setting default font
|
||||||
(set-frame-font "Liberation Mono 14" nil t)
|
(set-frame-font "LiterationMono Nerd Font 14" nil t)
|
||||||
|
|
||||||
(add-to-list 'default-frame-alist
|
(add-to-list 'default-frame-alist
|
||||||
'(font . "Liberation Mono-14"))
|
'(font . "FantasqueSansM Nerd Font-14"))
|
||||||
|
|
||||||
;; Remove toolbar
|
;; Remove toolbar
|
||||||
(tool-bar-mode -1)
|
(tool-bar-mode -1)
|
||||||
|
|||||||
11
dotfiles/desktop/.emacs.d/lisp/misc/xclip.el
Normal file
11
dotfiles/desktop/.emacs.d/lisp/misc/xclip.el
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
;;; misc-xclip.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package xclip
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(xclip-mode t)
|
||||||
|
(setq xclip-method 'xclip))
|
||||||
|
|
||||||
|
(provide 'xclip)
|
||||||
|
|
||||||
|
;;; xclip.el ends here
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
pinentry-program /usr/bin/pinentry-gnome3
|
|
||||||
default-cache-ttl 600
|
|
||||||
max-cache-ttl 7200
|
|
||||||
29
dotfiles/desktop/.local/bin/start-sway-session → dotfiles/desktop/.local/bin/start-sway
Normal file → Executable file
29
dotfiles/desktop/.local/bin/start-sway-session → dotfiles/desktop/.local/bin/start-sway
Normal file → Executable file
@@ -1,28 +1,27 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
[ -r /etc/profile ] && . /etc/profile
|
[ -r /etc/profile ] && . /etc/profile
|
||||||
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
[ -r "$HOME/.profile" ] && . "$HOME/.profile"
|
||||||
[ -r "$HOME/.config/sway/session-env" ] && . "$HOME/.config/sway/session-env"
|
|
||||||
|
|
||||||
set -eu
|
export XDG_CURRENT_DESKTOP=sway
|
||||||
|
export XDG_SESSION_DESKTOP=sway
|
||||||
session_name=sway
|
|
||||||
|
|
||||||
export XDG_CURRENT_DESKTOP="$session_name"
|
|
||||||
export XDG_SESSION_DESKTOP="$session_name"
|
|
||||||
export XDG_SESSION_TYPE=wayland
|
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"
|
export SSH_AUTH_SOCK="$HOME/.local/state/ssh-agent/socket"
|
||||||
|
|
||||||
if [ "${SWAY_UNSUPPORTED_GPU:-0}" = "1" ]; then
|
# Per-host session environment (GPU / Wayland tuning, etc.)
|
||||||
set -- sway --unsupported-gpu
|
[ -r "$HOME/.config/sway/session-env" ] && . "$HOME/.config/sway/session-env"
|
||||||
else
|
|
||||||
set -- sway
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec dbus-run-session sh -eu -c '
|
exec dbus-run-session sh -eu -c '
|
||||||
umask 077
|
umask 077
|
||||||
printf "%s\n" "$DBUS_SESSION_BUS_ADDRESS" > "$HOME/.dbus-session-bus-address"
|
printf "%s\n" "$DBUS_SESSION_BUS_ADDRESS" > "$HOME/.dbus-session-bus-address"
|
||||||
gpgconf --launch gpg-agent
|
gpgconf --launch gpg-agent
|
||||||
"$HOME/.local/bin/update-turnstile-env"
|
"$HOME/.local/bin/update-turnstile-env"
|
||||||
exec "$@"
|
exec sway
|
||||||
' sh "$@"
|
'
|
||||||
@@ -6,13 +6,10 @@ if ! command -v turnstile-update-runit-env >/dev/null 2>&1; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
turnstile-update-runit-env \
|
vars="DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS SSH_AUTH_SOCK XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE"
|
||||||
DISPLAY \
|
|
||||||
WAYLAND_DISPLAY \
|
[ -n "${WAYLAND_DISPLAY:-}" ] && vars="$vars WAYLAND_DISPLAY"
|
||||||
XAUTHORITY \
|
[ -n "${SWAYSOCK:-}" ] && vars="$vars SWAYSOCK"
|
||||||
DBUS_SESSION_BUS_ADDRESS \
|
|
||||||
SSH_AUTH_SOCK \
|
# shellcheck disable=SC2086
|
||||||
XDG_CURRENT_DESKTOP \
|
turnstile-update-runit-env $vars >/dev/null 2>&1 || true
|
||||||
XDG_SESSION_DESKTOP \
|
|
||||||
XDG_SESSION_TYPE \
|
|
||||||
SWAYSOCK >/dev/null 2>&1 || true
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
set $terminal ~/.local/bin/prime-run /usr/bin/alacritty
|
set $terminal ~/.local/bin/prime-run /usr/bin/alacritty
|
||||||
|
|
||||||
gaps inner 10
|
# Multi-monitor profile switching (laptop standalone vs dock)
|
||||||
gaps outer 5
|
exec kanshi
|
||||||
corner_radius 10
|
|
||||||
|
|
||||||
workspace 1 output eDP-1
|
workspace 1 output eDP-1
|
||||||
workspace 2 output DP-1
|
workspace 2 output DP-1
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
export LIBVA_DRIVER_NAME=iHD
|
export LIBVA_DRIVER_NAME=iHD
|
||||||
|
export QT_QPA_PLATFORM=wayland
|
||||||
|
export QT_QPA_PLATFORMTHEME=qt6ct
|
||||||
export SWAY_UNSUPPORTED_GPU=1
|
export SWAY_UNSUPPORTED_GPU=1
|
||||||
export WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1
|
export WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1
|
||||||
export WLR_NO_HARDWARE_CURSORS=1
|
export WLR_NO_HARDWARE_CURSORS=1
|
||||||
|
|||||||
103
scripts/cleanup-i3.sh
Executable file
103
scripts/cleanup-i3.sh
Executable file
@@ -0,0 +1,103 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
# Remove i3 session artifacts: exclusive packages, dotfiles and the emptty
|
||||||
|
# xsessions entry. Shared resources with sway (dunst, rofi, alacritty,
|
||||||
|
# xfce4-screenshooter) are left untouched.
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
I3_PACKAGES="
|
||||||
|
arandr
|
||||||
|
autorandr
|
||||||
|
feh
|
||||||
|
i3
|
||||||
|
i3blocks
|
||||||
|
i3blocks-blocklets
|
||||||
|
i3lock-color
|
||||||
|
i3status
|
||||||
|
picom
|
||||||
|
polybar
|
||||||
|
scrot
|
||||||
|
setxkbmap
|
||||||
|
volumeicon
|
||||||
|
xclip
|
||||||
|
xfce4-clipman-plugin
|
||||||
|
xkbutils
|
||||||
|
xorg-fonts
|
||||||
|
xorg-minimal
|
||||||
|
xss-lock
|
||||||
|
xdotool
|
||||||
|
"
|
||||||
|
|
||||||
|
I3_DOTFILES="
|
||||||
|
$HOME/.config/i3
|
||||||
|
$HOME/.config/i3blocks
|
||||||
|
$HOME/.config/picom
|
||||||
|
$HOME/.config/polybar
|
||||||
|
$HOME/.xinitrc
|
||||||
|
"
|
||||||
|
|
||||||
|
EMPTTY_SESSION=/etc/emptty/xsessions/i3.desktop
|
||||||
|
|
||||||
|
confirm() {
|
||||||
|
printf '%s [y/N] ' "$1"
|
||||||
|
read -r answer
|
||||||
|
case "$answer" in
|
||||||
|
y|Y|yes|YES) return 0 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
filter_installed() {
|
||||||
|
for p in $1; do
|
||||||
|
if xbps-query -p pkgver "$p" >/dev/null 2>&1; then
|
||||||
|
printf '%s\n' "$p"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! command -v xbps-remove >/dev/null 2>&1; then
|
||||||
|
printf 'Error: xbps-remove not found (not a Void host?)\n' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
installed=$(filter_installed "$I3_PACKAGES" | tr '\n' ' ' | sed 's/ *$//')
|
||||||
|
|
||||||
|
printf '== i3 cleanup ==\n\n'
|
||||||
|
printf 'Packages to remove (installed only):\n'
|
||||||
|
if [ -n "$installed" ]; then
|
||||||
|
printf ' %s\n' $installed
|
||||||
|
else
|
||||||
|
printf ' (none)\n'
|
||||||
|
fi
|
||||||
|
printf '\nDotfiles to remove:\n'
|
||||||
|
for d in $I3_DOTFILES; do
|
||||||
|
if [ -e "$d" ] || [ -L "$d" ]; then
|
||||||
|
printf ' %s\n' "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf '\nEmptty session entry:\n'
|
||||||
|
if [ -e "$EMPTTY_SESSION" ]; then
|
||||||
|
printf ' %s\n' "$EMPTTY_SESSION"
|
||||||
|
else
|
||||||
|
printf ' (absent)\n'
|
||||||
|
fi
|
||||||
|
printf '\nShared (NOT removed): dunst, rofi, alacritty, xfce4-screenshooter and their configs.\n\n'
|
||||||
|
|
||||||
|
confirm 'Proceed?' || { printf 'Aborted.\n'; exit 0; }
|
||||||
|
|
||||||
|
if [ -n "$installed" ]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
sudo xbps-remove -Ry $installed
|
||||||
|
fi
|
||||||
|
|
||||||
|
for d in $I3_DOTFILES; do
|
||||||
|
if [ -e "$d" ] || [ -L "$d" ]; then
|
||||||
|
rm -rf -- "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -e "$EMPTTY_SESSION" ]; then
|
||||||
|
sudo rm -f -- "$EMPTTY_SESSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '\nDone.\n'
|
||||||
101
scripts/cleanup-sway.sh
Executable file
101
scripts/cleanup-sway.sh
Executable file
@@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
# Remove sway session artifacts: exclusive packages, dotfiles, runtime state
|
||||||
|
# and the emptty wayland-sessions entry. Shared resources with i3 (dunst,
|
||||||
|
# rofi, alacritty, xfce4-screenshooter) are left untouched.
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
SWAY_PACKAGES="
|
||||||
|
cliphist
|
||||||
|
flameshot
|
||||||
|
grim
|
||||||
|
jq
|
||||||
|
kanshi
|
||||||
|
slurp
|
||||||
|
swayfx
|
||||||
|
swaybg
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
SwayOSD
|
||||||
|
Waybar
|
||||||
|
wl-clipboard
|
||||||
|
xdg-desktop-portal-wlr
|
||||||
|
xorg-server-xwayland
|
||||||
|
"
|
||||||
|
|
||||||
|
SWAY_DOTFILES="
|
||||||
|
$HOME/.config/sway
|
||||||
|
$HOME/.config/waybar
|
||||||
|
$HOME/.cache/cliphist
|
||||||
|
"
|
||||||
|
|
||||||
|
SWAY_SYSTEM_FILES="
|
||||||
|
/etc/emptty/wayland-sessions/sway.desktop
|
||||||
|
/usr/local/bin/start-sway
|
||||||
|
"
|
||||||
|
|
||||||
|
confirm() {
|
||||||
|
printf '%s [y/N] ' "$1"
|
||||||
|
read -r answer
|
||||||
|
case "$answer" in
|
||||||
|
y|Y|yes|YES) return 0 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
filter_installed() {
|
||||||
|
for p in $1; do
|
||||||
|
if xbps-query -p pkgver "$p" >/dev/null 2>&1; then
|
||||||
|
printf '%s\n' "$p"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! command -v xbps-remove >/dev/null 2>&1; then
|
||||||
|
printf 'Error: xbps-remove not found (not a Void host?)\n' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
installed=$(filter_installed "$SWAY_PACKAGES" | tr '\n' ' ' | sed 's/ *$//')
|
||||||
|
|
||||||
|
printf '== sway cleanup ==\n\n'
|
||||||
|
printf 'Packages to remove (installed only):\n'
|
||||||
|
if [ -n "$installed" ]; then
|
||||||
|
printf ' %s\n' $installed
|
||||||
|
else
|
||||||
|
printf ' (none)\n'
|
||||||
|
fi
|
||||||
|
printf '\nDotfiles / state to remove:\n'
|
||||||
|
for d in $SWAY_DOTFILES; do
|
||||||
|
if [ -e "$d" ] || [ -L "$d" ]; then
|
||||||
|
printf ' %s\n' "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf '\nSystem files to remove:\n'
|
||||||
|
for f in $SWAY_SYSTEM_FILES; do
|
||||||
|
if [ -e "$f" ] || [ -L "$f" ]; then
|
||||||
|
printf ' %s\n' "$f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf '\nShared (NOT removed): dunst, rofi, alacritty, xfce4-screenshooter and their configs.\n\n'
|
||||||
|
|
||||||
|
confirm 'Proceed?' || { printf 'Aborted.\n'; exit 0; }
|
||||||
|
|
||||||
|
if [ -n "$installed" ]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
sudo xbps-remove -Ry $installed
|
||||||
|
fi
|
||||||
|
|
||||||
|
for d in $SWAY_DOTFILES; do
|
||||||
|
if [ -e "$d" ] || [ -L "$d" ]; then
|
||||||
|
rm -rf -- "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for f in $SWAY_SYSTEM_FILES; do
|
||||||
|
if [ -e "$f" ] || [ -L "$f" ]; then
|
||||||
|
sudo rm -f -- "$f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf '\nDone.\n'
|
||||||
@@ -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