Establecer el color de la línea de estado de tmux en function del nombre de host

Me gustaría que tmux elija un color de forma dinámica en function del nombre de host de la máquina. Como comparto mi tmux.conf en varias máquinas, la asignación de un color único para cada uno de esos hosts sería útil visualmente, especialmente cuando se trabaja en más de uno simultáneamente. ¿Es esto factible?

Solutions Collecting From Web of "Establecer el color de la línea de estado de tmux en function del nombre de host"

Yo quería esta característica también. Básicamente fusioné todo en este .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 "af" "AF") # if [ "x" != "x$2" ] # then # v2="+ $2" # fi # echo "$(((0x$hash_value $v2) % 255))" | tr -d "-" # } # # $1 

Eliminé el uso de bc porque no lo tenía en mi git-bash. Por lo tanto, quería que funcionara tanto en mi sistema Linux como en Windows con cygwin sin agregar elementos adicionales.

Se me ocurrió la siguiente function de shell:

 hash_string256() { # Hash $1 into a number hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "af" "AF") # 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 function se puede usar así (Los resultados son verdaderos si $HOST es LOL ):

 $hash_string256 $HOST 113 $hash_string256 $HOST 127 240 

Para conectarlo con tmux , puede usar un script que inicie y configure tmux .

 #!/bin/sh SESSION=$USER hash_string256() { hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "af" "AF") 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 el nombre de host LOL , establecería el status-fg en colour113 y status-bg en colour240 . El número 127 en $(hash_string256 $HOST 127) está allí, por lo que el background no será el mismo que el color de primer plano y muy diferente el uno del otro.

Para ninguno de los sistemas GNU

Si su sistema tiene md5 lugar de md5sum la línea

 hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "af" "AF") 

puede ser reemplazado por

 hash_value=$(printf "%s" "$1" | md5 | tr "af" "AF")