aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-14 10:58:38 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-14 10:58:38 +0100
commit2b63a5f594b172c8aa75c0d00067db346152022a (patch)
tree0fb6839bba50410fcc6455926f16cd728a1eca05 /dot_config
parent7a165a70b0bd43bb03547f1603a9454d43cc0d78 (diff)
downloaddotfiles-2b63a5f594b172c8aa75c0d00067db346152022a.tar.gz
dotfiles-2b63a5f594b172c8aa75c0d00067db346152022a.tar.bz2
dotfiles-2b63a5f594b172c8aa75c0d00067db346152022a.zip
feat(sway): Super+o types VPN TOTP via wtype
Fetches the current code from pass-otp's vpn/totp entry and types it into the focused surface with wtype. Falls back to wl-copy + a notification when wtype isn't available or the focused surface lacks virtual-keyboard support (e.g. an Xwayland window).
Diffstat (limited to 'dot_config')
-rw-r--r--dot_config/sway/config3
-rw-r--r--dot_config/sway/executable_type-vpn-otp.sh23
2 files changed, 26 insertions, 0 deletions
diff --git a/dot_config/sway/config b/dot_config/sway/config
index 18b402c..86a75e1 100644
--- a/dot_config/sway/config
+++ b/dot_config/sway/config
@@ -182,6 +182,9 @@ bindsym $mod+i exec ~/.local/bin/dictate
# OCR — crop a region, copy text to clipboard (tesseract)
bindsym $mod+Shift+o exec ~/.local/bin/ocr
+# VPN OTP — type current TOTP via wtype, fall back to clipboard
+bindsym $mod+o exec ~/.config/sway/type-vpn-otp.sh
+
# Lock & pause
bindsym $mod+Shift+s exec "playerctl -a pause; swaylock -f -e -c 000000"
diff --git a/dot_config/sway/executable_type-vpn-otp.sh b/dot_config/sway/executable_type-vpn-otp.sh
new file mode 100644
index 0000000..b3f0924
--- /dev/null
+++ b/dot_config/sway/executable_type-vpn-otp.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Fetch the current VPN TOTP from pass-otp and type it into the focused
+# surface via wtype. If wtype isn't available or fails (focused surface
+# lacks virtual-keyboard support, e.g. an Xwayland app), copy the code
+# to the Wayland clipboard instead and notify so the user can Ctrl+V it.
+set -eu
+
+code=$(pass otp show vpn/totp 2>/dev/null | tr -d ' \t\n\r') || {
+ notify-send -u critical "VPN OTP" "pass otp show vpn/totp failed"
+ exit 1
+}
+
+if [ -z "$code" ]; then
+ notify-send -u critical "VPN OTP" "empty code from pass-otp"
+ exit 1
+fi
+
+if command -v wtype >/dev/null 2>&1 && wtype -- "$code" 2>/dev/null; then
+ exit 0
+fi
+
+printf '%s' "$code" | wl-copy
+notify-send "VPN OTP" "Typed via wtype failed — code copied to clipboard"