]>

# Priročnik za &konsole;

Lars
Dölle

    lars.doelle@on-line.de

Prevod:
Andrej
Vernekar

    andrej.vernekar@kiss.uni-lj.si

06/06/1998
0.08.06

Ta dokument opisuje &konsole; različice 0.8.6 Prosim zavedajte se dejstva, da je ta dokument v izgradnji.

## Uvod

&konsole; je X terminalski emulator za KDE.

V smislu grafičnega uporabniškega vmesnika pomeni terminalska emulacija, da je njena naloga priskrbeti za izpis aplikacije, ki je bila prvotno oblikovana za delovanje na računalniku s priklopljenim znakovnim terminalom.

Da podam kratko taksnonomijo prostih X terminalov: obstajata dva druga te vrste: xterm, ki je original, napisan celo pred X-i samimi (mesec ali dva), in xvt, lažji xtermov klon, na katerem temelji večina trenutno dosegljivih izpeljank (naj omenim eterm). Po dekadi je &konsole; prva spisana iz osnove. Medtem ko je bil xterm gotovo shekan do smrti (njegov `README` se prične z besedami "Opustite vse upanje, ki vstopate (Abandon All Hope, Ye Who Enter Here)"), ponuja &konsole; svež začetek z uporabo trenutnih tehnologij in razumevanja X-ov.

## Pregled

Ko je vpoklican, &konsole; požene podrejen program (client application, ki je privzeto lupina) in prikaže ves njegov izpis v svojem oknu, medtem ko preda pritiske tipk in miškine klike klientu.

S tem je večina obnašanja &konsole; upravljana s strani programa ki dejansko teče v njej. Obstaja le nekaj posebnih zmožnosti, ki jih doda &konsole;. Te dodatne zmožnosti niso nestandardne, zato večina sledečega opisa velja za vsako spodobno terminalsko emulacijo.

Pomnilnik zgodovine

  Tekst, ki zdrsi izven zaslona je shranjen v pomnilniku zgodovine za kasnejši ogled. Trenutno je shranjenih največ 100 vrstic. Medtem ko ni možno spreminjati besedila, ki je končalo v pomnilniku (bufferju), si ga lahko ogledamo in delno ali v celoti kopiramo na odložišče.

Tipkovnica

  Tipke Shift PageUp, Shift PageDown, Shift Navzgor in Shift Navzdol se uporabljajo za drsenje skozi pomnilnik zgodovine. Vsi ostali pritiski tipk so predani programu, ki teče v emulaciji. Upoštevajte, da je lahko pri tem tudi nekaj mrtvih tipk.

Miška

  Da lahko v celoti izkoristite terminal rabite miško s tremi tipkami. Gumbi imajo različne funkcije:

  Levi gumb

    Klik na levi gumb je predan kot dogodek programu, ki teče v aplikaciji, če se ta zaveda miške. Ali bo program reagiral na klik miške, &konsole; nakaže tako, da prikaže puščični kurzor. Če ne, je prikazan pokončen (ibeam) kurzor.

    Pritisk levega gumba in drsenje miške preko zaslona bo ob miške se nezavedajočem programu označilo območje besedila. Med vlečenjem je označeno besedilo za vidno povratno informacijo prikazano negativno obarvano. Takoj, ko je gumb spuščen, je označeno besedilo skopirano na odložišče za nadaljno uporabo znotraj &konsole; ali drugega programa.

    Običajno so prelomi vrstic vstavljeni na koncu vsake označene vrstice. To je praviloma najbolje za kopiranje in prilepljanje izvorne kode ali izpisa ukazov. Za običajno besedilo pa prelomi vrstic pogosto niso pomembni. Želeli bi si, da bi bilo besedilo tok znakov, ki bodo samodejno preoblikovani kadar bodo prilepljeni v drug program. Da izberete način besedilnega toka (text-stream mode), držite med označevanjem tipko Ctrl.

    Če sta med označevanjem dotaknjena zgornji ali spodnji rob območja besedila &konsole; drsi navzgor ali navzodol in tako razkrije besedilo v pomnilniku zgodovine. Drsenje se ustavi takoj, ko premaknete miško.

    Po tem ko izpustite tipko miške namerava &konsole; obdržati besedilo v odložišču vidno tako, da drži obarvanje označenega območja negativno.Označeno območje se se spremeni nazaj kadar se spremeni vsebina odložišča, besedilo znotraj označenega območja ali pa kliknete na levi gumb miške.

    Da označite besedilo v miške se zavedajoči aplikaciji mora biti hkrati pritisnjena tipka shift.

  Srednji gumb

    Pritisk na srednji gumb prepiše besedilo na odložišče. To deluje kot da bi bila vsebina odložišča vtipkana na tipkovnico, tako da bo program, ki teče v emulaciji reagiral nanj na svoj način.

  Desni gumb

    Desni gumb prikaže nastavitveni menu. Dodatno sta lahko s tem gumbom uporabljeni tipki shift in control, da pridobite dostop do drugih delov menuja.

