From 61cf7a91b45fa4f9a2a6cfba5bf14f7f28c134e3 Mon Sep 17 00:00:00 2001 From: Jay Ta'ala Date: Tue, 9 Apr 2019 13:22:18 +1000 Subject: [PATCH] FIX: do not lose/kill sticky windows when changing layouts. Previous behaviour caused sticky windows to get killed when deleting layouts before applying a layout and then reintroducing windows. i3 supports sticky windows (they're great). With this change, when we iterate through layouts (to kill) we check if a the selected window is _NET_WM_STATE_STICKY. If so, then will not kill. --- layout_manager.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/layout_manager.sh b/layout_manager.sh index 099b6cd..585cf98 100755 --- a/layout_manager.sh +++ b/layout_manager.sh @@ -127,7 +127,13 @@ if [[ "$ACTION" = "LOAD LAYOUT" ]]; then # delete all empty layout windows from the workspace for (( i=0 ; $a-20 ; a=$a+1 )); do - i3-msg "focus parent, kill" > $LOG_FILE 2>&1 + + # check window for STICKY before killing - if sticky do not kill + xprop -id $(xdotool getwindowfocus) | grep -q '_NET_WM_STATE_STICK' + + if [ $? -eq 1 ]; then + i3-msg "focus parent, kill" > $LOG_FILE 2>&1 + fi done # then we can apply to chosen layout