+log() {
+ local -r fmt="$1"
+ shift
+
+ printf "${fmt}\n" $@ | twrap.sh >> "$LOG_FILE"
+}
+
+counter_next() {
+ local -r file="$_counter_file"
+
+ awk '{n = $1} END {print n + 1}' "$file" | sponge "$file"
+ cat "$file"
+}
+
+tmux_new_win() {
+ local -r command="$1"
+ local -r window_id=$(counter_next)
+ local -r window_name=$(basename "$command")
+ local -r pane=0
+
+ log \
+ '[debug] tmux window_id:"%s", window_name:"%s", command:"%s"' \
+ "$window_id" "$window_name" "$command"
+
+ $TMUX new-window -t "$SESSION" -n "$window_name"
+ $TMUX send-keys -t "$SESSION":"$window_id"."$pane" "$command" ENTER
+}
+
+launch_from_directory() {
+ local -r scripts_dir="$1"
+
+ log '[info] Looking for scripts in directory: "%s"' "$scripts_dir"
+ if test -d "$scripts_dir"
+ then
+ for script in "$scripts_dir"/*; do
+ log '[debug] Launching script: "%s"' "$script"
+ tmux_new_win "$script"
+ sleep 0.1 # TODO Find a way to block between starts instead.
+ done
+ else
+ log '[warning] Directory not found: %s' "$scripts_dir"
+ fi