Farben in der Konsole/im virtuellen Terminal ändern

Farben in der Konsole/im virtuellen Terminal ändern

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 170und 0in 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 tputdazwischen liegenden Befehle zurücksetzt.)

Wenn es genauso aussieht wie immer, versuchen Sie es erneut echo -n '\033]R'und dann die tputZeile. Nun,beide„Hi“s sollten irgendwie gelb sein.

Sagen Sie mir Bescheid, ob es bei Ihnen funktioniert (oder nicht).

verwandte Informationen