+++ /dev/null
-#! /bin/bash
-
-set -e
-
-SESSION='xlaunch'
-SOCK_NAME="$SESSION"
-TMUX="tmux -L $SOCK_NAME"
-LOG_FILE=~/var/log/xlaunch.log
-
-log() {
- local -r fmt="$1"
- shift
-
- printf "[%s] ${fmt}\n" "$(date +'%F %T')" $@ >> "$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
-}
-
-_start() {
- $TMUX new-session -d -s "$SESSION"
- $TMUX set-option -gt "$SESSION" allow-rename off
-
- _counter_file=$(mktemp)
- launch_from_directory ~/.xlaunch.d
- launch_from_directory ~/.xlaunch.d."$(hostname)"
-}
-
-_startx() {
- log '[info] Starting X11'
- _restart
- log '[info] Launching dwm'
- exec dwm
-}
-
-_stop() {
- $TMUX kill-session -t "$SESSION"
-}
-
-_restart() {
- _stop || true
- _start
-}
-
-_attach() {
- $TMUX attach -t "$SESSION"
-}
-
-main() {
- local -r command="$1"
-
- case "$command" in
- #'' ) _startx;;
- 'startx' ) _startx;;
- 'start' ) _start;;
- 'stop' ) _stop;;
- 'restart' ) _restart;;
- 'attach' ) _attach;;
- *)
- echo "[error] Unknown command: \"$command\". Known: startx, start, stop, restart, attach."
- exit 1;;
- esac
-}
-
-main "$*"