Установить цвет строки состояния tmux на основе имени хоста
10
Я хотел бы 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. Поэтому я хотел, чтобы он работал как на моих системах Linux, так и на Windows с Cygwin, не добавляя лишних вещей.
Боюсь, это глупый вопрос, но как мне его использовать? Я скопировал / вставил его, но после перезагрузки .tmux.confя получил "cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1. Тем не менее, моя строка состояния действительно покраснела !!!
3
Я придумал следующую функцию оболочки:
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):
Для имени хоста LOLбыло бы установлено status-fgto colour113и status-bgto colour240. Там есть число 127, $(hash_string256 $HOST 127)поэтому фон будет отличаться от цвета переднего плана и находиться далеко друг от друга.
Если кто-то знает способ использования функции внутри, tmux.confя был бы признателен.
Рафаэль Аренс
1
Мой конфиг tmux включает в себя способ определения и запуска произвольных функций оболочки, содержащихся в файле conf tmux.
Калеб
@ Калеб интересно. В настоящее время у меня нет времени, чтобы изменить его в ответ. Но я добавлю это.
Рафаэль Аренс
1
Возможно, вы захотите сделать его альтернативным окончанием для ответа вместо того, чтобы вводить его в качестве основного ответа, потому что это может сбить с толку любого, кто не имеет какой-то продвинутой оболочки foo под своим поясом. Решением является хакерство с использованием here-docs и извлечение файла конфигурации и исполняемого скрипта из одного и того же файла, поэтому для его реализации необходимо изменить весь файл конфигурации, а не просто добавить пару строк. Правильно понять это будет не для всех, поэтому дайте им возможность отредактировать свою обычную конфигурацию, используя внешние скрипты, прежде чем предлагать ее объединить.
.tmux.conf
я получил"cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1
. Тем не менее, моя строка состояния действительно покраснела !!!Я придумал следующую функцию оболочки:
Эту функцию можно использовать следующим образом (результаты верны, если
$HOST
естьLOL
):Для его подключения
tmux
вы можете использовать скрипт, который запускается и настраиваетсяtmux
.Для имени хоста
LOL
было бы установленоstatus-fg
tocolour113
иstatus-bg
tocolour240
. Там есть число 127,$(hash_string256 $HOST 127)
поэтому фон будет отличаться от цвета переднего плана и находиться далеко друг от друга.Для систем без GNU
Если ваша система имеет
md5
вместоmd5sum
линииможно заменить на
источник
tmux.conf
я был бы признателен.