Definir a cor da linha de status do tmux com base no nome do host
10
Eu gostaria tmuxde escolher uma cor dinamicamente com base no nome do host da máquina. Como eu compartilho minhas tmux.confvárias máquinas, atribuir uma cor exclusiva a cada um desses hosts seria útil visualmente, especialmente ao trabalhar em mais de uma das máquinas simultaneamente. Isso é factível?
Eu também queria esse recurso. Basicamente, mesclei tudo neste .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 o uso bcporque não o tinha no meu git-bash. Assim, eu queria que ele funcionasse nos meus sistemas linux e janelas com o cygwin sem adicionar coisas extras.
Com medo de que essa seja uma pergunta boba, mas como eu a uso exatamente? Eu copiei / colei, mas depois de recarregar o meu .tmux.confeu consegui "cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1. No entanto, minha barra de status ficou vermelha !!!
3
Eu vim com a seguinte função 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 $HOSThouver LOL):
Para o nome do host, LOLele definiria status-fgpara colour113e status-bgpara colour240. O número 127 in $(hash_string256 $HOST 127)está lá, portanto o plano de fundo não será o mesmo que a cor do primeiro plano e estará um distante do outro.
Se alguém souber uma maneira de usar a função dentro do tmux.confeu agradeceria.
Raphael Ahrens
1
Minha configuração do tmux inclui uma maneira de definir e executar funções arbitrárias do shell independentes no arquivo conf do tmux.
Caleb
@ Caleb interessante. Atualmente, não tenho tempo para editá-lo na resposta. Mas eu vou adicioná-lo.
Raphael Ahrens
1
Você pode querer transformá-lo em um final alternativo para a resposta, em vez de inseri-la como a resposta principal, porque é provável que confunda o diabo de alguém que não tem um escudo avançado. A solução é um hack envolvendo documentos aqui e obter um arquivo de configuração e um script executável do mesmo arquivo, portanto, implementar isso requer uma alteração em todo o arquivo de configuração, não apenas adicionando algumas linhas. Fazer as coisas direito não será para todos, portanto, ofereça a eles uma maneira de editar suas configurações regulares usando scripts externos antes de sugerir que possam ser combinadas.
.tmux.conf
eu consegui"cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1
. No entanto, minha barra de status ficou vermelha !!!Eu vim com a seguinte função shell:
Esta função pode ser usada assim (os resultados são verdadeiros, se
$HOST
houverLOL
):Para conectá-lo,
tmux
você pode usar um script que inicia e configuratmux
.Para o nome do host,
LOL
ele definiriastatus-fg
paracolour113
estatus-bg
paracolour240
. O número 127 in$(hash_string256 $HOST 127)
está lá, portanto o plano de fundo não será o mesmo que a cor do primeiro plano e estará um distante do outro.Para nenhum sistema GNU
Se o seu sistema tiver em
md5
vez damd5sum
linhapode ser substituído por
fonte
tmux.conf
eu agradeceria.