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?

1voto

Phil Hollenback Punkte 204

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.

1voto

sensorario Punkte 17861

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

0voto

Victor Deryagin Punkte 11375

Sie sollten es in Ihrer tmux-Konfigurationsdatei angeben ( ~/.tmux.conf ), zum Beispiel:

new mocp
neww mutt

new -d
neww
neww

(öffnet eine Sitzung mit 2 Fenstern, wobei mocp im ersten und mutt im zweiten Fenster gestartet wird, und eine weitere, getrennte Sitzung mit 3 leeren Fenstern).

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