mirror of
https://github.com/fscotto/infra.git
synced 2026-05-31 07:49:57 +00:00
Migrate nymph desktop to SwayFX and Noctalia
This commit is contained in:
@@ -39,7 +39,6 @@ Ansible-driven personal infrastructure repo for Void desktops, Linux workstation
|
|||||||
- 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`
|
||||||
- Waybar JSON: `python3 -m json.tool dotfiles/desktop/.config/waybar/config-sway.jsonc >/dev/null`
|
|
||||||
- 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`
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -70,7 +70,7 @@ Sistema operativo:
|
|||||||
Sessioni desktop:
|
Sessioni desktop:
|
||||||
|
|
||||||
- `ikaros`: i3
|
- `ikaros`: i3
|
||||||
- `nymph`: i3 + Sway con scelta sessione a login
|
- `nymph`: SwayFX
|
||||||
|
|
||||||
Macchine:
|
Macchine:
|
||||||
|
|
||||||
@@ -82,8 +82,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 tutti i desktop Void e sessione Sway opzionale su `nymph`
|
- sessione i3 su `ikaros` e sessione SwayFX su `nymph`
|
||||||
- `emptty` con scelta sessione a login su `nymph` e default host-specific sugli altri desktop
|
- `emptty` con default host-specific per il desktop attivo su ogni host
|
||||||
- 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`
|
||||||
@@ -92,7 +92,7 @@ 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
|
||||||
- `Waybar` per Sway con `style.css` condiviso
|
- shell Noctalia per SwayFX su `nymph`, con plugin per clipboard, polkit e screenshot
|
||||||
- `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`
|
- `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`
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -450,13 +450,7 @@ ansible-playbook ansible/site.yml --limit deadalus-fedora --tags packages,vscode
|
|||||||
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
|
||||||
```
|
```
|
||||||
|
|
||||||
Se tocchi `Waybar`, valida anche i config JSONC con:
|
---
|
||||||
|
|
||||||
```bash
|
|
||||||
python3 -m json.tool dotfiles/desktop/.config/waybar/config-sway.jsonc >/dev/null
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Bootstrap di una nuova macchina
|
# Bootstrap di una nuova macchina
|
||||||
|
|
||||||
|
|||||||
@@ -13,15 +13,11 @@ desktop_ollama_enabled: false
|
|||||||
desktop_common_packages:
|
desktop_common_packages:
|
||||||
- brightnessctl
|
- brightnessctl
|
||||||
- dex
|
- dex
|
||||||
- dunst
|
|
||||||
- emptty
|
- emptty
|
||||||
- network-manager-applet
|
|
||||||
- pinentry-emacs
|
- pinentry-emacs
|
||||||
- pinentry-gtk
|
- pinentry-gtk
|
||||||
- rofi
|
|
||||||
- turnstile
|
- turnstile
|
||||||
- udiskie
|
- udiskie
|
||||||
- xfce-polkit
|
|
||||||
- xdg-desktop-portal
|
- xdg-desktop-portal
|
||||||
- xdg-desktop-portal-gtk
|
- xdg-desktop-portal-gtk
|
||||||
- xdg-user-dirs
|
- xdg-user-dirs
|
||||||
@@ -35,10 +31,15 @@ desktop_i3_packages:
|
|||||||
- i3blocks-blocklets
|
- i3blocks-blocklets
|
||||||
- i3lock-color
|
- i3lock-color
|
||||||
- i3status
|
- i3status
|
||||||
|
- dunst
|
||||||
|
- network-manager-applet
|
||||||
|
- rofi
|
||||||
- scrot
|
- scrot
|
||||||
- setxkbmap
|
- setxkbmap
|
||||||
|
- blueman
|
||||||
- volumeicon
|
- volumeicon
|
||||||
- xclip
|
- xclip
|
||||||
|
- xfce-polkit
|
||||||
- xfce4-clipman-plugin
|
- xfce4-clipman-plugin
|
||||||
- xfce4-screenshooter
|
- xfce4-screenshooter
|
||||||
- xkbutils
|
- xkbutils
|
||||||
@@ -50,20 +51,13 @@ desktop_sway_packages:
|
|||||||
- grim
|
- grim
|
||||||
- kanshi
|
- kanshi
|
||||||
- slurp
|
- slurp
|
||||||
- SwayOSD
|
- swayfx
|
||||||
- sway
|
|
||||||
- swayidle
|
|
||||||
- swaylock
|
|
||||||
- Waybar
|
|
||||||
- wl-clipboard
|
- wl-clipboard
|
||||||
- xfce4-clipman-plugin
|
|
||||||
- xfce4-screenshooter
|
|
||||||
- xdg-desktop-portal-wlr
|
- xdg-desktop-portal-wlr
|
||||||
|
|
||||||
profile_packages:
|
profile_packages:
|
||||||
- alacritty
|
- alacritty
|
||||||
- bluez
|
- bluez
|
||||||
- blueman
|
|
||||||
- bridge-utils
|
- bridge-utils
|
||||||
- celluloid
|
- celluloid
|
||||||
- ctags
|
- ctags
|
||||||
@@ -168,10 +162,6 @@ desktop_common_dotfiles:
|
|||||||
src: .config/autostart/
|
src: .config/autostart/
|
||||||
dest: .config/autostart/
|
dest: .config/autostart/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
- name: dunst config
|
|
||||||
src: .config/dunst/
|
|
||||||
dest: .config/dunst/
|
|
||||||
mode: preserve
|
|
||||||
- name: alacritty config
|
- name: alacritty config
|
||||||
src: .config/alacritty/
|
src: .config/alacritty/
|
||||||
dest: .config/alacritty/
|
dest: .config/alacritty/
|
||||||
@@ -180,10 +170,6 @@ desktop_common_dotfiles:
|
|||||||
src: .config/Thunar/
|
src: .config/Thunar/
|
||||||
dest: .config/Thunar/
|
dest: .config/Thunar/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
- name: rofi config
|
|
||||||
src: .config/rofi/
|
|
||||||
dest: .config/rofi/
|
|
||||||
mode: preserve
|
|
||||||
- name: MIME application defaults
|
- name: MIME application defaults
|
||||||
src: .config/mimeapps.list
|
src: .config/mimeapps.list
|
||||||
dest: .config/mimeapps.list
|
dest: .config/mimeapps.list
|
||||||
@@ -248,14 +234,6 @@ desktop_common_dotfiles:
|
|||||||
src: .local/bin/setup-gtk-theme
|
src: .local/bin/setup-gtk-theme
|
||||||
dest: .local/bin/setup-gtk-theme
|
dest: .local/bin/setup-gtk-theme
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
- name: Lock session script
|
|
||||||
src: .local/bin/lock-session
|
|
||||||
dest: .local/bin/lock-session
|
|
||||||
mode: "0755"
|
|
||||||
- name: Powermenu script
|
|
||||||
src: .local/bin/powermenu
|
|
||||||
dest: .local/bin/powermenu
|
|
||||||
mode: "0755"
|
|
||||||
- name: Turnstile environment update script
|
- name: Turnstile environment update script
|
||||||
src: .local/bin/update-turnstile-env
|
src: .local/bin/update-turnstile-env
|
||||||
dest: .local/bin/update-turnstile-env
|
dest: .local/bin/update-turnstile-env
|
||||||
@@ -280,10 +258,18 @@ desktop_i3_dotfiles:
|
|||||||
src: .config/i3/
|
src: .config/i3/
|
||||||
dest: .config/i3/
|
dest: .config/i3/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
|
- name: dunst config
|
||||||
|
src: .config/dunst/
|
||||||
|
dest: .config/dunst/
|
||||||
|
mode: preserve
|
||||||
- name: i3blocks config
|
- name: i3blocks config
|
||||||
src: .config/i3blocks/
|
src: .config/i3blocks/
|
||||||
dest: .config/i3blocks/
|
dest: .config/i3blocks/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
|
- name: rofi config
|
||||||
|
src: .config/rofi/
|
||||||
|
dest: .config/rofi/
|
||||||
|
mode: preserve
|
||||||
- name: .xinitrc
|
- name: .xinitrc
|
||||||
src: .xinitrc
|
src: .xinitrc
|
||||||
dest: .xinitrc
|
dest: .xinitrc
|
||||||
@@ -294,10 +280,6 @@ desktop_sway_dotfiles:
|
|||||||
src: .config/sway/
|
src: .config/sway/
|
||||||
dest: .config/sway/
|
dest: .config/sway/
|
||||||
mode: preserve
|
mode: preserve
|
||||||
- name: Waybar config
|
|
||||||
src: .config/waybar/
|
|
||||||
dest: .config/waybar/
|
|
||||||
mode: preserve
|
|
||||||
- name: Sway wallpaper assets
|
- name: Sway wallpaper assets
|
||||||
src: .config/i3/wallpapers/
|
src: .config/i3/wallpapers/
|
||||||
dest: .config/sway/wallpapers/
|
dest: .config/sway/wallpapers/
|
||||||
@@ -306,10 +288,6 @@ desktop_sway_dotfiles:
|
|||||||
src: .local/bin/start-sway-session
|
src: .local/bin/start-sway-session
|
||||||
dest: .local/bin/start-sway-session
|
dest: .local/bin/start-sway-session
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
- name: Wayland screenshot script
|
|
||||||
src: .local/bin/screenshot-wayland
|
|
||||||
dest: .local/bin/screenshot-wayland
|
|
||||||
mode: "0755"
|
|
||||||
|
|
||||||
desktop_flatpak_packages:
|
desktop_flatpak_packages:
|
||||||
- be.alexandervanhee.gradia
|
- be.alexandervanhee.gradia
|
||||||
|
|||||||
@@ -2,29 +2,58 @@
|
|||||||
hostname: nymph
|
hostname: nymph
|
||||||
|
|
||||||
desktop_sessions_enabled:
|
desktop_sessions_enabled:
|
||||||
- i3
|
|
||||||
- sway
|
- sway
|
||||||
|
|
||||||
desktop_prompt_for_session: true
|
desktop_default_session: sway
|
||||||
|
desktop_default_session_env: wayland
|
||||||
desktop_emptty_session_error_logging: rotate
|
desktop_emptty_session_error_logging: rotate
|
||||||
|
|
||||||
|
host_xbps_repositories:
|
||||||
|
- name: noctalia
|
||||||
|
url: https://universalrepo.r1xelelo.workers.dev/void
|
||||||
|
|
||||||
host_packages:
|
host_packages:
|
||||||
|
- cliphist
|
||||||
|
- grimshot
|
||||||
- nvidia
|
- nvidia
|
||||||
|
- noctalia-shell
|
||||||
|
- power-profiles-daemon
|
||||||
- mesa-dri
|
- mesa-dri
|
||||||
- vulkan-loader
|
- vulkan-loader
|
||||||
- mesa-vulkan-intel
|
- mesa-vulkan-intel
|
||||||
- intel-video-accel
|
- intel-video-accel
|
||||||
- tlp
|
- tlp
|
||||||
- tlp-rdw
|
- tlp-rdw
|
||||||
|
- upower
|
||||||
|
|
||||||
|
host_remove_packages:
|
||||||
|
- arandr
|
||||||
|
- autorandr
|
||||||
|
- feh
|
||||||
|
- i3
|
||||||
|
- i3blocks
|
||||||
|
- i3blocks-blocklets
|
||||||
|
- i3lock-color
|
||||||
|
- i3status
|
||||||
|
- dunst
|
||||||
|
- network-manager-applet
|
||||||
|
- rofi
|
||||||
|
- scrot
|
||||||
|
- setxkbmap
|
||||||
|
- blueman
|
||||||
|
- volumeicon
|
||||||
|
- xclip
|
||||||
|
- xfce-polkit
|
||||||
|
- xfce4-clipman-plugin
|
||||||
|
- xfce4-screenshooter
|
||||||
|
- xkbutils
|
||||||
|
- xorg-fonts
|
||||||
|
- xorg-minimal
|
||||||
|
- xss-lock
|
||||||
|
|
||||||
host_enabled_services:
|
host_enabled_services:
|
||||||
- tlp
|
- tlp
|
||||||
|
|
||||||
host_i3_dotfiles:
|
|
||||||
- src: .config/autorandr/
|
|
||||||
dest: .config/autorandr/
|
|
||||||
mode: preserve
|
|
||||||
|
|
||||||
host_sway_dotfiles:
|
host_sway_dotfiles:
|
||||||
- src: .config/sway/host.conf
|
- src: .config/sway/host.conf
|
||||||
dest: .config/sway/host.conf
|
dest: .config/sway/host.conf
|
||||||
|
|||||||
@@ -67,7 +67,16 @@
|
|||||||
else []
|
else []
|
||||||
)
|
)
|
||||||
+ (host_packages | default([]))
|
+ (host_packages | default([]))
|
||||||
) | unique
|
)
|
||||||
|
| unique
|
||||||
}}
|
}}
|
||||||
state: present
|
state: present
|
||||||
update_cache: false
|
update_cache: false
|
||||||
|
|
||||||
|
- name: Remove host-specific packages on Void Linux
|
||||||
|
tags: [packages]
|
||||||
|
community.general.xbps:
|
||||||
|
name: "{{ (host_remove_packages | default([])) | unique }}"
|
||||||
|
state: absent
|
||||||
|
update_cache: false
|
||||||
|
when: (host_remove_packages | default([])) | length > 0
|
||||||
|
|||||||
@@ -9,10 +9,23 @@
|
|||||||
mode: "0755"
|
mode: "0755"
|
||||||
loop:
|
loop:
|
||||||
- "{{ user_home }}/.config/sway"
|
- "{{ user_home }}/.config/sway"
|
||||||
- "{{ user_home }}/.config/waybar"
|
|
||||||
- "{{ user_home }}/.config/kanshi"
|
- "{{ user_home }}/.config/kanshi"
|
||||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
|
- name: Ensure Noctalia config directories exist
|
||||||
|
tags: [dotfiles, dotfiles:desktop, sway, noctalia]
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ username }}"
|
||||||
|
group: "{{ user_group }}"
|
||||||
|
mode: "0755"
|
||||||
|
loop:
|
||||||
|
- "{{ user_home }}/.config/noctalia"
|
||||||
|
- "{{ user_home }}/.config/noctalia/plugins"
|
||||||
|
- "{{ user_home }}/.local/share/noctalia-plugins"
|
||||||
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|
||||||
- name: Install Sway emptty session entry
|
- name: Install Sway emptty session entry
|
||||||
tags: [packages, services, emptty, sway]
|
tags: [packages, services, emptty, sway]
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
@@ -35,3 +48,18 @@
|
|||||||
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: Manage Noctalia shell plugins
|
||||||
|
tags: [dotfiles, dotfiles:desktop, sway, noctalia]
|
||||||
|
ansible.builtin.include_tasks: noctalia.yml
|
||||||
|
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
||||||
|
|||||||
32
ansible/roles/profile_desktop_sway/tasks/noctalia.yml
Normal file
32
ansible/roles/profile_desktop_sway/tasks/noctalia.yml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
- 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
|
||||||
|
become_user: "{{ username }}"
|
||||||
|
environment:
|
||||||
|
HOME: "{{ user_home }}"
|
||||||
|
|
||||||
|
- name: Bootstrap Clipper plugin checkout
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: https://github.com/blackbartblues/noctalia-clipper.git
|
||||||
|
dest: "{{ user_home }}/.config/noctalia/plugins/clipper"
|
||||||
|
version: master
|
||||||
|
update: true
|
||||||
|
become_user: "{{ username }}"
|
||||||
|
environment:
|
||||||
|
HOME: "{{ user_home }}"
|
||||||
|
|
||||||
|
- 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
|
||||||
29
ansible/roles/profile_desktop_sway/templates/shell.conf.j2
Normal file
29
ansible/roles/profile_desktop_sway/templates/shell.conf.j2
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
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
|
||||||
|
exec wl-paste --watch cliphist store
|
||||||
|
exec qs -c noctalia-shell
|
||||||
|
|
||||||
|
bindsym $mod+c exec qs -c noctalia-shell ipc call launcher clipboard
|
||||||
@@ -1,46 +1,16 @@
|
|||||||
set $mod Mod4
|
set $mod Mod4
|
||||||
set $terminal alacritty
|
set $terminal alacritty
|
||||||
set $fallback_terminal st
|
set $fallback_terminal st
|
||||||
set $menu rofi -show drun -theme ~/.config/rofi/config.rasi
|
|
||||||
set $locker ~/.local/bin/lock-session
|
|
||||||
set $powermenu ~/.local/bin/powermenu
|
|
||||||
set $screenshot ~/.local/bin/screenshot-wayland
|
|
||||||
|
|
||||||
# Host-specific overrides
|
# Host-specific overrides
|
||||||
include ~/.config/sway/host.conf
|
include ~/.config/sway/host.conf
|
||||||
|
include ~/.config/sway/shell.conf
|
||||||
|
|
||||||
font pango:Liberation Mono 10
|
font pango:Liberation Mono 10
|
||||||
|
|
||||||
# Session bootstrap
|
|
||||||
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 waybar -c ~/.config/waybar/config-sway.jsonc -s ~/.config/waybar/style.css
|
|
||||||
|
|
||||||
# Session services
|
|
||||||
exec pipewire
|
|
||||||
exec pipewire-pulse
|
|
||||||
exec wireplumber
|
|
||||||
exec kanshi
|
|
||||||
exec swayidle -w timeout 600 '~/.local/bin/lock-session' timeout 900 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' before-sleep '~/.local/bin/lock-session'
|
|
||||||
|
|
||||||
# Tray and desktop applets
|
|
||||||
exec dunst
|
|
||||||
exec swayosd-server
|
|
||||||
exec /usr/libexec/xfce-polkit
|
|
||||||
exec nm-applet
|
|
||||||
exec blueman-applet
|
|
||||||
exec udiskie
|
|
||||||
exec xfce4-clipman
|
|
||||||
|
|
||||||
# Input and output defaults
|
# Input and output defaults
|
||||||
seat seat0 xcursor_theme Yaru 24
|
seat seat0 xcursor_theme Yaru 24
|
||||||
|
|
||||||
output * bg ~/.config/sway/wallpapers/dont_like_wallpapers.jpg fill
|
|
||||||
|
|
||||||
input type:keyboard {
|
input type:keyboard {
|
||||||
xkb_layout us
|
xkb_layout us
|
||||||
xkb_variant intl
|
xkb_variant intl
|
||||||
@@ -74,15 +44,15 @@ bindsym $mod+Return exec $terminal
|
|||||||
bindsym $mod+Shift+Return exec $fallback_terminal
|
bindsym $mod+Shift+Return exec $fallback_terminal
|
||||||
bindsym $mod+Shift+e exec emacsclient -c -n
|
bindsym $mod+Shift+e exec emacsclient -c -n
|
||||||
bindsym $mod+d exec $menu
|
bindsym $mod+d exec $menu
|
||||||
bindsym $mod+Shift+v exec pavucontrol
|
bindsym $mod+Shift+v exec $audio_panel
|
||||||
bindsym $mod+Shift+f exec thunar
|
bindsym $mod+Shift+f exec thunar
|
||||||
bindsym $mod+Shift+x exec $locker
|
bindsym $mod+Shift+x exec $locker
|
||||||
bindsym $mod+Shift+q kill
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
# Screenshots
|
# Screenshots
|
||||||
bindsym Print exec sh -c 'xfce4-screenshooter -f || ~/.local/bin/screenshot-wayland full'
|
bindsym Print exec $screenshot_full
|
||||||
bindsym Shift+Print exec sh -c 'xfce4-screenshooter -r || ~/.local/bin/screenshot-wayland region'
|
bindsym Shift+Print exec $screenshot_region
|
||||||
bindsym Alt+Print exec sh -c 'xfce4-screenshooter -w || ~/.local/bin/screenshot-wayland output'
|
bindsym Alt+Print exec $screenshot_window
|
||||||
|
|
||||||
# Focus
|
# Focus
|
||||||
bindsym $mod+$left focus left
|
bindsym $mod+$left focus left
|
||||||
@@ -122,13 +92,13 @@ bindsym $mod+Shift+minus move scratchpad
|
|||||||
bindsym $mod+minus scratchpad show
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
# Volume and brightness OSD
|
# Volume and brightness OSD
|
||||||
bindsym XF86AudioRaiseVolume exec swayosd-client --output-volume raise
|
bindsym XF86AudioRaiseVolume exec $audio_raise
|
||||||
bindsym XF86AudioLowerVolume exec swayosd-client --output-volume lower
|
bindsym XF86AudioLowerVolume exec $audio_lower
|
||||||
bindsym XF86AudioMute exec swayosd-client --output-volume mute-toggle
|
bindsym XF86AudioMute exec $audio_mute
|
||||||
bindsym XF86AudioMicMute exec swayosd-client --input-volume mute-toggle
|
bindsym XF86AudioMicMute exec $audio_mic_mute
|
||||||
|
|
||||||
bindsym XF86MonBrightnessUp exec swayosd-client --brightness raise
|
bindsym XF86MonBrightnessUp exec $brightness_up
|
||||||
bindsym XF86MonBrightnessDown exec swayosd-client --brightness lower
|
bindsym XF86MonBrightnessDown exec $brightness_down
|
||||||
|
|
||||||
# Media keys
|
# Media keys
|
||||||
bindsym XF86AudioPlay exec playerctl play-pause
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "bottom",
|
|
||||||
"height": 28,
|
|
||||||
"spacing": 4,
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
"sway/workspaces"
|
|
||||||
],
|
|
||||||
|
|
||||||
"modules-right": [
|
|
||||||
"pulseaudio",
|
|
||||||
"backlight",
|
|
||||||
"network",
|
|
||||||
"battery",
|
|
||||||
"temperature",
|
|
||||||
"memory",
|
|
||||||
"clock",
|
|
||||||
"tray",
|
|
||||||
"custom/powermenu"
|
|
||||||
],
|
|
||||||
|
|
||||||
"sway/workspaces": {
|
|
||||||
"disable-scroll": true,
|
|
||||||
"format": "{name}",
|
|
||||||
"sort-by-number": true
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio": {
|
|
||||||
"scroll-step": 1,
|
|
||||||
"format": " {volume}%",
|
|
||||||
"format-bluetooth": " {volume}%",
|
|
||||||
"format-muted": "",
|
|
||||||
"on-click": "pavucontrol",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"backlight": {
|
|
||||||
"device": "intel_backlight",
|
|
||||||
"on-scroll-up": "brightnessctl set +5%",
|
|
||||||
"on-scroll-down": "brightnessctl set 5%-",
|
|
||||||
"format": " {percent}%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"network": {
|
|
||||||
"interval": 1,
|
|
||||||
"tooltip": true,
|
|
||||||
"format-wifi": "",
|
|
||||||
"format-ethernet": "",
|
|
||||||
"format-linked": "",
|
|
||||||
"format-disconnected": "",
|
|
||||||
"tooltip-format": "{ifname}",
|
|
||||||
"tooltip-format-wifi": "{essid} ({signalStrength}%)",
|
|
||||||
"tooltip-format-ethernet": "{ifname}",
|
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
|
||||||
"on-click": "nm-connection-editor"
|
|
||||||
},
|
|
||||||
|
|
||||||
"battery": {
|
|
||||||
"interval": 10,
|
|
||||||
"states": {
|
|
||||||
"warning": 20,
|
|
||||||
"critical": 10
|
|
||||||
},
|
|
||||||
"format": "{icon} {capacity}%",
|
|
||||||
"format-charging": " {capacity}%",
|
|
||||||
"format-plugged": " {capacity}%",
|
|
||||||
"format-alt": "{time}"
|
|
||||||
,"format-icons": ["", "", "", "", "", "", "", "", "", ""]
|
|
||||||
},
|
|
||||||
|
|
||||||
"temperature": {
|
|
||||||
"critical-threshold": 80,
|
|
||||||
"format": " {temperatureC}C",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"memory": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": " {percentage}%",
|
|
||||||
"states": {
|
|
||||||
"warning": 85
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock": {
|
|
||||||
"interval": 60,
|
|
||||||
"timezone": "Europe/Rome",
|
|
||||||
"format": " {:%Y-%m-%d %H:%M}",
|
|
||||||
"format-alt": "{:%A %d/%m/%Y}",
|
|
||||||
"tooltip-format": "{:%A %d %B %Y\n%H:%M:%S %Z}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/powermenu": {
|
|
||||||
"format": "⏻",
|
|
||||||
"on-click": "~/.local/bin/powermenu",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 15,
|
|
||||||
"spacing": 4
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
min-height: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background: #1f1f28;
|
|
||||||
color: #d0d0d0;
|
|
||||||
border-top: 2px solid #3a3a46;
|
|
||||||
font-family: "Liberation Mono", "Symbols Nerd Font", monospace;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar * {
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces,
|
|
||||||
#pulseaudio,
|
|
||||||
#backlight,
|
|
||||||
#network,
|
|
||||||
#bluetooth,
|
|
||||||
#battery,
|
|
||||||
#temperature,
|
|
||||||
#memory,
|
|
||||||
#clock,
|
|
||||||
#custom-powermenu,
|
|
||||||
#tray {
|
|
||||||
padding: 0 8px;
|
|
||||||
margin: 3px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
background: transparent;
|
|
||||||
color: #9a9a9a;
|
|
||||||
padding: 0 7px;
|
|
||||||
margin: 0 2px;
|
|
||||||
border-top: 2px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
color: #d0d0d0;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active,
|
|
||||||
#workspaces button.focused {
|
|
||||||
background: #4a90d9;
|
|
||||||
color: #ffffff;
|
|
||||||
border-top: 2px solid #6daeea;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
color: #ffffff;
|
|
||||||
background: #c7162b;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio,
|
|
||||||
#backlight,
|
|
||||||
#network,
|
|
||||||
#bluetooth,
|
|
||||||
#battery,
|
|
||||||
#temperature,
|
|
||||||
#memory {
|
|
||||||
color: #d0d0d0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock,
|
|
||||||
#custom-powermenu {
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-powermenu {
|
|
||||||
padding: 0 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
menu,
|
|
||||||
menuitem {
|
|
||||||
font-family: "Liberation Sans", sans-serif;
|
|
||||||
font-size: 11px;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
background: #1f1f28;
|
|
||||||
border: 1px solid #4a90d9;
|
|
||||||
color: #d0d0d0;
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
case "${XDG_CURRENT_DESKTOP:-}" in
|
|
||||||
*sway*|*Sway*)
|
|
||||||
exec swaylock -f \
|
|
||||||
--color 000000ff \
|
|
||||||
--inside-color 1f1f28ff \
|
|
||||||
--ring-color 2f4058ff \
|
|
||||||
--separator-color 3a3a46ff \
|
|
||||||
--line-color 00000000 \
|
|
||||||
--key-hl-color 6daeeaff \
|
|
||||||
--bs-hl-color c7162bff \
|
|
||||||
--inside-ver-color 1f1f28ff \
|
|
||||||
--inside-wrong-color 1f1f28ff \
|
|
||||||
--ring-ver-color 4a90d9ff \
|
|
||||||
--ring-wrong-color c7162bff \
|
|
||||||
--text-color d0d0d0ff \
|
|
||||||
--text-ver-color d0d0d0ff \
|
|
||||||
--text-wrong-color d0d0d0ff \
|
|
||||||
--indicator \
|
|
||||||
--clock
|
|
||||||
;;
|
|
||||||
*i3*|*I3*)
|
|
||||||
exec "$HOME/.config/i3/scripts/lockscreen"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if command -v swaylock >/dev/null 2>&1; then
|
|
||||||
exec swaylock -f
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -x "$HOME/.config/i3/scripts/lockscreen" ]; then
|
|
||||||
exec "$HOME/.config/i3/scripts/lockscreen"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s\n' 'No supported lock command found.' >&2
|
|
||||||
exit 1
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
choice="$(printf 'Shutdown\nReboot\nLogout\nLock\nSuspend' \
|
|
||||||
| rofi -dmenu \
|
|
||||||
-i \
|
|
||||||
-p 'Power' \
|
|
||||||
-theme ~/.config/rofi/config.rasi \
|
|
||||||
-theme-str 'window { width: 20%; location: center; anchor: center; } listview { columns: 1; spacing: 6px; }')"
|
|
||||||
|
|
||||||
[ -n "$choice" ] || exit 0
|
|
||||||
|
|
||||||
case "$choice" in
|
|
||||||
Lock)
|
|
||||||
"$HOME/.local/bin/lock-session"
|
|
||||||
;;
|
|
||||||
Logout)
|
|
||||||
case "${XDG_CURRENT_DESKTOP:-}" in
|
|
||||||
*sway*|*Sway*)
|
|
||||||
swaymsg exit
|
|
||||||
;;
|
|
||||||
*i3*|*I3*)
|
|
||||||
i3-msg exit
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf '%s\n' 'Unsupported desktop session for logout.' >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
Suspend)
|
|
||||||
"$HOME/.local/bin/lock-session" || true
|
|
||||||
loginctl suspend
|
|
||||||
;;
|
|
||||||
Reboot)
|
|
||||||
loginctl reboot
|
|
||||||
;;
|
|
||||||
Shutdown)
|
|
||||||
loginctl poweroff
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
mode=${1:-full}
|
|
||||||
target_dir="$HOME/Pictures/Screenshots"
|
|
||||||
target_file="$target_dir/$(date +%Y-%m-%d-%H%M%S).png"
|
|
||||||
|
|
||||||
mkdir -p "$target_dir"
|
|
||||||
|
|
||||||
case "$mode" in
|
|
||||||
full)
|
|
||||||
grim "$target_file"
|
|
||||||
;;
|
|
||||||
region)
|
|
||||||
grim -g "$(slurp)" "$target_file"
|
|
||||||
;;
|
|
||||||
output)
|
|
||||||
grim -g "$(slurp -o)" "$target_file"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf 'Usage: %s [full|region|output]\n' "$0" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if command -v wl-copy >/dev/null 2>&1; then
|
|
||||||
wl-copy < "$target_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if command -v notify-send >/dev/null 2>&1; then
|
|
||||||
notify-send "Screenshot saved" "$target_file"
|
|
||||||
fi
|
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
set $terminal ~/.local/bin/prime-run /usr/bin/alacritty
|
set $terminal ~/.local/bin/prime-run /usr/bin/alacritty
|
||||||
|
|
||||||
|
gaps inner 10
|
||||||
|
gaps outer 5
|
||||||
|
corner_radius 10
|
||||||
|
|
||||||
workspace 1 output eDP-1
|
workspace 1 output eDP-1
|
||||||
workspace 2 output DP-1
|
workspace 2 output DP-1
|
||||||
workspace 3 output DP-1
|
workspace 3 output DP-1
|
||||||
|
|||||||
Reference in New Issue
Block a user