X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=i3-split-maybe;fp=i3-split-maybe;h=3cedb5cc742253c63e0a2d26b2194917586bcbd8;hp=0000000000000000000000000000000000000000;hb=d67edcdca8795a4bca116aa532d02dda246a6f53;hpb=a9e3d60b4254cd5c6216c4b3e7f8cd5cc5107fad diff --git a/i3-split-maybe b/i3-split-maybe new file mode 100755 index 0000000..3cedb5c --- /dev/null +++ b/i3-split-maybe @@ -0,0 +1,45 @@ +#!/bin/bash + +set -e; . /usr/local/lib/bash-bear; set +e + +# We use this along with +# /a/opt/i3-alternating-layout/alternating_layouts.py to anticipate when +# we want to split/tab windows. There are 2 options of when to do it: +# just after a window is created, or just before a window is +# created. Doing it after a window is created allows you to move a +# window into the split that only has 1 window, whereas the other way +# doesn't. For my use cases, I think I don't really want to move it into +# the split if it is a tabbed split. +# +# I have a keybind which disables both, it runs /b/ds/i3-auto-layout-toggle + +if [[ -e /tmp/iank-i3-no-auto ]]; then + exit 0 +fi + + +tmp=$(mktemp) + +i3-msg -t get_workspaces | jq ".[]| select(.focused==true) | .rect | .width" >$tmp + +{ read -r screen_width; read -r screen_height; } <$tmp + +i3-msg -t get_tree | jq -r ".. | select(.focused? == true).rect | .width, .height" >$tmp + +half_w=$(( screen_width / 2 + 100 )) +half_h=$(( screen_height / 2 + 100 )) + + +{ read -r w; read -r h; } <$tmp + + +if (( screen_width < 1920 )); then + # haven't considered this case yet + exit 0 +fi + +if (( w < half_w && h < half_h )); then + i3-msg "split vertical, layout tabbed" +fi + +rm -f $tmp