Następna strona Poprzednia strona Spis treści

6. Jak skonfigurować inny standard tekstowy niż białe-na-czarnym ?

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:

6.1 Xterm.

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.

6.2 Konsole wirtualne.

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:

/etc/issue

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.

/etc/profile lub .profile.

     if [ "$TERM" = "console" ]; then
         echo "\033[37;44m\033[8]" #
   # albo użyj setterm
         setterm -foreground white -background blue -store
     fi

/etc/login lub .login

     if ( "$TERM" == "console" ) then
       echo "\033[37;44m\033[8]"
   # albo użyj setterm
         setterm -foreground white -background blue -store
     endif

6.3 Logowanie zdalne.

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/


Następna strona Poprzednia strona Spis treści