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)"