Setel warna garis status tmux berdasarkan nama host
10
Saya ingin tmuxmemilih warna secara dinamis berdasarkan nama host mesin. Karena saya berbagi tmux.confdi beberapa mesin, menetapkan warna yang unik untuk masing-masing host tersebut akan sangat berguna secara visual, terutama ketika mengerjakan lebih dari satu mesin secara bersamaan. Apakah ini bisa dilakukan?
Saya ingin fitur ini juga. Saya pada dasarnya menggabungkan semuanya menjadi .tmux.conf ini
# 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
Saya menghapus menggunakan bckarena saya tidak memilikinya di git-bash saya. Jadi saya ingin itu bekerja pada sistem linux saya dan windows dengan cygwin tanpa menambahkan hal-hal tambahan.
Takut ini mungkin pertanyaan konyol, tapi bagaimana cara tepatnya menggunakannya? Saya menyalin / disisipkan tapi setelah reload saya .tmux.confaku "cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1. Meskipun demikian, status bar saya memang berubah merah !!!
3
Saya datang dengan fungsi shell berikut:
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
}
Fungsi ini dapat digunakan seperti ini (Hasilnya benar jika $HOSTada LOL):
Untuk hostname, LOLitu akan mengatur status-fgto colour113dan status-bgto colour240. Angka 127 in $(hash_string256 $HOST 127)ada di sana sehingga latar belakang tidak akan sama dengan warna latar depan dan terpisah satu sama lain.
Tanpa sistem GNU
Jika sistem Anda memiliki md5alih-alih md5sumjalur
Jika seseorang mengetahui cara untuk menggunakan fungsi di dalam tmux.confsaya akan sangat menghargainya.
Raphael Ahrens
1
Konfigurasi tmux saya mencakup cara untuk mendefinisikan dan menjalankan fungsi shell sewenang-wenang yang terdapat di dalam file tmux conf.
Caleb
@ Caleb menarik. Saat ini saya tidak punya waktu untuk mengeditnya untuk jawabannya. Tapi saya akan menambahkannya.
Raphael Ahrens
1
Anda mungkin ingin menjadikannya sebagai akhiran alternatif untuk jawaban daripada memasukkannya sebagai jawaban utama karena cenderung membingungkan siapa pun yang tidak memiliki beberapa shell foo canggih di bawah ikat pinggang mereka. Solusinya adalah peretasan yang melibatkan dokumen di sini dan untuk mendapatkan file konfigurasi dan skrip yang dapat dieksekusi dari file yang sama, jadi mengimplementasikan ini memerlukan perubahan pada seluruh file konfigurasi, bukan hanya menambahkan beberapa baris. Melakukannya dengan benar tidak akan untuk semua orang, jadi beri mereka cara untuk mengedit konfigurasi reguler mereka menggunakan skrip eksternal sebelum menyarankan itu dapat dihancurkan bersama-sama.
.tmux.conf
aku"cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1
. Meskipun demikian, status bar saya memang berubah merah !!!Saya datang dengan fungsi shell berikut:
Fungsi ini dapat digunakan seperti ini (Hasilnya benar jika
$HOST
adaLOL
):Untuk menghubungkannya dengan
tmux
Anda dapat menggunakan skrip yang dimulai dan mengkonfigurasitmux
.Untuk hostname,
LOL
itu akan mengaturstatus-fg
tocolour113
danstatus-bg
tocolour240
. Angka 127 in$(hash_string256 $HOST 127)
ada di sana sehingga latar belakang tidak akan sama dengan warna latar depan dan terpisah satu sama lain.Tanpa sistem GNU
Jika sistem Anda memiliki
md5
alih-alihmd5sum
jalurdapat diganti dengan
sumber
tmux.conf
saya akan sangat menghargainya.