Wie kann ich tmux so einrichten, dass es mit dem angegebenen geöffneten Windows startet?
Antworten
Zu viele Anzeigen?smux.py
können Sie einfach die gewünschten Befehle in jedem Fenster auflisten und ihnen eine Zeile mit drei Bindestrichen voranstellen.
Hier ist ein Beispiel für eine smux-Datei, die drei Fenster öffnet.
---
echo "This is pane 1."
---
cd /tmp
git clone https://github.com/hq6/smux
cd smux
less smux.py
---
man tmux
Wenn Sie dies in eine Datei namens Sample.smux
können Sie dann Folgendes ausführen, um das Programm zu starten.
pip3 install smux.py
smux.py Sample.smux
Vollständiger Haftungsausschluss: Ich bin der Autor von smux.py.
Um tmux einfach mit mehreren Fenstern zu öffnen und einige Befehle auszuführen, habe ich die folgende Bash-Datei erstellt:
#!/bin/bash
tmux split-window -v -p 30 -c ~/path/to/folder1
tmux split-window -h -p 66 -c ~/path/to/folder2
tmux split-window -h -p 50 'mongod'
Führen Sie die Bash-Datei aus, um folgendes zu erhalten:
-----------------------------------
| |
|---------------------------------|
| folder1 | folder2 | mongod |
-----------------------------------
Das Plugin tmux-Kontinuum speichert die tmux-Sitzung automatisch und lädt sie beim nächsten Start von tmux. Das sollte einfacher zu bewerkstelligen sein als einige der benutzerdefinierten Skriptlösungen hier.
Merkmale:
- kontinuierliche Speicherung der tmux Umgebung
- automatischer tmux-Start beim Einschalten des Computers/Servers
- automatische Wiederherstellung beim Start von tmux
Um Ihre Sitzung bei Bedarf zu speichern, können Sie die tmux-resurrect Plugin. tmux-resurrect ist auch erforderlich für die Ausführung von tmux-Kontinuum
tmux-resurrect speichert alle kleinen Details der tmux-Umgebung so dass sie nach einem Neustart des Systems (oder wenn Sie Lust haben) vollständig wiederhergestellt werden kann. Lust haben). Es ist keine Konfiguration erforderlich. Sie sollten das Gefühl haben, dass Sie tmux nie verlassen haben.
Ich weiß, dass meine Lösung anderen ziemlich ähnlich ist, aber ich konnte keine finden, die genau das hatte, wonach ich suchte:
- Ich möchte betitelte Fenster an bestimmten Pfaden öffnen
- Ich möchte so viele Fenster und Fensterbereiche haben, wie ich möchte
- Ich möchte beliebige Befehle in den einzelnen Fenstern ausführen, die im Verlauf gespeichert werden
- Ich möchte das gewünschte Fenster am Ende des Skripts fokussieren
- Ich möchte sehr schnell spawnen können
- Ich möchte, dass es leicht zu pflegen ist
Für mein Projekt mit dem Namen johndoe
erstelle ich eine johndoe.conf
Datei, die im Wesentlichen ein Bash-Skript ist, irgendwo in meinen Configs ( ~/.config/tmux/tmux-sessions/johndoe.conf
).
Diese Datei ist einfach zu pflegen, da sie nicht über eine Vielzahl von \
überall, wie ich in anderen Antworten gesehen habe:
# Create a new session named johndoe, with a first window named Main
# at the specified starting path.
# The -d is for detached mode, which allows me to continue defining the rest of the session
# before attaching to it. Without -d, tmux would open the client right away and
# ignore the rest of the session definition
tmux new -d -s johndoe -n 'Main' -c ~/dev/own/johndoe
# Simulate the user entering some docker command in the first window available
# in the target session named (-t) johndoe
tmux send -t johndoe 'docker compose up -d' Enter
# Create a new window in the target session, with the title 'UI run'
t neww -t pers -n 'UI run' -c ~/dev/own/johndoe/front-end
# Simulate user entering a command to the first pane
tmux send -t pers:'UI run.0' 'git status --short' Enter
# Split this window horizontally
tmux split-window -t pers:'UI run' -h -c ~/dev/own/johndoe/front-end
# Simulate user entering a command to the second pane in this window
tmux send -t pers:'UI run.1' 'npm run dev' Enter
tmux neww -t johndoe -n 'API run' -c ~/dev/own/johndoe/back-end/Api
tmux send -t johndoe:'API run' 'dotnet run --no-build' Enter
# Focus the first window
tmux select-window -t johndoe:'Main'
# Attach the current terminal to the only session available
# (you might want to add "-t johndoe" here if you need several sessions running in parallel)
tmux a -d
-
Ich erstelle einen bash/zsh-Alias, um diese Sitzungskonfiguration zu beziehen:
alias tmuxjohndoe='. ~/.config/tmux/tmux-sessions/johndoe.conf'
-
Ich verbringe genau die richtige Menge an Zeit mit der Fehlersuche, um herauszufinden, dass ich die Ausführungsrechte für die
johndoe.conf
Datei :-) -
Von überall aus kann ich jetzt einfach die
tmuxjohndoe
!