tmux: общий сеанс, один пользователь на панели, другой на другой панели, два разных курсора

17

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

Однако предоставление 777 разрешений для сокета или создание группы, создание chgrpсокета и добавление в него обоих пользователей, по-видимому, позволяет использовать один и тот же сокет для совместного использования сеанса только с одним курсором: оба пользователя могут писать, но всегда в та же позиция курсора.

Прямо сейчас оба пользователя находятся на одном домашнем сервере через ssh, и идея состоит в том, чтобы иметь возможность:

  • Терминал в, скажем, левой панели, где я могу набирать команды
  • Другой терминал в правой панели, где я вижу другого пользователя, печатающего команды в своем собственном терминале.
  • То же самое для другого пользователя

В данный момент я использую две сессии (не для общего доступа) и комбинацию a script -fи, tail -fкоторая вроде как работает для считывания нажатий клавиш друг друга, но я считаю, что, вероятно, есть некоторый способ сделать это, используя возможности совместного использования tmux.

Есть ли способ заставить эту идею работать с поддержкой записи в терминале друг друга?

Какой лучший способ сделать это?

ferhtgoldaraz
источник
Это должно помочь unix.stackexchange.com/questions/2523/...
милосердный
@clement Нет, это заставляет двух пользователей видеть одно и то же; то есть, есть только один курсор, и оба находятся на правой панели, или оба на левой панели. Но все равно спасибо
ferhtgoldaraz

Ответы:

20

Этот вопрос немного устарел, но я искал что-то подобное и нашел его здесь . Он создает второй сеанс, который разделяет окна с первым, но имеет свой собственный вид и курсор.

tmux new-session -s alice
tmux new-session -t alice -s bob

Если совместное использование происходит между двумя учетными записями пользователей, возможно, вам все равно придется возиться с разрешениями (что, похоже, уже работало).

Редактировать: Как предложено, цитата из другого ответа :

Сначала добавьте группу для пользователей tmux

export TMUX_GROUP=tmux
addgroup $TMUX_GROUP

Создайте каталог с группой, установленной в $ TMUX_GROUP, и используйте бит setgid, чтобы для файлов, созданных в каталоге, автоматически была установлена ​​группа в $ TMUX_GROUP.

mkdir /var/tmux
chgrp $TMUX_GROUP /var/tmux
chmod g+ws /var/tmux

Затем убедитесь, что пользователи, которые хотят поделиться сессией, являются членами $ TMUX_GROUP

usermod -aG $TMUX_GROUP user1
usermod -aG $TMUX_GROUP user2
KMAC
источник
Добро пожаловать в * nix.SE! Это довольно хороший первый ответ, хотя я бы порекомендовал вам рассмотреть возможность добавления некоторых из самых полезных битов из вторых двух ссылок в строке (чтобы избежать гниения ссылок). :)
HalosGhost
4
Это позволяет двум пользователям вводить данные в разные окна, но не в разные панели в одном и том же окне. (tmux 1,6)
awatts
2

Вы можете попробовать запустить две отдельные сессии tmux одновременно - одну для вас, а вторую для другого пользователя. Затем используйте систему управления окнами вашей операционной системы, чтобы расположить два терминала рядом, один для вас и один для него. Если вам нужно написать в своем терминале, просто выберите его для ввода.

Вы запускаете (каждая команда в своем собственном терминале):

tmux new-session -s Alice
tmux new-session -s Bob

И затем Боб запускает (снова, каждая команда в своем собственном терминале):

tmux attach -t Alice
tmux attach -t Bob

Если у вас нет системы управления окнами, которая поддерживает параллельное отображение, или вы ненавидите мышь, вы могли бы каждый (осторожно) настроить это в сеансе оболочки unhared screen / tmux.

fwip
источник
Спасибо, но я нуждался в этом в серверной среде, поэтому никаких окон (мы баловались с тем, как работают серверы)
ferhtgoldaraz
1
@ferhtgoldaraz: вы можете просто использовать разделенный сеанс tmux, чтобы содержать две подсессии!
Эш
@Yuki: Интересно, я посмотрю на это
ferhtgoldaraz
@ Ashe Что вы подразумеваете под разделенной сессией tmux и двумя подсессиями? Можете ли вы уточнить, пожалуйста?
Elquimista
@elquimista Привет более 4 лет назад! Я имел в виду запустить tmux, затем разбить окно на две панели (например, с помощью ctrl-b% или ctrl-b "), а затем запустить tmux (снова) на каждой панели, разделяя сессии, как предложено в ответе.
Ashe