LINUX.ORG.RU

Как задавать в скриптах имя вкладки screen?

 , , ,


2

4

В screen (и tmux) название каждой вкладки '0 bash', '1 bash' ... и тд.

Что прописывать (echo ...?) в скрипте, чтоб там было не 'bash', а то что я хочу?

Перемещено hobbit из general

★★★★★

Последнее исправление: teod0r (всего исправлений: 2)
Ответ на: комментарий от YAR

благодарю. но мне надо иметь возможность менять этот title на ходу, во время работающей программы, из скрипта. например 'z 2/25', 'pk u 58/367'.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

rain@walkbook:~$ screen -ls
There is a screen on:
2854.walkbook_mainscreen (23.06.2026 15:35:38) (Attached)
1 Socket in /run/screen/S-rain.
rain@walkbook:~$ screen -p 1 -x 2854.walkbook_mainscreen -X title «234»
rain@walkbook:~$

YAR ★★★★★
()
Ответ на: комментарий от YAR

мы наверно не поняли друг друга. мне не жужно запускать screen из скрипта или ещё как-то. есть уже запущенный screen, мне нужно прописать в скрипте команду, которая поменяет название вкладки screen'а, в которой запущен этот скрипт.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

Не тупи. Надо знать название сессии screen. Потом команду -X title можно вызвать что изнутри скрина, что снаружи, это не имеет значения. Если сидеть внутри то текущую сессию видно по переменной окружения $STY .

anonymous
()

В tmux имя вкладки задаётся через window-status-format (для активной) и window-status-current-format (для не-активных). Если ты хочешь чтобы там выводилось что-то касательно запущеной программы, то нужно там прописать скрипт, который будет делать то, что тебе нужно по PID запущеного процесса в этой складке; PID можно передать в в параметрах скрипта через #{pane_pid}. Готовься: скрипт будет непростой, так как в общем случае процессы формируют дерево, то есть запущеный процесс может породить еще подпроцессы.

Вот тебе для теста (для неактивной вкладки):

set-window-option -g window-status-format '#( echo "My Title" )'

Вот кусок моего конфига:

set-window-option -g window-status-format        '#{?#{==:#{window_panes},1},,+}#{window_index}:#( /bin/bash -c "/usr/bin/getwindowtitle.sh #{pane_pid}" )'

set-window-option -g window-status-current-format '#{?#{==:#{window_panes},1},,+}#{window_index}:#( /bin/bash -c "/usr/bin/getwindowtitle.sh #{pane_pid}" )*'
Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от teod0r

Собственно, выше уже все расписали, в итоге если резюмировать максимально короткий вариант, то выходит

screen -S $STY -X title "New title"


$ cat settitle.sh 
#!/bin/bash
while sleep 1;
do
[ ! -z $STY ] && screen -S $STY -X title "$(date +%X)"
done

YAR ★★★★★
()
Последнее исправление: YAR (всего исправлений: 2)
Ответ на: комментарий от router

PROMPT_COMMAND

врядли. ЕМНИП несколько лет назад mky писал мне уже ответ, что мой вопрос решается с помощью echo ... что-то там. не нашёл по поиску.

teod0r ★★★★★
() автор топика
Ответ на: комментарий от teod0r

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

No-no-no. Screen is not bad, but lag behind the tmux. Your problem solved in tmux this way, inside your script run: tmux renamew ‘New-Name-For-Tab’

… D0ne ;-)

_

anonymous
()
Ответ на: комментарий от teod0r

Запусти tty в области где нужно заменить заголовок, получи путь до pty, и пришли туда \e]0;${то_что_ты_хочешь}\a, и вуаля − заголовок поменяется на новый (он может быть перезаписан чем-либо ещё)

tnray
()
Ответ на: комментарий от tnray

Впрочем название вкладки ≠ заголовок области, чтобы в tmux видеть заголовок, нужно вписать set -g pane-border-status top в ~/.tmux.conf

tnray
()
Последнее исправление: tnray (всего исправлений: 1)
Ответ на: комментарий от tnray

и вуаля

не работает.
printf '\e]0;%s\a' «pk u 58/367» просто в консоли без перенаправления вообще не выводит ничего.

teod0r ★★★★★
() автор топика
Последнее исправление: teod0r (всего исправлений: 2)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария