Signed-off-by: Stacy Harper <contact@stacyharper.net>master
parent
00e495374d
commit
35b312c0b8
2 changed files with 50 additions and 1 deletions
@ -0,0 +1,49 @@ |
||||
#!/bin/sh |
||||
# |
||||
# Initial author: Adrien Le Guillou |
||||
# License: MIT |
||||
# |
||||
# include common definitions |
||||
# shellcheck source=scripts/core/sxmo_common.sh |
||||
. "$(dirname "$0")/sxmo_common.sh" |
||||
|
||||
set -e # error if a command as non 0 exit |
||||
set -u # error if undefined variable |
||||
|
||||
|
||||
# Default parameters |
||||
FORMAT="W:%W | %A - %T" |
||||
DMENU="sxmo_dmenu.sh" |
||||
|
||||
# FORMAT as a `jq` concatenation string |
||||
FORMAT="$FORMAT (%I)" |
||||
FORMAT=$(echo "$FORMAT" | \ |
||||
sed 's/%O/" + .output + "/ |
||||
s/%W/" + .workspace + "/ |
||||
s/%A/" + .app_id + "/ |
||||
s/%T/" + .name + "/ |
||||
s/%I/" + .id + "/ |
||||
s/"/\"/ |
||||
s/\(.*\)/\"\1\"/') |
||||
|
||||
# Get the container ID from the node tree |
||||
CON_ID=$(swaymsg -t get_tree | \ |
||||
jq -r ".nodes[] |
||||
| {output: .name, content: .nodes[]} |
||||
| {output: .output, workspace: .content.name, |
||||
apps: .content |
||||
| .. |
||||
| {id: .id?|tostring, name: .name?, app_id: .app_id?, shell: .shell?} |
||||
| select(.app_id != null or .shell != null)} |
||||
| {output: .output, workspace: .workspace, |
||||
id: .apps.id, app_id: .apps.app_id, name: .apps.name } |
||||
| $FORMAT |
||||
| tostring" | \ |
||||
$DMENU -i -p "Window Switcher") |
||||
|
||||
# Requires the actual `id` to be at the end and between paretheses |
||||
CON_ID=${CON_ID##*(} |
||||
CON_ID=${CON_ID%)} |
||||
|
||||
# Focus on the chosen window |
||||
swaymsg "[con_id=$CON_ID]" focus |
Loading…
Reference in new issue