From f6e6670a5f474e2d9e9f11b32982555991aec4a6 Mon Sep 17 00:00:00 2001 From: A-Larsen Date: Tue, 13 Oct 2026 10:13:52 -0400 Subject: [PATCH] goto window dwm shortcut --- usr-local-bin/dwm-goto-window | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 usr-local-bin/dwm-goto-window diff --git a/usr-local-bin/dwm-goto-window b/usr-local-bin/dwm-goto-window new file mode 100755 index 0000000..07a8d8e --- /dev/null +++ b/usr-local-bin/dwm-goto-window @@ -0,0 +1,59 @@ +#!/bin/bash + +# # List all open windows, pipe into dmenu +# window=$(wmctrl -l | awk '{print $1, $4" "$5" "$6" "$7" "$8" "$9}' | dmenu -i -p "Switch to window:") + +# if [ -n "$window" ]; then +# # Extract window ID and trigger activation +# wid=$(echo "$window" | awk '{print $1}') +# wmctrl -i -a "$wid" +# fi + +# Get unique application names using wmctrl, pipe into dmenu +selected=$(wmctrl -lx | awk '{ + split($3, a, "."); + app = a[length(a)]; + if (!seen[app]++) print app; +}' | dmenu -i -p "Switch to application:") + +if [ -n "$selected" ]; then + # Find the window ID for the selected app name + wid=$(wmctrl -lx | awk -v sel="$selected" '{ + split($3, a, "."); + app = a[length(a)] == "" ? $3 : a[length(a)]; + if (app == sel) { + print $1; + exit; + } + }') + + if [ -n "$wid" ]; then + # Use xdotool to reliably trigger DWM's tag, monitor, and focus jump + xdotool windowactivate "$wid" + fi +fi + + + +# Display only unique application names in dmenu +# selected=$(wmctrl -lx | awk '{ +# split($3, a, "."); +# app = a[length(a)]; +# if (!seen[app]++) print app; +# }' | dmenu -i -p "Switch to application:") + +# if [ -n "$selected" ]; then +# wid=$(wmctrl -lx | awk -v sel="$selected" '{ +# split($3, a, "."); +# app = a[length(a)] == "" ? $3 : a[length(a)]; +# if (app == sel) { +# print $1; +# exit; +# } +# }') + +# if [ -n "$wid" ]; then +# # wmctrl automatically tags this as a pager request (Source 2) +# wmctrl -i -a "$wid" +# fi +# fi -- 2.43.0