Verwenden Sie gnome-terminal und tmux zusammen: Wie startet man mit dem neuesten Arbeitsverzeichnis?

422
xuhdev

Ich verwende derzeit gnome-terminal und tmux zusammen: Jedes Mal, wenn ich gnome-terminal starte, wird ein tmux gestartet:

#!/bin/bash  args=() if type tmux > /dev/null; then args+=('-e' "tmux new-session") fi  exec gnome-terminal "$" "$@" 

Aber wie kann ich tmux mit dem Arbeitsverzeichnis der zuletzt aktiven tmux-Sitzung starten, wenn eine aktive tmux-Sitzung vorhanden ist?

0

1 Antwort auf die Frage

1
meuh

Was helfen kann, ist der list-panesBefehl, den Sie -afür alle verwenden können. Standardmäßig enthält es nicht das, was Sie möchten, aber Sie können ihm ein Format pane_current_pathzuweisen. Dazu gehören beispielsweise die, und möglicherweise genug andere Werte, damit Sie entscheiden können, welche der Bereiche Sie kopieren möchten. Z.B

$ tmux list-panes -a -F 'uniq=#D pane=#P title="#T" sess=#S windex=#I winnam=#W activ=# pwd=#' uniq=%0 pane=0 title="myhost 2" sess=0 windex=0 winnam=bash activ=0 pwd=/home/meuh uniq=%1 pane=1 title="myhost 3" sess=0 windex=0 winnam=bash activ=1 pwd=/home/meuh uniq=%2 pane=0 title="myhost 4" sess=1 windex=0 winnam=bash activ=0 pwd=/tmp uniq=%4 pane=1 title="myhost 5" sess=1 windex=0 winnam=bash activ=1 pwd=/usr/lib uniq=%3 pane=0 title="myhost 1" sess=2 windex=0 winnam=bash activ=1 pwd=/tmp 

Die Bedeutung jeder Variablen, z. B. #Dfür die eindeutige Bereichs-ID, wird in der Manpage unter FORMATS beschrieben. Sie können die größte dieser IDs als neuesten Bereich und den pwd=Wert als gewünschtes Verzeichnis auswählen . Leiten Sie zB den obigen tmux-Befehl in ein

 | awk '} END' 

Wenn Sie die window_activityVariable in späteren tmuxes verwenden, die die Zeit in Sekunden seit der letzten Aktivität im Fenster angibt, können Sie die oben genannten Werte vereinfachen, um nur diesen Wert und den aktuellen Pfad aufzulisten und den Pfad für den maximalen Aktivitätswert zu verwenden:

tmux list-panes -a -F '# #' | awk '} END' 
Vielen Dank! Ich schlage vor, Sitzung mit der größten "window_activity" als letzte Sitzung zu verwenden. Sind Sie einverstanden? Können wir es in die Antwort einbringen? xuhdev vor 7 Jahren 0
Mein tmux hat keine `window_activity'-Variable. Meinst du `window_activity_flag` oder` window_active`? Beide sind nur 0 oder 1, daher können viele Fenster den gleichen Wert haben. meuh vor 7 Jahren 0
Es ist mindestens in 2.3 verfügbar: "window_activity Integer-Zeit der letzten Aktivität des Fensters" xuhdev vor 7 Jahren 0
Das ist eine großartige Lösung. Ich habe den neueren tmux nicht, aber ich habe die Manpage durchgesehen und meine Antwort aktualisiert. Vielen Dank. meuh vor 7 Jahren 0