호스트 이름을 기준으로 tmux 상태 줄 색상 설정

호스트 이름을 기준으로 tmux 상태 줄 색상 설정

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-fgcolour113status-bgcolour240$(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)"

관련 정보