2

Итак, вот что я хочу:

  • При каждом входе в tty запускается fbterm . Он дает мне лучшее разрешение, чем консоль linux, имеет работающую поддержку UTF-8 (я уверен, что это полностью моя вина, что консоль linux не имеет этих двух, но я не могу заставить ее работать), и дает мне доступ к большему количеству окон (10 на fbterm).
  • В каждом окне fbterm tmux . Сеансы между экземплярами fbterm полностью независимы, но в каждом окне fbterm tmux совместно используют один и тот же набор окон (но показывают разные окна).

После некоторой борьбы мне удалось этого добиться - я собираюсь ответить на этот вопрос сам. Вы сделали что-то подобное, или как бы вы решили это?

3 ответа3

2

Вот то, что у меня сейчас, я проверил, и это работает:

#!/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;

Поместите это в какой-нибудь файл, сделайте его исполняемым, затем запустите его из вашего .profile (или .bash_profile). Первоначально предполагалось напрямую использовать этот сценарий в качестве оболочки для входа, но в настоящее время он нестабилен (работает для моей учетной записи, не работает для вновь созданной фиктивной тестовой учетной записи).

0

Не уверен, что это ответ, который вы ищете, но я изо всех сил пытался заставить fbterm и tmux автоматически запускаться, не мешая друг другу. Это в .profile сделал трюк для меня:

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

Я использую следующее в моем .bashrc , который, я считаю, обеспечивает почти такую же функциональность:

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

Это откроет fbterm (если возможно), а затем tmux в любой новой интерактивной оболочке. Он присоединится к сеансу tmux с указанным именем, если оно существует, или создаст его, если нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .