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/