Wie funktioniert die tmux-Farbpalette?

140

Ich versuche, etwas auf Grau zu setzen, kann aber nicht herausfinden, wie. Die einzige Information in der Manpage über Farben, die ich finden kann, ist:

message-bg colour
  Set status line message background colour, where colour is one of:
  black, red, green, yellow, blue, magenta, cyan, white, colour0 to
  colour255 from the 256-colour palette, or default.

Ich habe auch einen Blog-Post gefunden, der durch Farben iteriert, aber ich kann es nicht recht fassen und möchte nicht den ganzen Tag am Terminal sitzen und Farbnummern erraten, bis einer funktioniert.

Lawrence
quelle

Antworten:

223

Sie können eine Liste mit diesem bashSnippet erhalten:

for i in {0..255}; do
    printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n"
done

Dann verwenden Sie colourxxxmit tmux.

cYrus
quelle
18
Verwenden Sie $ reset, um die sofortige Farbwiederherstellung zu
starten
vielleicht brauchst du dreistellige farben? Dieses Skript gibt wie color12folgt aus, aber dies wird von tmux nicht als gültige Farbe akzeptiert.
Artfulrobot
6
Mein tmux(1.6) akzeptiert auch Farben wie colour12(beachte das "u").
CYRUS
1
Diese Antwort ist immer noch hilfreich! Hat mir geholfen, die gewünschten Farben auszuwählen.
Asfallows
6
Oh mein Gott! Ein Regenbogen auf meinem Terminal. Pünktlich zur Feier der Gleichstellung der Ehe in den USA!
Garbelini
75

Ich fand dieses Bild aufschlussreich.

Bildbeschreibung hier eingeben

Eddie Parker
quelle
16
Sie können es mitfor i in {0..255}; do printf "\x1b[38;5;${i}mcolor%-5i\x1b[0m" $i ; if ! (( ($i + 1 ) % 8 )); then echo ; fi ; done
12431234123412341234123
22

In Subversion (was tmux 1.5 sein wird) können Sie auch hexadezimale #abcdef-Farben verwenden, die dem nächsten 256-Farben-Paletten-Eintrag zugeordnet sind. Sie benötigen Anführungszeichen, da dies als Zeichenfolge behandelt wird, während reguläre Farbnamen als benannte Konstanten behandelt werden. Beachten Sie auch, dass die Kurzschreibweise mit 3 Buchstaben (# f00) ungültig ist.

Beispiel:

set pane-active-border-bg red # no quotes for name
set pane-active-border-bg "#ff0000" # quotes for rgb
Bob
quelle
1
Können Sie? Ich kann nicht sehen, wie man ...
Eric
5
set-option message-bg "#abcdef"; Die Anführungszeichen sind notwendig.
chepner
Sie müssen anscheinend auch die vollen 6 hexadezimalen Zeichen verwenden, keine 3 char-Abkürzungen, dh es #fffwird nicht funktionieren, Sie müssen#ffffff
bschlueter
11

tmux bis 1.9 unterstützt nur die internationale Schreibweise für die 256-Farben-Palette, z

"colour121"

im Gegensatz zu der amerikanischen Schreibweise, die die u

"color121"

Anscheinend wird dies in Kürze geändert: http://sourceforge.net/mailarchive/message.php?msg_id=31049758

Joe Fortier
quelle
6

Aufbauend auf der Antwort von @cYrus habe ich ein Skript geschrieben, um die Ausgabe der Farben in N Spalten zu unterteilen, wobei N das erste Argument ist

# colors.sh

#!/bin/bash
if [ -z $1 ]; then
    BREAK=1
else
    BREAK=$1
fi
for i in {0..255} ; do
    printf "\x1b[38;5;${i}mcolour${i} \t"
    if [ $(( i % $BREAK )) -eq $(($BREAK-1)) ] ; then
        printf "\n"
    fi
done

Versuchen Sie es, indem Sie es in einer Datei namens colors.sh speichern ./colors.sh 4

Vergiss das nicht chmod +x colors.sh.

Andy Terra
quelle
3
Das Skript show-256-colors.sh kann nützlich sein, um auch Hintergrundfarben anzuzeigen .
Maxim Suslov
Sie sollten standardmäßig mindestens 4 Spalten angeben, um es vom Ursprungsskript zu unterscheiden.
Dbkeys