Linux: Starten Sie tmux in fbterm beim Anmelden

1788
Lucas Werkmeister

Also hier ist was ich will:

  • Bei jedem Login fbtermbeginnt es. Es gibt mir eine bessere Auflösung als die Linux-Konsole, hat UTF-8-Unterstützung (ich bin sicher, es ist völlig meine Schuld, dass die Linux-Konsole diese beiden nicht hat, aber ich kann es nicht zum Laufen bringen) und gibt es mir Zugang zu mehr Fenstern (10 pro fbterm).
  • In jedem fbtermFenster tmuxläuft. Die Sitzungen zwischen den fbtermInstanzen sind völlig unabhängig, aber in jedem fbtermFenster haben die tmuxEs dieselbe Gruppe von Fenstern (zeigen jedoch verschiedene Fenster).

Nach einigen Schwierigkeiten habe ich es geschafft - ich habe vor, diese Frage selbst zu beantworten. Haben Sie etwas Ähnliches gemacht oder wie würden Sie das lösen?

2

3 Antworten auf die Frage

2
Lucas Werkmeister

Das hier habe ich jetzt, ich habe es getestet und es funktioniert:

#!/bin/sh if [[ -n "$TMUX" ]]; then echo "CRITICAL - ALREADY INSIDE TMUX!" echo "Dropping you into /bin/sh..." /bin/sh -i echo "Exiting with /bin/sh exit code..." exit $? fi SESSION="$(whoami)-$(basename $(tty))"; # Start tmux server if it isn't already running echo "Starting tmux server..." /usr/bin/tmux start-server echo "tmux server started." # Create the session if it doesn't exist echo "Checking for tty session..." if /usr/bin/tmux has-session -t "$SESSION" 2> /dev/null; then echo "tty session already present, will spawn new window later." else echo "Creating tty session..." /usr/bin/tmux new-session -d -s "$SESSION" -n "$SESSION-dummywindow" /bin/bash echo "tty session created." fi # Create a new session that shares the windows of the existing (or new) session echo "Starting fbterm and tmux..." ( sleep 1; /usr/bin/tmux kill-window -t "$SESSION-dummywindow" ) & /usr/bin/fbterm -- /usr/bin/tmux new-session -t "$SESSION" \; new-window /bin/bash; 

Legen Sie diese Datei in eine Datei, machen Sie sie ausführbar und führen Sie sie dann von .profile(oder .bash_profile) aus. Die ursprüngliche Absicht war, dieses Skript direkt als Anmeldeshell zu verwenden. Dies ist jedoch derzeit nicht stabil (funktioniert für mein Konto, funktioniert nicht für ein neu erstelltes Dummy-Testkonto).

Wenn dies die richtige Lösung ist, markieren Sie sie bitte als solche. Daniel B vor 10 Jahren 0
0
MajorBriggs

Ich bin mir nicht sicher, ob es die Antwort ist, nach der Sie suchen, aber ich habe mich selbst darum gekämpft, dass Fbterm und TMux automatisch gestartet werden, ohne sich gegenseitig in die Quere zu kommen. Dieses in .profile hat für mich den Trick gebracht:

if [[ ! $TERM =~ screen ]]; then SHELL=tmux fbterm fi 
0
Ryan Lue

Ich verwende Folgendes in meinem .bashrc, von dem ich glaube, dass es fast dieselbe Funktionalität bietet:

if [ -z "$SSH_CONNECTION" ]; then # if in virtual terminal, start fbterm if [[ "$(tty)" =~ /dev/tty ]] && type fbterm > /dev/null 2>&1; then fbterm # otherwise, start/attach to tmux elif [ -z "$TMUX" ] && type tmux >/dev/null 2>&1; then tmux new -As "$(basename $(tty))" fi fi 

Dadurch wird fbterm (wenn möglich) und dann tmux in einer neuen interaktiven Shell geöffnet. Es wird eine Verbindung zu einer tmux-Sitzung mit dem angegebenen Namen herstellen, falls vorhanden, oder eine erstellen, falls nicht.