mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 15:39:58 +00:00
sway: screenshots, polkit floating, flatpak dark theme
Screenshots - Swap xfce4-screenshooter for flameshot + grim/slurp/jq; xfce4 used the X11 selection so clipboard didn't round-trip to Wayland clients. Print invokes flameshot's editor; Shift/Alt+Print are quick grim-based captures via a small wrapper script. Flameshot is now autostarted so the first capture isn't slow. Polkit - Add for_window rules so the xfce-polkit dialog (and any other polkit agent) always opens floating. Flatpak dark theme - Write /etc/flatpak/overrides/global with GTK_THEME=Yaru-Blue-dark for legacy GTK apps, plus a sway-portals.conf so the Settings portal is served by xdg-desktop-portal-gtk (wlr doesn't implement it). That lets libadwaita apps see color-scheme=prefer-dark. cleanup-sway: track the new package set. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -174,8 +174,12 @@ desktop_i3_packages:
|
|||||||
desktop_sway_packages:
|
desktop_sway_packages:
|
||||||
- cliphist
|
- cliphist
|
||||||
- dunst
|
- dunst
|
||||||
|
- flameshot
|
||||||
|
- grim
|
||||||
|
- jq
|
||||||
- kanshi
|
- kanshi
|
||||||
- rofi
|
- rofi
|
||||||
|
- slurp
|
||||||
- swayfx
|
- swayfx
|
||||||
- swaybg
|
- swaybg
|
||||||
- swayidle
|
- swayidle
|
||||||
@@ -183,7 +187,6 @@ desktop_sway_packages:
|
|||||||
- SwayOSD
|
- SwayOSD
|
||||||
- Waybar
|
- Waybar
|
||||||
- wl-clipboard
|
- wl-clipboard
|
||||||
- xfce4-screenshooter
|
|
||||||
- xdg-desktop-portal-wlr
|
- xdg-desktop-portal-wlr
|
||||||
- xorg-server-xwayland
|
- xorg-server-xwayland
|
||||||
|
|
||||||
|
|||||||
@@ -464,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:
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[preferred]
|
||||||
|
default=gtk
|
||||||
|
org.freedesktop.impl.portal.Screenshot=wlr
|
||||||
|
org.freedesktop.impl.portal.ScreenCast=wlr
|
||||||
@@ -37,6 +37,16 @@
|
|||||||
mode: "0755"
|
mode: "0755"
|
||||||
when: "'sway' in (desktop_sessions_enabled | default([]))"
|
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
|
- name: Copy sway desktop dotfiles
|
||||||
tags: [dotfiles, dotfiles:desktop, sway]
|
tags: [dotfiles, dotfiles:desktop, sway]
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ gaps outer 4
|
|||||||
smart_gaps on
|
smart_gaps on
|
||||||
smart_borders on
|
smart_borders on
|
||||||
|
|
||||||
|
# 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
|
# Autostart — XDG and session services
|
||||||
exec dex --autostart --environment sway
|
exec dex --autostart --environment sway
|
||||||
exec gnome-keyring-daemon --start --components=secrets
|
exec gnome-keyring-daemon --start --components=secrets
|
||||||
@@ -85,6 +90,7 @@ exec /usr/libexec/xfce-polkit
|
|||||||
exec nm-applet
|
exec nm-applet
|
||||||
exec blueman-applet
|
exec blueman-applet
|
||||||
exec udiskie
|
exec udiskie
|
||||||
|
exec flameshot
|
||||||
|
|
||||||
# Clipboard manager (Wayland-native)
|
# Clipboard manager (Wayland-native)
|
||||||
exec wl-paste --type text --watch cliphist store
|
exec wl-paste --type text --watch cliphist store
|
||||||
@@ -125,10 +131,13 @@ bindsym $mod+Shift+x exec ~/.config/sway/scripts/lockscreen
|
|||||||
# Kill focused window
|
# Kill focused window
|
||||||
bindsym $mod+Shift+q kill
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
# Screenshot (xfce4-screenshooter via xdg-desktop-portal-wlr)
|
# Screenshot
|
||||||
bindsym Print exec xfce4-screenshooter
|
# Print → flameshot GUI (annotations, save + clipboard via portal)
|
||||||
bindsym Shift+Print exec xfce4-screenshooter -r
|
# Shift+Print → grim+slurp region → clipboard
|
||||||
bindsym Alt+Print exec xfce4-screenshooter -w
|
# 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
|
||||||
|
|||||||
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
|
||||||
@@ -7,7 +7,11 @@ set -eu
|
|||||||
|
|
||||||
SWAY_PACKAGES="
|
SWAY_PACKAGES="
|
||||||
cliphist
|
cliphist
|
||||||
|
flameshot
|
||||||
|
grim
|
||||||
|
jq
|
||||||
kanshi
|
kanshi
|
||||||
|
slurp
|
||||||
swayfx
|
swayfx
|
||||||
swaybg
|
swaybg
|
||||||
swayidle
|
swayidle
|
||||||
|
|||||||
Reference in New Issue
Block a user