diff --git a/.tmux.conf b/.tmux.conf
index 9432e59..7f504be 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -39,16 +39,17 @@ bind -n M-k copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-
 bind -n M-j copy-mode \; send-keys -X previous-prompt -o \; send-keys -X cursor-up
 bind -n M-Up select-pane -U
 bind -n M-Down select-pane -D
-bind -n M-1 select-window -t 42
-bind -n M-2 select-window -t 2
-bind -n M-3 select-window -t 3
-bind -n M-4 select-window -t 4
-bind -n M-5 select-window -t 5
-bind -n M-6 select-window -t 6
-bind -n M-7 select-window -t 7
-bind -n M-8 select-window -t 8
-bind -n M-9 select-window -t 9
-bind -n M-0 select-window -t 10
+bind -n M-1 run-shell -b "tmux-shortcut 1 helix"
+bind -n M-2 run-shell -b "tmux-shortcut 2"
+bind -n M-3 run-shell -b "tmux-shortcut 3"
+bind -n M-4 run-shell -b "tmux-shortcut 4"
+bind -n M-5 run-shell -b "tmux-shortcut 5"
+bind -n M-6 run-shell -b "tmux-shortcut 6"
+bind -n M-7 run-shell -b "tmux-shortcut 7"
+bind -n M-8 run-shell -b "tmux-shortcut 8"
+bind -n M-9 run-shell -b "tmux-shortcut 9"
+bind -n M-0 run-shell -b "tmux-shortcut 10"
+
 bind -n M-m send-keys -t 9 q C-u "clear; tmux clear-history -t 9" C-m C-p C-p C-p C-m
 bind C-o send-keys C-o
 bind r source-file ~/.tmux.conf
@@ -85,14 +86,5 @@ set -g set-titles on
 set -g set-titles-string "#H - #T"
 
 new -s0 -n 1
-new-window -n 2
-new-window -n 3
-new-window -n 4
-new-window -n 5
-new-window -n 6
-new-window -n 7
-new-window -n 8
-new-window -n 9
-new-window -n 0
 
 # vim:set ft=tmux:
diff --git a/bin/tmux-hx-helper b/bin/tmux-hx-helper
index 56bdb95..de73970 100755
--- a/bin/tmux-hx-helper
+++ b/bin/tmux-hx-helper
@@ -18,26 +18,27 @@ fi
 
 fre --store_name "edit-history" --add "$_file"
 
-(tmux select-window -t helix && 
-tmux send-keys -t helix Escape &&
-tmux send-keys -t helix ":open ${_file}" Enter) || tmux new-window -t 42 -n helix \
-	-e "AR=$AR" \
-	-e "AS=$AS" \
-	-e "BUILD_COMMAND=$BUILD_COMMAND" \
-	-e "CC=$CC" \
-	-e "CXX=$CXX" \
-	-e "GOFLAGS=$GOFLAGS" \
-	-e "GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
-	-e "LC_ALL=$LC_ALL" \
-	-e "LD=$LD" \
-	-e "NM=$NM" \
-	-e "NM=$NM" \
-	-e "OBJCOPY=$OBJCOPY" \
-	-e "OBJDUMP=$OBJDUMP" \
-	-e "PATH=$PATH" \
-	-e "RANLIB=$RANLIB" \
-	-e "READELF=$READELF" \
-	-e "RUST_SRC_PATH=$RUST_SRC_PATH" \
-	-e "SIZE=$SIZE" \
-	-e "STRIP=$STRIP" \
+tmux-shortcut 1 env \
+	"AR=$AR" \
+	"AS=$AS" \
+	"BUILD_COMMAND=$BUILD_COMMAND" \
+	"CC=$CC" \
+	"CXX=$CXX" \
+	"GOFLAGS=$GOFLAGS" \
+	"GOPACKAGESDRIVER=$GOPACKAGESDRIVER" \
+	"LC_ALL=$LC_ALL" \
+	"LD=$LD" \
+	"NM=$NM" \
+	"NM=$NM" \
+	"OBJCOPY=$OBJCOPY" \
+	"OBJDUMP=$OBJDUMP" \
+	"PATH=$PATH" \
+	"RANLIB=$RANLIB" \
+	"READELF=$READELF" \
+	"RUST_SRC_PATH=$RUST_SRC_PATH" \
+	"SIZE=$SIZE" \
+	"STRIP=$STRIP" \
 	helix "${_file}"
+sleep 0.1
+tmux send-keys Escape &&
+	tmux send-keys ":open ${_file}" Enter
diff --git a/bin/tmux-shortcut b/bin/tmux-shortcut
new file mode 100755
index 0000000..536ab54
--- /dev/null
+++ b/bin/tmux-shortcut
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+nr="@app-${1}"
+shift
+
+pane="$(tmux show -vg ${nr} || true)"
+if [[ -n "${pane}" ]] && tmux has-session -t "${pane}" ; then
+  if tmux list-panes -F "#{pane_id}" | grep "^${pane}\$" >>/dev/null ; then
+    # Pane is on this window. Focus it and exit.
+    exec tmux select-pane -t "${pane}"
+  fi
+else
+  # App pane does not exist, so create a new window.
+  pane=$(tmux new-window -d -P -F '#{pane_id}' "$@")
+  tmux set -g "${nr}" "${pane}"
+fi
+
+# Swap active pane for app
+tmux swap-pane -s "${pane}"