diff options
Diffstat (limited to 'bin/workspace')
-rwxr-xr-x | bin/workspace | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/bin/workspace b/bin/workspace index 73a4ec4..a66e0b5 100755 --- a/bin/workspace +++ b/bin/workspace @@ -1,14 +1,20 @@ #!/bin/zsh workspaces=$(i3-msg -t get_workspaces | grep -Po '"name":.*?[^\\]"' | sed 's/"name":"\([^"]\+\)"/\1/g') -# used_numbers=$(echo $workspaces | awk 'BEGIN { FS = ":" } ; { print $1 }') -# max_number=$(echo $used_numbers | tail -1) -# largest_gap=$(echo $used_numbers | awk '$1!=p+1{print p+1}{p=$1}') -# [[ -z $largest_gap ]] && new_number=$(($max_number + 1)) || new_number=$largest_gap -# target=$(echo $workspaces | dmenu -i -sf green -p "Go to workspace:") -# [[ -z $target ]] && exit -# [[ ! $target = [0-9]* ]] && target=$new_number:$target +if [[ ! -z $2 ]]; then + target=$(echo $workspaces | grep "$2") + [[ -z $target ]] && target=$2 +else + used_numbers=$(echo $workspaces | awk 'BEGIN { FS = ":" } ; { print $1 }') + max_number=$(echo $used_numbers | tail -1) + lowest_gap=$(echo $used_numbers | awk '$1!=p+1{print p+1}{p=$1}' | head -1) + [[ -z $lowest_gap ]] && new_number=$(($max_number + 1)) || new_number=$lowest_gap -target=$(echo $workspaces | dmenu -i -sf green -p "Go to workspace:") -exec i3-msg workspace $target + target=$(echo $workspaces | dmenu -i -sf green -p "Go to workspace:") + [[ -z $target ]] && exit + [[ ! $target = [0-9]* ]] && target=$new_number:$target +fi + +[[ $1 = 'n' ]] && cmd="workspace" || cmd="move container to workspace" +exec i3-msg $cmd $target |