Defina a cor da linha de status do tmux com base no nome do host

9

Gostaria que tmux escolhesse uma cor dinamicamente com base no nome do host da máquina. Como compartilho meu tmux.conf em várias máquinas, atribuir uma cor exclusiva a cada um desses hosts seria útil visualmente, especialmente ao trabalhar em mais de um dos dois simultaneamente. Isso é factível?

    
por Sridhar Ratnakumar 01.04.2014 / 07:09

2 respostas

2

Eu também queria esse recurso. Eu basicamente mesclei tudo nesse arquivo .tmux.conf

# cat <<__DATA__ >/dev/null
# Embed shell scripts

set -g status-utf8 on
set -g utf8 on

set -g default-terminal "screen-256color"

run "cut -c3- ~/.tmux.conf | bash -s apply_configuration"

# __DATA__
#
# apply_configuration() {
#    tmux set -g status-bg colour$(hash_string256 $(hostname))
# }
# hash_string256() {
#      hash_value=$(printf "%s" "$1" | md5sum | sed -e 's/[^[:alnum:]]\+//g' | tr "a-f" "A-F")
#      if [ "x" != "x$2" ]
#      then
#          v2="+ $2"
#      fi
#      echo "$(((0x$hash_value $v2) % 255))" | tr -d "-"
# }
# 
# $1

Eu removi usando bc porque eu não o tinha no meu git-bash. Assim, eu queria que ele funcionasse nos meus sistemas Linux e Windows com o cygwin sem adicionar coisas extras.

    
por 16.04.2016 / 20:16
3

Eu criei a seguinte função de shell:

hash_string256() {
    # Hash $1 into a number
    hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
    # Add the hash with $2 and modulo 256 the result
    # if $2 == "" it is 0
    printf "ibase=16; (%s + %X) %% 100\n" $hash_value "$2" | bc
}

Esta função pode ser usada assim (Os resultados são verdadeiros se $HOST for LOL ):

$hash_string256 $HOST
 113
$hash_string256 $HOST 127
 240

Para conectá-lo com tmux , você pode usar um script que inicia e configura tmux .

#!/bin/sh
SESSION=$USER

hash_string256() {
    hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
    printf "ibase=16; (%s + %X) %% 100 \n" $hash_value "$2" | bc
}

tmux -2 new-session -d -s $SESSION

tmux set -g status-fg colour$(hash_string256 $HOST)
tmux set -g status-bg colour$(hash_string256 $HOST 127)

# Attach to session
tmux -2 attach-session -t $SESSION

Para o nome do host LOL , ele definiria o status-fg para colour113 e status-bg to colour240 . O número 127 em $(hash_string256 $HOST 127) está lá, então o plano de fundo não será o mesmo que a cor de primeiro plano e muito distante um do outro.

Para nenhum sistema GNU

Se o seu sistema tiver md5 em vez de md5sum a linha

hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")

pode ser substituído por

hash_value=$(printf "%s" "$1" | md5 | tr "a-f" "A-F")
    
por 01.04.2014 / 13:01

Tags