-
-
Save thugcee/87158c313070c666efd43c0a64a2a2e7 to your computer and use it in GitHub Desktop.
| # Remove current tab from tabbed | |
| super + mod1 + t; r | |
| tabc.sh $(bspc query -N -n focused) remove | |
| # At given direction: join two windows into a new tabbed or add window to an existing tabbed | |
| super + mod1 + t; {Left,Down,Up,Right} | |
| tabc.sh $(bspc query -N -n {west,south,north,east}) add $(bspc query -N -n focused) |
| #define MODKEY Mod4Mask | |
| static Key keys[] = { | |
| /* modifier key function argument */ | |
| { MODKEY|Mod1Mask, XK_Return, focusonce, { 0 } }, | |
| { MODKEY|Mod1Mask, XK_Return, spawn, { 0 } }, | |
| { MODKEY|Mod1Mask, XK_Next, rotate, { .i = +1 } }, | |
| { MODKEY|Mod1Mask, XK_Prior, rotate, { .i = -1 } }, | |
| { MODKEY|Mod1Mask|ShiftMask, XK_Prior, movetab, { .i = -1 } }, | |
| { MODKEY|Mod1Mask|ShiftMask, XK_Next, movetab, { .i = +1 } }, |
| #!/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 | |
| TABBED_CONFIG="-c -k -o #111111 -O #7A7777 -t #8F8E24 -T #FFFFFF" | |
| # | |
| # Functions | |
| # | |
| # Get wid of root window | |
| get_root_wid () { | |
| xwininfo -root | awk '/Window id:/{print $4}' | |
| } | |
| # Get children of tabbed | |
| 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 | |
| get_class () { | |
| id=$1 | |
| xprop -id $id | sed -n '/WM_CLASS/s/.*, "\(.*\)"/\1/p' | |
| } | |
| # | |
| # Main Program | |
| # | |
| tabbed=$1; shift | |
| cmd=$1; shift | |
| if [ "$(get_class $tabbed)" != "tabbed" ]; then | |
| # It looks like what supposed to be an id of a tabbed window is not a | |
| # tabbed. | |
| if [ $cmd = "add" ]; then | |
| # But this is the `add` command so lets join booth windows in a | |
| # new tabbed instance. First start tabbed, add the target window | |
| # and then proceed to normal `add`. | |
| sibling=$tabbed | |
| tabbed=$(tabbed $TABBED_CONFIG -d) && xdotool windowreparent $sibling $tabbed || exit 2 | |
| else | |
| # For other commands we need tunning tabbed instance | |
| echo "$tabbed is not an instance of tabbed" | |
| exit 1 | |
| fi | |
| fi | |
| case $cmd in | |
| add) | |
| wid=$1; shift | |
| xdotool windowreparent $wid $tabbed | |
| ;; | |
| remove) | |
| wid=$1 | |
| # When there isn't supplied an id of a window to be removed | |
| # from tabbed then remove the currently active one. | |
| test -n "$win" || wid=$(get_clients $tabbed| head -1) | |
| xdotool windowreparent $wid $(get_root_wid) | |
| ;; | |
| list) | |
| get_clients $tabbed | |
| ;; | |
| esac |
I do not understand the purpose of tabbed_slash_config.h, I could imagine placing it into the source code and do make install and somehow something would be added/facilitated, but that's all.
Sorry maybe I should explain it better. It's tabbed/config.h (gist file names can't contain /, that's why you see _slash_).
So you should put or rather replace part of config.h in tabbed's source code. Tabbed follows suckless philosophy and to change it's configuration you have to edit and recompile code.
Do I need to modify the make file?
No.
License for above code is MIT (https://mit-license.org/).
Thank you! Sorry I deleted my comment, I noticed this isn't actually the upstream so I assume tabc.sh is under whatever license jpentland chooses (assuming there is license and the license wants derivatives to share alike).
I do not understand the purpose of tabbed_slash_config.h, I could imagine placing it into the source code and do make install and somehow something would be added/facilitated, but that's all.
Do I need to modify the make file?
Could you explain ?