tmux
マシンのホスト名に基づいて動的に色を選択したいのですが。tmux.conf
複数のマシンで共有しているので、特に複数のマシンで同時に作業する場合、それらのホストのそれぞれに一意の色を割り当てると、視覚的に便利です。これは可能ですか?
tmux
マシンのホスト名に基づいて動的に色を選択したいのですが。tmux.conf
複数のマシンで共有しているので、特に複数のマシンで同時に作業する場合、それらのホストのそれぞれに一意の色を割り当てると、視覚的に便利です。これは可能ですか?
回答:
この機能も欲しかった。基本的にすべてをこの.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に使用していなかったため、を削除しました。したがって、追加のものを追加せずにcygwinを使用してLinuxシステムとWindowsの両方で動作するようにしました。
私は次のシェル関数を思いつきました:
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
}
この関数は次のように使用できます(の場合、結果はtrue $HOST
です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
には、設定しますstatus-fg
にcolour113
してstatus-bg
までcolour240
。127の数字$(hash_string256 $HOST 127)
が存在するため、背景は前景色と同じではなく、互いに遠く離れています。
システムがラインの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")
tmux.conf
私はそれを感謝します。
.tmux.conf
私が得ました"cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1
。それにもかかわらず、私のステータスバーは本当に赤くなりました!!!