Ändern Sie die Farben in der Konsole / im virtuellen Terminal

7

Gibt es eine Möglichkeit, alle verfügbaren Farben in der Konsole / im virtuellen Terminal zu ändern?
Mit Konsole meine ich, was Sie erhalten, wenn Sie STRG + ALT + F1 drücken, und nicht so etwas wie xterm oder urxvt. Ich denke, das würde eine Veränderung bedeuten

Ich kann 8 der Farben mit Escape-Sequenzen wie folgt ändern:

echo -en "\e]PY######"

Dabei ist Y die numerische ID der Farbe (0 bis 7) und ###### der hexadezimale Farbwert.

Mein ultimatives Ziel ist es, das solarisierte Farbschema auf die Konsole zu portieren, da ich trotzdem gleich aussehen möchte, unabhängig davon, ob ich mich in der Konsole oder in X befinde.

Irgendwelche Vorschläge dazu?

htop in xterm:
htop in xterm, solarisierte Farben

htop in der Konsole, nachdem ich die 8 Farben angewendet habe : htop in der Konsole, nachdem ich die 8 Farben
angewendet habe, die ich konnte

Daniel Jour
quelle
2
Die TTY-Framebuffer-Konsole kann ohne Kernel-Hacking nicht mehr als 8-16 Farben haben. Siehe dieses Zitat: "Obwohl der Linux-Frame-Buffer 256 (oder mehr) Farben unterstützt, unterstützt der Linux-Konsolentreiber dies nicht. Daher sind Konsolenanwendungen immer noch verfügbar Auf 16 Farben auf der Linux-Konsole beschränkt, Frame-Buffer oder nicht. " Sie haben also nicht mehr als 16 oder 8 Farben. Es gibt ein Tutorial zum Ändern der Farben für das Framebuffer-Terminal (auch bekannt als Strg + Alt + 1) mit denselben Befehlen wie in ~ / .bashrc beschrieben: phraktured.net/linux-console-colors.html
IBr
Ja ich weiß. Da ich 16 verschiedene Farben bekomme, sollte ich 16 Farben zur Verfügung haben, kann aber nur 8 davon konfigurieren. 16 wäre total genug für mich. Aber 8 ist nicht.
Daniel Jour
Genauer gesagt: Der in Ihrem Link angegebene Code ist genau das, was ich versucht habe, aber die Hex-Werte mit einer numerischen ID über 7 (8 bis F) scheinen von der Konsole ignoriert zu werden. Könnten Sie testen, ob der Code in Ihrem Link für Sie funktioniert?
Daniel Jour
@IBr Ich habe mich geirrt, es funktioniert definitiv. Das Problem war, dass ich dachte, Farbe ID 8 wäre weiß, aber es ist F, wie in Ihrem Link zu sehen. Möchten Sie die Frage beantworten, damit ich sie schließen kann?
Daniel Jour
Ok, ich habe anderen geantwortet, um die Lösung einfacher zu finden. Sie können sie schließen. Ich dachte, du hättest es selbst herausgefunden.
IBr

Antworten:

6

Die TTY-Framebuffer-Konsole kann ohne Kernel-Hacking nicht mehr als 8-16 Farben haben. Siehe dieses Zitat: "Obwohl der Linux-Frame-Buffer 256 (oder mehr) Farben unterstützt, unterstützt der Linux-Konsolentreiber dies nicht. Daher sind Konsolenanwendungen immer noch verfügbar Beschränkt auf 16 Farben auf der Linux-Konsole, Frame-Buffer oder nicht. "

Sie können also nicht mehr als 16 oder 8 Farben haben. Es gibt ein Tutorial zum Ändern der Farben für das Framebuffer-Terminal (auch bekannt als Strg + Alt + 1) mit denselben Befehlen wie in ~ / .bashrc: Farben im TTY-Tutorial beschrieben

IBr
quelle
1
Die Verbindung ist unterbrochen
Antonios Hadjigeorgalis
Die "solarisierten" Farbschemata sind nur 16 Farben, beachten Sie.
JdeBP
Niemand erwähnte die Verwendung von fbterm: unix.stackexchange.com/questions/316878/… und unix.stackexchange.com/questions/254234/…
Paul Wratt
3

Probieren Sie diese Bash-Funktion in der Konsole aus. Passenderweise funktioniert es in einem X-Terminal nicht (ich denke wegen der Registerkarten). 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- dies gibt der zweiten Farbe (mit Index 1) so viel Grün wie Rot und kein Blau (zumindest in meinem Fall, weil ich die entsprechende Ziffer in habe) default_red 170. und 0in default_blu).

Geben Sie nun ein tput setaf 1; echo hi. Hier setzen Sie die Vordergrundfarbe auf die Farbe mit Index 1 (die Sie geändert haben) und drucken sie dann aus. (Beachten Sie den Oneliner mit einem Doppelpunkt, um die Befehle zu trennen. Andernfalls kann Ihre Eingabeaufforderung die tputdazwischen liegenden Befehle zurücksetzen .)

Wenn es wie immer aussieht, versuchen Sie es echo -n '\033]R'und dann die tputZeile erneut. Jetzt sollten beide "Hallo" irgendwie gelb sein.

Lassen Sie mich wissen, ob Sie es zum Laufen bringen (oder nicht).

Emanuel Berg
quelle
Möglicherweise fehlt mir etwas, aber dies zeigt mir die verschiedenen Farben. Können Sie mir den Inhalt dieser drei Dateien erklären?
Daniel Jour
@ DanielOertwig: Eine Bearbeitung vorgenommen.
Emanuel Berg
Leider führt der Versuch, eine der 3 Dateien zu ändern, zu einem Fehler ("fsync failed" - vim als root).
Daniel Jour
@ DanielOertwig: Auf dieser Seite finden Sie (hoffentlich) besseres Material dazu.
Emanuel Berg