Ana bilgisayar adına dayalı olarak tmux durum satırı rengini ayarlama


10

tmuxMakinenin ana bilgisayar adına göre dinamik olarak bir renk seçmek istiyorum . tmux.confBirkaç makinede paylaştığım için, bu ana makinelerin her biri için benzersiz bir renk atamak, özellikle de aynı anda birden fazla çalışırken çalışırken görsel olarak kullanışlı olacaktır. Bu yapılabilir mi?

Yanıtlar:


3

Ben de bu özelliği istedim. Temelde her şeyi bu .tmux.conf ile birleştirdim

# 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

Kullanarak kaldırdım bcçünkü git-bash'ımda yoktu. Bu yüzden hem linux sistemlerimde hem de cygwin'li pencerelerde fazladan bir şey eklemeden çalışmasını istedim.


Korkarım bu aptalca bir soru olabilir, ama tam olarak nasıl kullanırım? Kopyaladım / yapıştırdım ama yeniden yükledikten sonra .tmux.confaldım "cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1. Yine de, durum çubuğum gerçekten kırmızıya döndü !!!

3

Aşağıdaki kabuk fonksiyonu ile geldim:

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
}

Bu fonksiyon (eğer sonuç doğruysa bu gibi kullanılabilir $HOSTolduğu LOL):

$hash_string256 $HOST
 113
$hash_string256 $HOST 127
 240

Bunu bağlamak için tmux, başlatılan ve yapılandırılan bir komut dosyası kullanabilirsiniz 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

Hostname için LOLo kuracak status-fgkadar colour113ve status-bghiç colour240. 127 sayısı $(hash_string256 $HOST 127)oradadır, böylece arka plan ön plan rengiyle aynı değildir ve birbirinden çok uzaktır.

Hiçbiri GNU sistemi için

Sisteminizde satır md5yerinemd5sum

hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")

ile değiştirilebilir

hash_value=$(printf "%s" "$1" | md5 | tr "a-f" "A-F")

Birisi içindeki fonksiyonu kullanmanın bir yolunu bilirse, tmux.confbunu takdir ediyorum.
Raphael Ahrens

1
Benim tmux yapılandırma , tmux conf dosyasında bulunan rasgele kabuk işlevlerini tanımlamak ve çalıştırmak için bir yol içerir.
Caleb

@Caleb ilginç. Şu anda cevabı düzenlemek için zamanım yok. Ama ekleyeceğim.
Raphael Ahrens

1
Ana cevap olarak girmek yerine cevabı alternatif bir son yapmak isteyebilirsiniz, çünkü kemerinin altında gelişmiş bir kabuk foo'su olmayan herkesin kafasını karıştırması muhtemeldir. Çözüm burada-dokümanlar içeren bir hack'tir ve aynı dosyadan hem bir yapılandırma dosyası hem de yürütülebilir bir komut dosyası almaktır, bu yüzden bunu uygulamak sadece birkaç satır eklemekle kalmayıp tüm yapılandırma dosyasında bir değişiklik yapılmasını gerektirir . Doğru yapmak herkes için uygun değildir, bu yüzden onlara birlikte ezilebilmesini önermeden önce harici komut dosyalarını kullanarak normal yapılandırmalarını düzenlemeleri için bir yol verin.
Caleb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.