tmux
コンピュータのホスト名に基づいて色を動的に選択したいと思います。複数のコンピュータでホストを共有しているため、tmux.conf
特に複数のホストで同時に作業するときは、各ホストに独自の色を割り当てるのが視覚的に便利です。これは可能ですか?
答え1
私は次のようなシェル機能を思いついた。
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
}
$HOST
この関数は次のように使用できます(はいの場合、結果はtrueですLOL
)。
$hash_string256 $HOST
113
$hash_string256 $HOST 127
240
接続するには、起動スクリプトtmux
と設定スクリプトを使用できます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
ホスト名の場合とに設定されLOL
ます。数字127があるため、背景色は前景色と同じではなく、互いに離れています。status-fg
colour113
status-bg
colour240
$(hash_string256 $HOST 127)
GNU以外のシステムの場合
システムにmd5
交換md5sum
ラインがある場合
hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
に取り替えることができる
hash_value=$(printf "%s" "$1" | md5 | tr "a-f" "A-F")
答え2
私もこの機能が欲しいです。私は基本的にすべてをこれにマージしました。.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
bc
私のgit-bashにないので、usingを削除しました。したがって、追加のエントリを追加しなくても、CygwinがインストールされているLinuxシステムとWindowsで動作したいと思います。
答え3
.tmux.conf:
run "tmux set -g status-bg $(hostname -s | hexdump -e '\"0x%02x\"' | cut -c-4 | xargs printf 'colour%d')"
答え4
私はこれを使用します。おそらく、hexdump型の文字列のために切り捨てられた部分はもはや使用されないかもしれませんが、どうなるかわかりません。
.tmux.conf:
run "tmux set -g status-bg $(hostname -s | hexdump -e '\"#%06x\"' | cut -c-7)"