Есть ли способ для tux, чтобы строка состояния отображала различное содержимое в разных клиентах, когда они все подключены? - PullRequest
0 голосов
/ 25 марта 2019

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

#!/usr/bin/env bash

session=`tmux ls | cut -d " " -f 1 | tr -d ":" | tr "\\n" " "`
# attached_count=`tmux ls | grep -n \(attached\) | cut -d ":" -f 1`
active_session=`tmux display-message -p '#S'`

# session_start="#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack]"
session_start="#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack]"
# session_end="#[fg=black,bg=brightblack,nobold,noitalics,nounderscore]#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]"
session_end="#[fg=black,bg=brightblack,nobold,noitalics,nounderscore]"

session_active_start="#[fg=cyan,bg=black,nobold,noitalics,nounderscore]#[fg=black,bg=cyan]"
session_active_end="#[fg=black,bg=cyan,nobold,noitalics,nounderscore]"

session_str=""
count=1
for i in $session
do
    # if [[ $count -eq $attached_count ]]; then
    if [[ $i == $active_session ]]; then
        session_str="${session_str}${session_active_start}${i}${session_active_end}"
    else
        session_str="${session_str}${session_start}${i}${session_end}"
    fi

    count=$((count+1))
    # break
    # echo "${i}"
done

session_str=`echo ${session_str} | tr -d "\n"`
printf "${session_str}"
```bash


It will output a long string content all my session name and make the attached one in other colors

"#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack]besiii#[fg=black,bg=brightblack,nobold,noitalics,nounderscore]#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack]conf#[fg=black,bg=brightblack,nobold,noitalics,nounderscore]#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack]default#[fg=black,bg=brightblack,nobold,noitalics,nounderscore]#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack]lang#[fg=black,bg=brightblack,nobold,noitalics,nounderscore]#[fg=cyan,bg=black,nobold,noitalics,nounderscore]#[fg=black,bg=cyan]vert#[fg=black,bg=cyan,nobold,noitalics,nounderscore]"

However, all my iterm windows which attach tmux's client will show the same status bar.
Is there a way to make tmux show different contents in different attached clients??

1 Ответ

0 голосов
/ 25 марта 2019

TL; DR: №

Сеансы Tmux предназначены для показа точно одного и того же для всех подключенных пользователей. Если пользователь подключается к маленькому терминалу, всеобщее представление будет сводиться к отображению только маленького размера терминала . Обойти это невозможно (если вы не просматриваете разные окна в одном и том же сеансе), и нет способа показать разный контент разным пользователям при просмотре одного и того же окна.

...