Можно окрасить строку состояния из сценария обратной галочки путем печати \005{..r}
или подобный (r
для красного и т.д. точно так же, как в .screenrc
самостоятельно), таким образом, Вы могли или хешировать имя хоста, чтобы прибыть в число или просто иметь набор условных операторов для выбирания цвета. Как пример, вот сценарий, чтобы изменить цвет и распечатать имя хоста для использования в экране:
#!/bin/bash
Red="\005{..r}"
Yellow="\005{..y}"
Green="\005{..g}"
Blue="\005{..b}"
Magenta="\005{..m}"
Cyan="\005{..c}"
White="\005{..w}"
case "$HOSTNAME" in
lubuntu-eee)
echo -e "$Magenta$HOSTNAME"
;;
ubuntu-pc)
echo -e "$Magenta$HOSTNAME"
;;
*)
echo -e "$Green$HOSTNAME"
esac
Вы затем добавляете запись для этого сценария к .screenrc
и ссылка это в hardstatus или подписи как %4':
backtick 4 3600 3600 /usr/local/bin/screen_hostname
caption always "%{.kc}%D %d.%m.%Y %=%{.kg} %4` %{.kc}%0c"
Это предполагает, что имя хоста вряд ли изменится, следовательно тайм-аут и законность 1 часа (3 600 секунд); биты, окружающие вызов к самой обратной галочке просто, помещают дату в начале строки и время после имени хоста.
Можно даже использовать этот механизм для окраски вывода сценария в зависимости от значения уровня заряда батареи, системной нагрузки или температуры, предполагая, что у Вас есть доступ к соответствующим значениям из сценария оболочки.
Хорошо, я думаю, что у меня есть части, в которых Вы нуждаетесь, но я оставлю его до Вас для строкового представления их вместе в связное целое.
TMUX
переменная среды скажет Вам, если текущий процесс будет работать под tmux или нет:
<~> $ echo $TMUX
/private/var/folders/1s/ff98nkc90mv7pfglffklcv8w0000gn/T/tmux-501/default,27570,8
Последнее значение (8) является идентификатором Сессии (который может или не может также быть именем сессии). В примере выше, наш идентификатор сессии равняется 8, но у нас нет сессии названной '8':
<~> $ tmux ls
0: 1 windows (created Sat Nov 23 21:17:45 2013) [80x23]
1: 1 windows (created Sat Nov 23 21:17:45 2013) [120x34]
bar: 2 windows (created Tue Nov 26 03:05:03 2013) [120x34] (attached)
blech: 1 windows (created Tue Nov 26 03:12:46 2013) [120x34] (attached)
Но мы можем вытащить эту информацию из tmux использование-F строки формата:
<~> $ tmux ls -F "#{session_name}: (#{session_id})"
0: ($0)
1: ($1)
bar: ($5)
blech: ($8)
Вы могли затем использовать эту информацию, чтобы видеть, присоединяется ли она:
<~> $ tmux ls -F "#{session_id}: #{?session_attached,attached,not attached}"
$0: not attached
$1: not attached
$5: attached
$8: attached
Сообщите мне, нуждаетесь ли Вы в помощи, соединяя все это.
На основе совета jasonwryan в комментариях я закончил со следующими двумя командами.
Так как мы находимся в языке сценариев, мы должны не обязательно знать идентификатор сессии.
tmux display -p '#{session_name}'
session_attached является bool и представлен как единственная цифра, помогающая большинству языков сценариев проанализировать этот выходной формат.
# Show the session attached status for each session name. session_attached
# is a single digit, either 0 or 1, making it easy to distinguish
tmux ls -F '#{session_attached} #{session_name}'
В Perl (плагины IRSSI), анализируя этот выходной формат так же легко как
my ($attached, $name) = $line =~ /^(\d) (.+)$/;