Wie kann ich tmux so einrichten, dass es mit dem angegebenen geöffneten Windows startet?
Antworten
Zu viele Anzeigen?Ich habe gerade versucht, alle Ideen auf dieser Seite zu verwenden, und keine davon hat mir gefallen. Ich wollte nur eine Lösung, die tmux mit einem bestimmten Satz von Windows startet, wenn mein Terminal geöffnet wird. Ich wollte auch, dass es idempotent ist, d.h. das Öffnen eines neuen Terminalfensters übernimmt die tmux-Sitzung vom vorherigen.
Die oben genannten Lösungen neigen oft dazu, mehrere tmux-Sitzungen zu öffnen, und ich möchte nur eine. Als erstes habe ich dies zu meinem ~/.bash_profile
:
tmux start-server
if [[ -z "$TMUX" ]]
then
exec tmux attach -d -t default
fi
dann fügte ich Folgendes zu meinem ~/.tmux.conf
:
new -s default -n emacs /usr/local/bin/emacs
neww -n shell /usr/local/bin/bash
neww -n shell /usr/local/bin/bash
selectw -t 1
Jedes Mal, wenn ich jetzt ein Terminal oder tmux oder was auch immer starte, verbinde ich mich entweder mit meiner bestehenden gewünschten Einrichtung (der Sitzung namens default
), oder erstellen Sie eine neue Sitzung mit dieser Einstellung.
Ich habe eine dieses Skript . Es braucht weder tmuxinator noch ruby oder andere. Es ist nur ein Bash-Skript, konfigurierbar:
Eine Datei mit dem Namen config sollte etwa Folgendes enthalten:
combo=()
combo+=('logs' 'cd /var/log; clear; pwd')
combo+=('home' 'cd ~; clear; pwd')
und der Bash-Code sollte sein:
#!/bin/bash
if [ -r config ]; then
echo ""
echo "Loading custom file"
. config
else
. config.dist
fi
tmux start-server
window=0
windownumber=-1
for i in "${combo[@]}"; do
if [ $((window%2)) == 0 ]; then
name=${i}
((windownumber++))
else
command=${i}
fi
if [ ${combo[0]} == "${i}" ]; then
tmux new-session -d -s StarTmux -n "${name}"
else
if [ $((window%2)) == 0 ]; then
tmux new-window -tStarTmux:$windownumber -n "${name}"
fi
fi
if [ $((window%2)) == 1 ]; then
tmux send-keys -tStarTmux:$windownumber "${command}" C-m
fi
((window++))
done
tmux select-window -tStarTmux:0
tmux attach-session -d -tStarTmux
- See previous answers
- Weitere Antworten anzeigen