397 Stimmen

Wie kann ich tmux so einstellen, dass beim Start ein bestimmtes Windows geöffnet wird?

Wie kann ich tmux so einrichten, dass es mit dem angegebenen geöffneten Windows startet?

4voto

merlin2011 Punkte 66930

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.

3voto

Schwesi Punkte 4573

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  |
-----------------------------------

2voto

gypaetus Punkte 6103

tmuxp unterstützen JSON- oder YAML-Sitzungskonfiguration und eine Python-API. Eine einfache tmuxp-Konfigurationsdatei zur Erstellung einer neuen Sitzung in YAML-Syntax lautet:

session_name: 2-pane-vertical
windows:
  - window_name: my test window
    panes:
      - pwd
      - pwd

2voto

Padhraic Punkte 4276

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.

2voto

Sbu Punkte 860

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
  1. Ich erstelle einen bash/zsh-Alias, um diese Sitzungskonfiguration zu beziehen:

    alias tmuxjohndoe='. ~/.config/tmux/tmux-sessions/johndoe.conf'

  2. Ich verbringe genau die richtige Menge an Zeit mit der Fehlersuche, um herauszufinden, dass ich die Ausführungsrechte für die johndoe.conf Datei :-)

  3. Von überall aus kann ich jetzt einfach die tmuxjohndoe !

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X