Czy istnieje sposób na zmianę kolorów używanych w konsolach TTY w systemie Linux?

14

Przez „zmieniaj kolory” rozumiem coś takiego jak zmiana czerni z #000000na #111111, a przez „konsolę TTY” mam na myśli to, co dostajesz, gdy robisz Ctrl+ Alt+ F1z X11, a nie emulator terminala taki jak xtermlub urxvt.

Używam Arch Linux, ale myślę, że ma to więcej wspólnego z programem udostępniającym TTY ( agettytak myślę).

Austin Hyde
źródło
Terminale nie działają w kategoriach kolorów szesnastkowych - używają kodów kolorów takich jak te w „/ etc / shell-colours”.
new123456,
1
@ new123456 - Nie mam nigdzie żadnego pliku o nazwie „shell-colours”/
Austin Hyde
Huh Nie podajesz tutaj swojej dystrybucji - prowadzę Zenwalk, więc Twoja dystrybucja może się różnić. Wyszukaj, color in bashaby uzyskać listę wszystkich ucieczek.
new123456
2
@ new123456 - Wspomniałem, że korzystam z Arch i nie szukam sekwencji ucieczki dla kolorów, takich jak \e[0;30mczarny, szukam sposobu na dostosowanie rzeczywistego koloru dla każdego nazwanego koloru.
Austin Hyde
1. Przepraszam - najpierw patrzę na tagi;) 2. Tylko informacje, nie do końca związane z pytaniem, ale związane z domeną.
new123456

Odpowiedzi:

3

Polecenie setterm jest tym, czego szukasz.

setterm -foreground black -background white

EDYTOWAĆ

Nie, nie ma możliwości zmiany nazw kolorów zgodnie z twoją prośbą. Nie są przywoływane w ten sposób nigdzie w przekleństwach, terminfo lub samym terminalu. Możesz zmienić definicje indeksów kolorów (chyba 0-15) poprzez edycję źródła jądra i rekompilację.

h0tw1r3
źródło
Nie, nie tego szukam. Chcę zmienić definicje kolorów, a nie kolor pierwszego planu i tła.
Austin Hyde
13

Jest to całkowicie możliwe i jest to coś, co robię w ustawieniach Arch.

Możesz upuścić coś takiego w skrypcie powłoki i uruchomić go przy logowaniu:

if [ "$TERM" = "linux" ]; then
    echo -en "\e]P0151515" # Black
    echo -en "\e]P1ac4142" # Red
    ...
    echo -en "\e]PEac4142" # Bright Cyan
    echo -en "\e]PFac4142" # Bright White
    clear # Clear artifacts
fi

\e]P0Do \e]PF(16) podstawy są sekwencje, które trzeba ustawić 16 (8, 8 pół jasne kolory jasne). Następnie umieścisz żądany kolor zastępczy np 151515.

Chris Kempson
źródło
wydaje się nie działać w Ubuntu 16.04 z bash fwiw
G Gordon Worley III
2

To najlepsze polecenie, jakie znam:

setterm -clear all -foreground green -bold -store

O ile wiem, możesz mieć tylko 8 różnych kolorów. Może trochę więcej, używając bright przed podstawową 8?

Shubham Chaudhary
źródło