Skip to content

Instantly share code, notes, and snippets.

@jpentland
Last active February 9, 2023 20:00
Embed
What would you like to do?
Add or remove windows from suckless' tabbed
#!/bin/sh
# Usage:
# tabc.sh <tabbed-id> <command>
# Commands:
# add <window-id> - Add window to tabbed
# remove <window-id> - Remove window from tabbed
# list - List all clients of tabbed
#
# Functions
#
# Get wid of root window
function get_root_wid {
xwininfo -root | awk '/Window id:/{print $4}'
}
# Get children of tabbed
function get_clients {
id=$1
xwininfo -id $id -children | sed -n '/[0-9]\+ \(child\|children\):/,$s/ \+\(0x[0-9a-z]\+\).*/\1/p'
}
# Get class of a wid
function get_class {
id=$1
xprop -id $id | sed -n '/WM_CLASS/s/.*, "\(.*\)"/\1/p'
}
#
# Main Program
#
tabbed=$1; shift
if [ "$(get_class $tabbed)" != "tabbed" ]; then
echo "Not an instance of tabbed" 2>&1
fi
cmd=$1; shift
case $cmd in
add)
wid=$1; shift
xdotool windowreparent $wid $tabbed
;;
remove)
wid=$1; shift
xdotool windowreparent $wid $(get_root_wid)
;;
list)
get_clients $tabbed
;;
esac
@thugcee
Copy link

thugcee commented Feb 22, 2020

You specify in shebang POSIX compatible sh shell and then you use not allowed function syntax.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment