aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/sway
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:37 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:37 +0100
commit12b08e19cbd65988c51de40ffd06ce01418c2bb6 (patch)
tree250afcc194532c01b66d0bf4594b219da6c4388b /dot_config/sway
parentf726a9afa6ba815ac8b5f4ce94a6295e74ff3980 (diff)
downloaddotfiles-12b08e19cbd65988c51de40ffd06ce01418c2bb6.tar.gz
dotfiles-12b08e19cbd65988c51de40ffd06ce01418c2bb6.tar.bz2
dotfiles-12b08e19cbd65988c51de40ffd06ce01418c2bb6.zip
feat(desktop): xdg-desktop-portal pinning, wob OSD, mako DND toggle
- xdg-desktop-portal: pin wlr for ScreenCast/Screenshot, gtk for the rest, so flatpak browsers (Meet, Slack, Discord) get a working screen-share path instead of whatever the portal frontend happens to pick first. - wob: small wayland overlay bar fed via a fifo. New vol-osd.sh / brightness-osd.sh wrappers replace the bare pactl/brightnessctl invocations in keybinds so adjusting volume or backlight flashes a bar at the bottom of the screen. wob.service owns the fifo lifecycle (mkfifo before, rm after). - mako: add a [mode=do-not-disturb] section that hides notifications while the mode is active, plus a Super+x n submode binding to toggle it. Notifications still accumulate in history; just no popups.
Diffstat (limited to 'dot_config/sway')
-rw-r--r--dot_config/sway/config21
-rw-r--r--dot_config/sway/executable_brightness-osd.sh16
-rw-r--r--dot_config/sway/executable_vol-osd.sh23
3 files changed, 50 insertions, 10 deletions
diff --git a/dot_config/sway/config b/dot_config/sway/config
index 6f8dbfc..1e2cc5f 100644
--- a/dot_config/sway/config
+++ b/dot_config/sway/config
@@ -132,12 +132,12 @@ bindsym $mod+Tab workspace next_on_output
bindsym $mod+Shift+Tab workspace prev_on_output
# Volume
-bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
-bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
-bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
-bindsym $mod+Ctrl+k exec pactl set-sink-volume @DEFAULT_SINK@ +5%
-bindsym $mod+Ctrl+j exec pactl set-sink-volume @DEFAULT_SINK@ -5%
-bindsym $mod+Shift+m exec pactl set-sink-mute @DEFAULT_SINK@ toggle
+bindsym XF86AudioRaiseVolume exec ~/.config/sway/vol-osd.sh up
+bindsym XF86AudioLowerVolume exec ~/.config/sway/vol-osd.sh down
+bindsym XF86AudioMute exec ~/.config/sway/vol-osd.sh mute
+bindsym $mod+Ctrl+k exec ~/.config/sway/vol-osd.sh up
+bindsym $mod+Ctrl+j exec ~/.config/sway/vol-osd.sh down
+bindsym $mod+Shift+m exec ~/.config/sway/vol-osd.sh mute
bindsym $mod+m exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
# Media
@@ -149,10 +149,10 @@ bindsym $mod+Ctrl+l exec playerctl next
bindsym $mod+Ctrl+h exec playerctl previous
# Brightness
-bindsym XF86MonBrightnessUp exec brightnessctl set +5%
-bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
-bindsym $mod+Ctrl+bracketright exec brightnessctl set +5%
-bindsym $mod+Ctrl+bracketleft exec brightnessctl set 5%-
+bindsym XF86MonBrightnessUp exec ~/.config/sway/brightness-osd.sh up
+bindsym XF86MonBrightnessDown exec ~/.config/sway/brightness-osd.sh down
+bindsym $mod+Ctrl+bracketright exec ~/.config/sway/brightness-osd.sh up
+bindsym $mod+Ctrl+bracketleft exec ~/.config/sway/brightness-osd.sh down
# ThinkPad multimedia keys
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
@@ -221,6 +221,7 @@ mode "system" {
bindsym v exec $term --class=floating -e pulsemixer, mode "default"
bindsym k exec $term --class=floating -e glow -p ~/dotfiles/KEYBINDS.md, mode "default"
bindsym m exec ~/.config/waybar/mako-history.py, mode "default"
+ bindsym n exec makoctl mode -t do-not-disturb, mode "default"
bindsym Escape mode "default"
bindsym Return mode "default"
}
diff --git a/dot_config/sway/executable_brightness-osd.sh b/dot_config/sway/executable_brightness-osd.sh
new file mode 100644
index 0000000..74d6baa
--- /dev/null
+++ b/dot_config/sway/executable_brightness-osd.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# Print brightness percent to wob's fifo to flash a brightness bar.
+# Usage: brightness-osd.sh up|down
+set -eu
+
+fifo=${XDG_RUNTIME_DIR:-/tmp}/wob.sock
+
+case "${1:-}" in
+ up) brightnessctl set +5% >/dev/null ;;
+ down) brightnessctl set 5%- >/dev/null ;;
+ *) echo "usage: $0 up|down" >&2; exit 2 ;;
+esac
+
+cur=$(brightnessctl g)
+max=$(brightnessctl m)
+printf '%d\n' "$(( cur * 100 / max ))" >"$fifo"
diff --git a/dot_config/sway/executable_vol-osd.sh b/dot_config/sway/executable_vol-osd.sh
new file mode 100644
index 0000000..46f35b7
--- /dev/null
+++ b/dot_config/sway/executable_vol-osd.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Print 0–100 to wob's fifo to flash a volume bar overlay.
+# Usage: vol-osd.sh up|down|mute (mute toggles)
+set -eu
+
+fifo=${XDG_RUNTIME_DIR:-/tmp}/wob.sock
+sink='@DEFAULT_SINK@'
+
+case "${1:-}" in
+ up) pactl set-sink-volume "$sink" +5% ;;
+ down) pactl set-sink-volume "$sink" -5% ;;
+ mute) pactl set-sink-mute "$sink" toggle ;;
+ *) echo "usage: $0 up|down|mute" >&2; exit 2 ;;
+esac
+
+muted=$(pactl get-sink-mute "$sink" | awk '{print $2}')
+if [ "$muted" = "yes" ]; then
+ printf '0\n' >"$fifo"
+else
+ pactl get-sink-volume "$sink" |
+ awk '/Volume:/ { for (i=1;i<=NF;i++) if ($i ~ /%/) { gsub(/%/,"",$i); print $i; exit } }' \
+ >"$fifo"
+fi