So starten Sie tmux als Standard, wenn Terminals geöffnet werden, und schließen das Terminal in Dolphin aus

So starten Sie tmux als Standard, wenn Terminals geöffnet werden, und schließen das Terminal in Dolphin aus

Ich möchte tmux als Standard beim Öffnen von Terminals (z. B. Yakuake, Konsole) festlegen, das Terminal jedoch im Dateimanager von Dolphin ausschließen.

Ich habe den folgenden Ausschnitt in die~/.zshrc

if [[ -x "$(command -v tmux)" ]] && [[ -n "${DISPLAY}" ]] && [[ -z "${TMUX}" ]]; then
    windowname=$(xdotool getactivewindow getwindowname)
    if [[ ${windowname} =~ ".*Yakuake$" ]] || [[ "${windowname}" =~ ".*Konsole$" ]]; then
        exec tmux
    fi
fi

Aber der Befehl xdotool getactivewindowscheint immer das falsche aktive Fenster zu erhalten. Also habe ich diesen Codeausschnitt zum Testen eingefügt ~/.zshrc.

xdotool getactivewindow && xdotool getactivewindow getwindowname
sleep 3
xdotool getactivewindow && xdotool getactivewindow getwindowname

Aber ich erhalte das folgende Ergebnis, wenn Yakuake über die Tastenkombinationen ctrl+ alt+ geöffnet wird Y. Es scheint, dass xdotoolder falsche Name des aktiven Fensters verwendet wurde, nämlich das letzte aktivierte Fenster (im Beispiel sublimetext), und es sollte Yakuake sein.

94371843
~/.zshrc - Sublime Text
65011722
~ : sleep — Yakuake

Wenn Yakuake oder Konsole über KDE Plasma oder die Befehlszeile aktiviert werden, tritt das gleiche Phänomen auf.

Wie kann ich tmux als Standard starten, wenn Terminals geöffnet werden, und dabei das Terminal in Dolphin ausschließen?


Aktualisieren: Dank anKamil Maciorowskis Antwort, alles funktioniert perfekt, nachdem ich diesen Snippet in mein hinzugefügt habe ~/.zshrc.

if [[ -x "$(command -v tmux)" ]] && [[ -n "${DISPLAY}" ]] && [[ -z "${TMUX}" ]]; then
    if [[ ! "$(readlink -f /proc/${PPID}/exe)" =~ "dolphin" ]]; then
        exec tmux
    fi
fi

Antwort1

Ich denke, eine Shell in einem Terminal in Dolphin wird es /proc/$PPID/exeals symbolischen Link zu oder so sehen. Verwenden Sie /usr/bin/dolphinstatt und bauen Sie Ihre Logik auf dem Ergebnis auf.xdotoolrealpath /proc/$PPID/exe

$PPIDist die Prozess-ID des übergeordneten Elements der Shell, die bei der Initialisierung der Shell festgelegt wird.

verwandte Informationen