Next Previous Contents

6. Hvordan forandre tekst-modus standard svart på hvit

Du må fortelle terminal-driveren at du vil ha en annen standard. Det finnes ikke noen standard måte å gjøre dette på, men i dette tilfellet av Linux har du setterm-programmet.

"setterm" bruker informasjonen i terminaldatabasen til å sette atributtene. Utvalg gjøres slik

setterm -foreground black -background white -store

der "-store" ved siden av den faktiske forandring gjør det til standard for den nåverende konsollen også. Dette krever at den nåverende terminalen (TERM miljø(environment) variablen) er beskrevet "godt nok" i termcap databasen. Hvis setterm av en eller annen grunn ikke virker, er dette noen alternativer :

6.1 Xterm

En av disse xterminalene burde være tilgjengelig, og minst en av dem burde støtte farger.

xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4

der 'color_xterm' støtter versjonen av 'ls' med farger. Dette bestemte valget likner fargene benyttet på en SGI.

6.2 Virtuelle konsoller.

Du kan modifisere kernelen en gang for godt, og levere en standard for virtuelle konsoller med en avbrudds-sekvens. Jeg anbefaler kernelpatchen hvis du har kompilert din egen kernel.

Kernel kildekoden finner du på /usr/src/linux/drivers/char/console.c rundt linje 1940 der du bør modifisere

        def_color       = 0x07;   /* white */
        ulcolor         = 0x0f;   /* bold white */
        halfcolor       = 0x08;   /* grey */
som passende. Jeg bruker blå på hvitt
        def_color       = 0x17;   /* white */
        ulcolor         = 0x1f;   /* bold white */
        halfcolor       = 0x18;   /* grey */

Tallene er atributt-kodene benyttet av skjermkortet i heksadesimal: det viktigste nummeret ("1"'eren i eksempelet over) er bakgrunn; det minst viktige nummeret er forgrunn. 0 = svart, 1 = blå, 2 = grønn, 3 = cyan, 4 = rød, 5 = lilla, 6 = brun/gul, 7 = hvit. Legg til 8 for å få "lyse" farger. Merk at, i de fleste tilfeller, en lys bakgrunn == blinkende bokstaver, mørk bakgrunn. Fra sjlam1@mda023.cc.monash.edu.au).

Du kan også sette en ny standard for en virtuell konsoll, på et per-dag basis med en ikke-standard ANSI-sekvens (funnet ved å bla i kernel-kildekodene)

        ESC [ 8 ]

som setter forhåndsvalget til de nåværende for- og bakgrunnsfargene. Så velger Resett Atributter(Reset Attributes) strengen (ESC [ m) disse fargene i stedet for hvitt på svart.

Du må faktisk sende(echo) denne strengen til konsollen hver gang du starter opp igjen. Avhengig av hva du bruker Linux-boksen din til, er flere steder passende:

/etc/issue

Dette er der "Velkommen til Linux xx.yy" vises med Slackware(og mange andre distribusjoner), og er et godt valg for selvstendig utstyr(og sannsynlig vis en plage for brukere som logger inn via telnet). Denne filen lages når du starter opp (i Slackware er det /etc/rc.d/rc.S; i Redhat er det /etc/rc.d/ rc.local), og du burde modifisere linjene slik at de ser ut noe sånt som

  echo ""> /etc/issue
  echo Velkommen til Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue
til
  ESCAPE="<erstatt med et enkelt avbrudssymbol her>"
  echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue
  echo Velkommen til Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue

Denne koden vil sette fargen (her er det hvitt på blått), lagre valget og viske ut resten av skjermen. Denne modifiseringen trer i kraft etter neste omstart. Husk å sette inn det _bokstavlige_ avbruddssymbolet i filen med C-q i emacs eller kontroll-v i vi, ettersom skallet som benyttes til å kjøre dette skriptet ikke forstår syntaksen /033.

/etc/profile eller .profile

  if [ "$TERM" = "console" ]; then
      echo "\033[37;44m\033[8]" #
# eller bruk setterm.
      setterm -foreground white -background blue -store
  fi

/etc/login eller .login

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

6.3 Fjern(remote) logginn

Du burde være i stand til å bruke programmet setterm som vist over. Dette krever at den fjerne maskinen vet nok om din terminal, og at terminal-emulatoren som gir login støtter farger. Etter min erfaring er den beste vt100-emuleringen tilgjengelig for andre platformer :

Se http://www.columbia.edu/kermit/ for detaljer om Kermit.


Next Previous Contents