Będziesz musiał przekazać sterownikowi twojego terminala kod,
który chcesz mieć jako domyślny. Nie ma standardowego sposobu, aby
to zrobić, ale w przypadku Linux-a masz program setterm.
"setterm" używa informacji zawartych w bazie danych o terminalach, aby ustawić atrybuty. Tak się wybiera:
setterm -foreground black -background white -store
gdzie -store poza właściwą zmianą powoduje, że ustawienia stają się także domyślne dla bieżącej konsoli. Wymaga to, aby bieżący terminal (zmienna środowiskowa TERM) był opisany "wystarczająco dobrze" w bazie danych "termcap". Jeśli setterm z jakichś powodów nie działa, to tu jest kilka alternatyw:
Jeden z tych Xterminali powinien być dostępny i przynajmniej jeden z nich obsługuje kolory.
xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4
gdzie 'color_xterm' obsługuje kolorową wersję 'ls'. Ten konkretny wybór przypomina kolory używane na SGI.
Możesz zmodyfikować jądro raz na zawsze, tak samo jak udostępniając standard podczas działania dla konsol wirtualnych przez sekwencję ze znakiem ESC. Jeśli skompilowałeś swoje własne jądro to zalecam modyfikację jądra.
Plik ze źródeł jądra, który powinieneś zmodyfikować około linii
1940, to /usr/src/linux/drivers/char/console.c
def_color = 0x07; /* white */
ulcolor = 0x0f; /* bold white */
halfcolor = 0x08; /* grey */
Ja używam białego na niebieskim:
def_color = 0x17; /* white */
ulcolor = 0x1f; /* bold white */
halfcolor = 0x18; /* grey */
Liczby to kody atrybutów w postaci szesnastkowej używane przez kartę graficzną: najbardziej znacząca cyfra ("1" w przykładzie powyżej) jest tłem; najmniej znacząca - pierwszym planem. 0=czarny, 1=niebieski 2=zielony, 3=jasno-niebieski, 4=czerwony, 5=purpurowy, 6=brązowy/żółty, 7=biały. Dodaj 8, aby uzyskać kolory jaskrawe. Zauważ, że w większości przypadków jaskrawe tło = mrugające znaki, matowe tło. (Od sjlam1@mda023.cc.monash.edu.au).
Możesz także dostarczyć nowy standard podczas działania dla wirtualnych konsol, na bazie na-ekran z niestandardowymi sekwencjami ANSI (znalazłem podczas przglądania źródeł jądra)
ESC [ 8 ]
która ustawia domyślne kolory na bieżące tło i pierwszy plan. Wtedy łańcuch resetujący atrybuty (ESC [ m) wybiera te kolory zamiast białego i czarnego.
Właściwie będziesz musiał wysłać ten łańcuch na konsolę poleceniem
echo za każdym razem kiedy restartujesz komputer. Zależnie od
tego do czego używasz swojego Linux-a, może być kilka odpowiednich
miejsc:
To jest miejsce, gdzie wyświetla się komunikat "Welcome to Linux xx.yy", i jest to dobry wybór dla komputera, na którym pracujesz tylko ty. (Przypuszczalnie będzie zmorą dla użytkowników logujących się zdalnie przy pomocy telnet-a). Plik ten jest tworzony podczas startu (Slackware w /etc/rc.d/rc.S; RedHat w /etc/rc.d/rc.local), i powinieneś zmodyfikować linie wyglądające mniej więcej tak:
echo ""> /etc/issue
echo Welcome to Linux /bin/uname -a | /bin/cut -d\ -f3. >> /etc/issue
na:
ESCAPE="<wstaw tu znak escape>"
echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
echo Welcome to Linux /bin/uname -a | /bin/cut -d\ -f3. >> /etc/issue
Ten kod spowoduje przesunięcie kursora na początek strony, ustawienie koloru (tutaj: biały na niebieskim), zapisanie tego wyboru i wyczyszczenie reszty ekranu. Modyfikacja zadziała przy następnym starcie systemu. Zapamiętaj, aby wpisać kod klawisza ESC przy pomocy Ctrl-Q w emacs-ie, Ctrl-V w vi lub `Esc w joe, bo wygląda na to, że powłoka, w której się uruchamia ten skrypt nie rozumie sekwencji: /033.
if [ "$TERM" = "console" ]; then
echo "\033[37;44m\033[8]" #
# albo użyj setterm
setterm -foreground white -background blue -store
fi
if ( "$TERM" == "console" ) then
echo "\033[37;44m\033[8]"
# albo użyj setterm
setterm -foreground white -background blue -store
endif
Powinieneś być w stanie użyć setterm tak jak to było pokazane wyżej. Jeszcze raz: wymaga to, aby zdalny komputer wiedział wystarczająco dużo na temat twojego terminala i żeby emulator terminala, przy pomocy którego się logujesz, obsługiwał kolory. Z moich doświadczeń wynika, że najlepszymi emulatorami vt100 dostępnymi obecnie na inne platformy to:
Szczegóły na temat Kermita znajdziesz na http://www.columbia.edu/kermit/