Seje

  &konsole; ponuja poganjanje več sej (programov) hkrati. Nove seje se lahko pričnejo z uporabo menuja "Nov". Med sejami lahko preklapljate z menujem "Seje". Oba menuja sta dosegljiva tudi kot menuja desne tipke miške, če pritisnete hkrati tipko shift ali control.

  Menu sej se lahko nastavi skladno z lokalnimi potrebami. (Razdelek, ki bi to razložil manjka, za nekaj zgledov poglejte v `/opt/kde/share/apps/konsole`.)

## Nastavitev

Z uporabo menuja možnosti lahko nadzorujete večino pojave &konsole;. Nastavitev je dosegljiva tako z menujem kot s klikanjem na okno &konsole; z desnim gumbom miške.

Menu vrstica

  Označitev te možnosti omogoča menu na vrhu okna. Za razliko od običajnega obnašanja menu ne sprejema "vročih tipk", da ostanejo vse kombinacije tipke ALT uporabne za podrejene (client) programe.

Okvir

  Izbere, ali je okrasni rob narisan.

Drsnik

  Uporaba drsnika je drug način nadzora pomnilnika zgodovine. Ne zamenjajte te možnosti z drsenjem znotraj podrejenega (client) programa, čeprav bo pogosto (tudi naj bi) izgledalo tako.

Pisava

  Menu pisava ponuja dve popolnoma različni nastavitvi. Najprej je podan nabor pisav različnih velikosti, tako da je lahko izbrana pisava, ki ustreza tako ločljivosti kot željeni velikosti okna. Potem je tu še dodatna pisava "Linux", ki se razlikuje od vseh zgoraj po svojem kodnem naboru. Ta pisava je potrebna, če se poganja emulacija linux konzole.

Velikost

  Medtem, ko je velikost okna poljubno nastavljiva, je včasih zaželjeno, da velikost okna &konsole; ustreza zahtevam starih, velikosti nezavedajočih se programov. Menu Velikost ponuja najpogosteje uporabljane velikosti. Če nobena od njih ne ustreza, spremenite velikost vašim zahtevam ustrezno. Ko je velikost spremenjena, jo &konsole; prikaže v naslovu, da pomaga pri prikrojitvi.

Barvna shema

  Ta možnost omogoča izbiro barvne sheme. (Razdelek ki to razlaga manjka, poglejte v datoteko `/opt/kde/share/apps/konsole` za nekaj zgledov.)

Zaradi več zgodovinskih razlogov tipka backspace ne vrne CTRL-H pod Linux-om. (Edini program ki ga poznam, da je res odvisen od tega posebnega obnašanja je "emacs", kjer CTRL-H pomeni "Pomoč"). Čeprav je vsak program pravilno nastavljiv, tako da bi lahko nastavili emacs, da bi sprejel tipko F1 kot tipko za pomoč, je nestandardna uporaba tipkovnice tradicionalizirana. Ne skrbite, poskrbite le, da bo možnost

- BS pošlje DEL

označena.

V tem primeru &konsole; pošlje znak DEL (hex 7F) ob pritisku tipke backspace namesto običajnega znaka BS (hex 08). Tipka Delete v tem primeru prav tako pošlje od DEL različen znak.

Vse možnosti zgoraj vplivajo takoj, a le za trenuten vpoklic. Da naredite nastavitve trajne, kliknite na možnost:

- Shrani opcije

## Namestitev

&konsole; je trenutno del paketa kdenonbeta in mora biti preveden in nameščen kot je nakazano v paketovem glavnem imeniku.

Če naletite pri tem na težave, prosim poglejte navzdol na namestitvene težave.

## Hrošči in pogosto zastavljena vprašanja (FAQ)

