Gibt es eine Möglichkeit, alle verfügbaren Farben in der Konsole / im virtuellen Terminal zu ändern?
Mit Konsole meine ich das, was Sie nach dem Drücken von STRG + ALT + F1 erhalten, und nichts wie xterm oder urxvt. Also, ich schätze, das würde bedeuten, ändern
Ich kann 8 der Farben mit Escape-Sequenzen wie folgt ändern:
echo -en "\e]PY######"
wobei Y die numerische ID der Farbe (0 bis 7) und ###### der Hex-Farbwert ist.
Mein ultimatives Ziel ist es, das solarisierte Farbschema auf die Konsole zu portieren, da ich möchte, dass Vim immer gleich aussieht, egal ob ich die Konsole oder X verwende.
Irgendwelche Vorschläge hierzu?
htop in xterm:
htop in xterm, solarisierte Farben
htop in der Konsole, nach dem Anwenden der 8 Farben:
htop in der Konsole, nach dem Anwenden der 8 Farben konnte ich
Antwort1
Die TTY-Framebuffer-Konsole kann ohne Kernel-Hacking nicht mehr als 8-16 Farben haben, siehe dieses Zitat: „Obwohl der Linux-Framebuffer 256 (oder mehr) Farben unterstützt, tut der Linux-Konsolentreiber dies nicht; daher sind Konsolenanwendungen auf der Linux-Konsole immer noch auf 16 Farben beschränkt, ob mit oder ohne Framebuffer.“
Sie können also nicht mehr als 16 oder 8 Farben haben. Es gibt ein Tutorial, wie man die Farben für das Framebuffer-Terminal (also Strg+Alt+1) mit denselben Befehlen ändert, die Sie in ~/.bashrc beschrieben haben:Farben im TTY-Tutorial
Antwort2
Probieren Sie diese Bash-Funktion in der Konsole aus. Passenderweise funktioniert sie in einem X-Terminal nicht (ich denke, wegen der Tabs). Schauen Sie sich insbesondere die drei zuletzt verwendeten Dateien an, nämlich
/sys/module/vt/parameters/default_red
/sys/module/vt/parameters/default_grn
/sys/module/vt/parameters/default_blu
clr () {
clear # GFX bug otherwise
setterm -regtabs 4
Color_names="bla red gre yel blu mag cya whi"
Color_arr=($Color_names)
tput setaf 4
tput setab 7
echo -n " normal "
tput sgr0
echo -n " "
tput setaf 7
tput setab 4
echo " bright "
tput sgr0
for cmd in sgr0 bold
do
tput $cmd
for m in 0 1 2 3 4 5 6 7
do
tput setaf $m
echo -n ${Color_arr[$m]}" "
done
done
echo
tput sgr0
cat /sys/module/vt/parameters/default_red \
/sys/module/vt/parameters/default_grn \
/sys/module/vt/parameters/default_blu | sed s/,0/", "/g | \
sed s/^0/" "/g | \
tr "," "\t"
}
Als Antwort auf einen Kommentar bearbeiten
Ändern Sie beispielsweise die zweite Ziffer in der grünen Datei ( sys/module/vt/parameters/default_grn
) in 170
– dadurch erhält die zweite Farbe (mit Index 1) genauso viel Grün wie Rot und kein Blau (zumindest in meinem Fall, da ich die entsprechende Ziffer in default_red
170
und 0
in habe default_blu
).
Geben Sie nun ein tput setaf 1; echo hi
. Hier setzen Sie die Vordergrundfarbe auf die Farbe mit dem Index 1 (die, die Sie geändert haben) und drucken sie dann aus. (Beachten Sie den Einzeiler mit einem Doppelpunkt zur Trennung der Befehle, da Ihre Eingabeaufforderung sonst möglicherweise die tput
dazwischen liegenden Befehle zurücksetzt.)
Wenn es genauso aussieht wie immer, versuchen Sie es erneut echo -n '\033]R'
und dann die tput
Zeile. Nun,beide„Hi“s sollten irgendwie gelb sein.
Sagen Sie mir Bescheid, ob es bei Ihnen funktioniert (oder nicht).