From ec6ec0b226b32ee059059791ecd107befed35ac5 Mon Sep 17 00:00:00 2001 From: Luuk van Baal Date: Mon, 26 Nov 2018 21:09:11 +0100 Subject: [PATCH] Added script which switches to the workspace which a window is being moved to, if that action makes the current workspace empty. --- .scripts/i3cmds/i3switchempty | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 .scripts/i3cmds/i3switchempty diff --git a/.scripts/i3cmds/i3switchempty b/.scripts/i3cmds/i3switchempty new file mode 100755 index 00000000..1c72a3af --- /dev/null +++ b/.scripts/i3cmds/i3switchempty @@ -0,0 +1,16 @@ +#!/bin/bash +# Original sript below modified to not use `jq` for improved performance (~4 times as fast) and no dependencies. +# https://github.com/tasinet/i3-switch-if-workspace-empty/blob/master/i3-switch-if-workspace-empty.sh + +new_workspace=$1 + +if [ "" == "$new_workspace" ]; then + echo expecting workspace name/number + exit 1 +fi + +active_workspace=$(i3-msg -t get_workspaces | grep -Po '[0-9]*","visible":[a-z]*,"focused":true' | head -c1) + +toplevel_containers=$(i3-msg -t get_tree | grep -Po "\"num\":$active_workspace.*" | grep -Po '"nodes":(\d*?,|.*?[^\\]",)' | head -n1 | grep -Po '"nodes":\[\]') + +[ "$toplevel_containers" != "" ] && i3-msg workspace $new_workspace