Preden pošljete poročila o hroščih, prosim preverite težavo z drugim X terminalom, da ugotovite, ali specifična za `&konsole;' ali ne.

### Težave povezane z namestitvijo

&konsole; zahteva nekaj specifičnih pisav, ki pridejo skupaj z njegovo distribucijo, a niso nameščene zaradi avtorjeve želje, da ne zahteva privilegijev korenskega uporabnika med namestitvenim procesom. To boste morali opraviti ročno. Poglejte v `README.linux.console` za podrobnosti.

### S programi povezane težave

Nekateri programi imajo težave kadar tečejo v X terminalu.

#### MC (midnight commander 4.1.21)

- se na spremembe velikosti (preden je pritisnjena katerakoli tipka) odzove le, kadar je emulacija imenovana 'xterm' in na (xterm) dogodke miške. Upoštevajte, da xterm dogodki miške niso posebnost, proizvede jih npr. tudi Linux konzola.

- Po °O (prikazujoč drugi (sekundarni) zaslon) mc ne preda dogodkov spremembe velikosti svoji podlupini. Poizkusite to z xterm ali katerokoli drugo terminalsko emulacijo.

- Trenutno počne več čudnih stvari s podlupino. Pri spreminjanju velikosti okna s prikazanimi mc-jevimi pulti je prizadet drugi zaslon (z realnimi ali lažnimi pozivi). To postane še huje, kadar se medtem ko to naredite izvaja kakšen program.

- Pošlje vsaj nove vrstice (prelome), pogosto pa še precej več stvari, kadar je med prikazom pultov spremenjena velikost.

- Ob velikem prometu je znano, da se izgubi nekaj besedila. Poizkusite 'ripple' v poizkusnem imeniku, dokler ne zaznate spusta. Ker sem uspel tega hrošča ustvariti z kvt, rxvt in xterm ter sem ugotovil, da so podatki izgubljeni že pri branju (3) sem mogoče tukaj naletel na kaj drugega. Ker sem ta pojav lahko ponovil le med poganjanjem mc, sem skoraj prepričan, da ta pojav povzroča način, kako mc rokuje s podlupinami.

- Spreminjanje velikosti ne deluje dobro, kadar program teče pod emulacijo linux konzole. Mc posebej ne preda informacije o spremembi velikosti podlupini. Nadalje se tudi ne zaveda več miške.

#### Vim 4.6

- izvrže ob izhodu novo vrstico in tako povzroči čuden izgled drugega zaslona, kadar teče skupaj z mc kot privzeti urejevalnik.

#### dselect (vmesnik Debianovega paketnega upravljalnika):

- pričakuje črno ozadje. Zato uporabite shemo belo-na-črni, kadar ga uporabljate. Kadar teče pod emulacijo linux konzole, ne prebavi dobro spreminjanja velikosti (pride do segfault).

### Pokvarjeni bazi podatkov za Termcap in Terminfo

Prosim zavedajte se dejstva, da večina aplikacij (tistih, ki uporabljajo ncurses) osnuje znanje o tem, kako se pogovarjati s terminalsko emulacijo na osnovi informacij v bazi podatkov. Te so lahko napačne. Zaznali boste podobne težave z drugimi emulacijami.

Na primer:

- debian 1.3.1 (Bo) sprejme kdch1 vnos, čeprav izgleda, da tipka DELETE deluje narobe. Druge tipke morda prav tako manjkajo.

- distribucija mc 4.1.21 vsebuje xterm.ti s pokvarjenimi hpa in vpa vnosi (z izpuščenimi `[` po `ESC`. Še čudneje, xterm teče z njimi srečno, zaradi zmožnosti, ki dovoljuje pod nekaterimi pogoji sprejemanje sekvenc napak (`ESC Pn C` je obravnavan kot `ESC [ Pn C`, kjer je `C` neštevilčen znak).

- iz tega vzroka sem vključil xterm.ti. (Prevedite z uporabo tic)

### Težave z BACKSPACE, DELETE in podobnim na tipkovnici .

Pred davnimi časi je bil terminal brez tipke delete. Ta težava je bila nadaljevana v Linuxu in je še vedno nikoli končana nočna mora. Obšlo se jo je različno z vsemi programi, ki se morajo z njo ukvarjati, ti so postali nastavljivi in tako verjetno pridejo napačno nastavljeni. To velja tudi za &konsole;.

&konsole; pošlje DEL (0x7f) za tipko BS in ESC[3 za tipko DEL, če je aktivirana možnost `BS pošlje DEL' in se potem obnaša kot tipično nastavljena Linux konzola. Ctrl-H (0x08) ostane tako za uporabo v programih, na primer za tipično nastavljeno pomoč v emacsu.

Če ta možnost ni postavljena, pošlje tipka BS znak BS (0x08) in tipka DEL znak DEL (0x7f), kot to počno regularni VT100 in IBM PC.

[Ker je lahko vsak program nastavljen z BS=BS in DEL=DEL in ubogi zgoraj omenjeni terminal brez tipke danes obstaja le še v legendah, se avtor čudi, zakaj je ta BS hek še vedno naokoli.]

ctrl-ˆ == ctrl- == ctrl-` == RS == 0x1e ne morete vtipkati z naloženo evropsko tipkovnico, saj so vsi trije osnovni znaki prefiksi (se lako nadaljujejo z drugim znakom). X11 je znan po teh mrtvih tipkah.

### Barvna shema

Zaradi viharja pritožb čez barvne sheme &konsole; v svojih zadnjih različicah ponuja prilagodljive barvne sheme. Ustrezen dokument zanje še manjka.

### Pisave

(rahlo zastarelo, preverite `README.linux.console`)

- VGA font uporablja drugačno kodiranje kot ostali, in zaradi tega ne bo prikazal grafičnih in nacionalnih zankov, kadar bo pognan s TERM=xterm. Najbolj ustreza dosu(1) in deljute tudi s TERM=linux. Upoštevajte, da je vključitev tega fonta poizkusna.

- izgleda, da ostale, nevključene pisave niso uporabne za terminalske programe. To ni toliko povezano z njihovo spremenljivo višino (kar sem vključil eksperimentalno), temveč ker jim manjka grafična podlaga. Preverite xfd(1x).

- Kot kaže, v splošnem manjka primerna družina pisav za terminale. Če veste za družino pisav spremenljive velikosti, primerne za terminal, mi pošljite vrstico.

### Varnost

Čeprav je &konsole; pripravljen, da je nameščen kot root-suid, ni namenjen za takšno uporabo. Ne počnite tega. &konsole; opusti privilegije takoj po zagonu. Varna tipkovnica (X11) ni implementirana, kar pomeni, da lahko drugi X11 programi dobijo dogodke s tipkovnice na &konsole;, če želijo. Pazite se trojanskih konj.

&konsole; ne spremeni lastnika (fchown(2)) psevdo terminala (pseudo tty). To pomeni, da lahko v večuporabniškem okolju nekdo prisluškuje vaši (korenski) seji. Pri novejših jedrih Linuxa (2.1/2.2) bo &konsole; zavrnil takšne poskuse. Da preverite, ali je to možno ali ne poizkusite naslednje:

    $ tty
    /dev/ttyp3

Kot uporabnik (ne root!) poizkusite :

    $ echo 'test' > /dev/ttyp3

Če prejmete niz znotraj seje &konsole;, je seja nezavarovana.

Za ostale UNIX-e bo ta luknja zaprta v kratkem, vendar bo rešitev zahtevala, da je &konsole; nameščen kot root/suid. Zavedam se, da to ne bo mogoče v vsaki namestitvi, a tega ne morem spremeniti.

### Znani hrošči (&konsole;-0.8.6)

- tipke na nameričnem delu ne povzročijo nobenega učinka, kadar je vključen numlock. To resnično odseva to, kar dobim od Qt. Vse tipke pridejo v obliki &num;ffff. Mislim, da to prihaja od filtra dogodkov (eventFilter), ki sem ga moral namestiti da sem dobil pritiske tipk.

- preverite TODO za "hrošče", za katere so krive manjkajoče zmožnosti.

### Možnosti, ki ne bodo izvedene

utmp vnosi.

  Utmp je baza podatkov, ki pove, kdo je trenutno prijavljen. To uporabljajo programi kot who, finger, wall, talk in drugi da prikažejo seznam uporabnikov sistema in jih kontaktirajo.

  V uporabi z X terminalom ni smisla, saj tukaj ni terminala, ki bi mu lahko poslali obvestila.

  Pravilna rešitev bi bila, da zlepim utmp s prijavnim oknom xdm/kdm. Dalje bi moral biti ob pričetku seje X samodejno zagnan chat program (ktalk?), tako da bi bil nekomu ob konzoli dostopen komunikacijski kanal.