summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/bin/workspace16
1 files changed, 10 insertions, 6 deletions
diff --git a/bin/bin/workspace b/bin/bin/workspace
index b42cc56..7f94ff1 100755
--- a/bin/bin/workspace
+++ b/bin/bin/workspace
@@ -18,16 +18,20 @@ act_on_container() {
# Exit if empty
[[ -z $target ]] && exit
- # If new workspace has to be created
- if [[ ! $target = [0-9]* ]]; then
+ # See if target exsits
+ existing_target=$(echo "$workspaces" | awk '{print $2}' | grep -F "$target")
+ # If new workspace has to be created
+ if [[ -n "$existing_target" ]]; then
+ target="$existing_target"
+ else
# Add number to workspace name (start at 1, but allow 0)
new_number=$(echo "$workspaces" | awk '$1!=p+1 && $1!=0 {exit;}{p=$1} END {print p+1}')
target=$new_number:$target
fi
# Execute command
- exec i3-msg $1 $target
+ exec i3-msg "$1" "$target"
}
act_on_workspace() {
@@ -39,7 +43,7 @@ act_on_workspace() {
next=$(echo "${workspaces}" | awk '$1 ~ /'$new_number'/ {print $2}')
- i3-msg rename workspace to ${new_number}:${focused_name}
+ i3-msg rename workspace to "${new_number}":"${focused_name}"
# ${variable//pattern} replaces all matches of pattern with nothing
if [[ ! -z "${next// }" ]]; then
@@ -51,6 +55,6 @@ act_on_workspace() {
}
# Command to use
-[[ $1 = 'gw' ]] && act_on_container "workspace" $2
-[[ $1 = 'mc' ]] && act_on_container "move container to workspace" $2
+[[ $1 = 'gw' ]] && act_on_container "workspace" "$2"
+[[ $1 = 'mc' ]] && act_on_container "move container to workspace" "$2"
[[ $1 = 'mw' ]] && act_on_workspace "$2"