我想tmux
根据机器的主机名动态选择一种颜色。由于我tmux.conf
在多台计算机上共享我的计算机,因此为每个主机分配唯一的颜色在视觉上非常方便,尤其是在同时运行多个主机时。这可行吗?
我想tmux
根据机器的主机名动态选择一种颜色。由于我tmux.conf
在多台计算机上共享我的计算机,因此为每个主机分配唯一的颜色在视觉上非常方便,尤其是在同时运行多个主机时。这可行吗?
Answers:
我也想要这个功能。我基本上将所有内容合并到此.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
我删除了using,bc
因为我的git-bash中没有它。因此,我希望它可以在cygwin上同时在我的linux系统和Windows上运行,而无需添加其他内容。
我想出了以下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
}
可以这样使用该函数(如果$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
,将设置status-fg
到colour113
和status-bg
到colour240
。$(hash_string256 $HOST 127)
此处的数字为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
。但是,我的状态栏确实变成了红色!!!