Набор tmux строка состояния окрашивает на основе имени хоста

На самом деле причина этого состоит в том, что udev конкретно устанавливает полномочия на 0620 на tty устройствах, и su не изменяет или владение или полномочия, ни если он. По моему мнению, это оставляет нас в ситуации, которая делает/dev/std* непортативным.

Простое решение состоит в том, чтобы поместить "mesg y" в/etc/profile (или безотносительно высокоуровневого профиля, который Вам нравится использовать), поскольку это изменяет полномочия Вашего tty устройства к 0622. Мне действительно не нравится это, но это, вероятно, лучше, чем изменение правил udev.

9
01.04.2014, 14:11
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. Таким образом, я хотел, чтобы он работал как в моих Linux-системах, так и в Windows с cygwin, не добавляя лишних вещей.

2
27.01.2020, 20:07

Я придумал следующую функцию оболочки:

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 равно 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) присутствует, поэтому фон будет не таким же, как цвет переднего плана, и далеко друг от друга.

Ни для каких систем 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")
3
27.01.2020, 20:07

Теги

Похожие вопросы