# Čačkanje pod haubom KDE‑a

Nikolas
Gut (Nicolas Goutte)
goutte@kde.org

## Ručno uređivanje postavnih fajlova

### Uvod

Pošto su postavni fajlovi u KDE‑u tekstualni, daju se lako uređivati opštim uređivačem teksta poput Kate.

Primer tekstualnog fajla:

    [General]
    AutoSave=1
    LastFile=/var/tmp/test.txt

Postavni fajlovi posebni po korisniku skladište se u `.kde/share/config` (gde `.kde` treba zameniti onim iz $`KDEHOME`, ako je postavljena), a globalni u potfascikli `share/config` instalacione putanje KDE‑a (koju možete naći izdavanjem naredbe `kde4-config --prefix`). Imena postavnih fajlova obično se završavaju sa `rc` (bez prethodeće tačke), npr. `kopeterc`.

Ručno uređivanje postavnih fajlova može biti rizično po instalaciju KDE‑a. Programi obično ne proveravaju ono što čitaju iz postavnih fajlova, što znači da mogu biti pometeni pogreškama u njima, pa se čak i srušiti.

### Rezerve

Glavno pravilo glasi: napravite rezervu fajla pre bilo kakvih izmena. Rezervu je bolje čuvati potpuno izvan fascikle `.kde` (ili one zadate sa $`KDEHOME`) i njenih potfascikli. Rezerve je i inače pametno praviti, u slučaju ozbiljnih problema s KDE‑om koji bi uništili važne postavne fajlove (na primer, postavke K‑pošte koje se nalaze u `kmailrc`). Naravno, do ovako ozbiljne neprilike ne bi trebalo da dođe, ali nikad se ne zna.

### Uređivanje

Zašto biste uopšte dirali postavne fajlove? Recimo, zato što morate ako želite da nametnete režim Kioska. Zatim, možda vas programer zamoli da dodate određeni unos, kako bi mogao reši neki problem sa programom. Možda poželite da se rešite problema bez uklanjanja cele fascikle `.kde`. Ili da naučite više o dubinama KDE‑a.

Bilo kako bilo, iz kojeg god razloga, pretpostavimo da želite ručno da izmenite postavni fajl.

Kada ste namerili da uredite postavni fajl, pobrinite se da program kojem pripada nije u pogonu. Ako je to neki od osnovnih postavnih fajlova, može biti bolje da ga uređujete dok KDE u celini nije pokrenut.

Spremni? Onda da napravimo rezervu fajla (jesam li to već pomenuo?). Pokrenite omiljeni uređivač — pretpostavimo da je to Kate — i učitajte fajl (pazite da učitate kao UTF‑8, što Kate navodi kao `utf8`).

Struktura fajla će biti ovakva:

    [Group]
    ključ1=vrednost1
    ključ2=vrednost2
    ključ3=vrednost3

Fajl sada možete izmeniti (pažljivo!) i sačuvati ga (pazite da to opet bude kao UTF‑8).

Potom isprobajte program. Ako više ne radi kako bi trebalo, zatvorite ga i vratite rezervu postavnog fajla.

#### Srodne informacije

- sadrži više informacija o KDE‑ovoj strukturi fascikli, kako biste pronašli fajl koji želite da uredite.

## Skriptovanje površi

KDE pruža moćan sistem međuprocesne komunikacije u vidu DCOP‑a, komunikacionog protokola radne površi. DCOP‑om možete upravljati širokim opsegom funkcija u KDE‑u, iz komandne linije ili skripte napisane na vama omiljenom skriptnom jeziku. Takođe možete pribavljati podatke iz KDE programa; na primer, nekolicina KDE medija plejera obezbeđuje metode upita za podatke o tekućoj numeri.

Uopšte, svaki KDE program obezbeđuje jedno ili više DCOP sučelja, koja pak obezbeđuju metode (ili funkcije, ako vam je draže) koje drugi program može pozvati. Dakle, za upotrebu DCOP‑a prvi korak je pronaći podesan metod za zadatak. To je najlakše izvesti K‑DCOP‑om, grafičkim sučeljem ka dostupnim DCOP metodima.

Pokrenite K‑DCOP iz Konsole ili mini-CLI‑a (prozor koji iskače na AltF2). Prozor K‑DCOP‑a prikazuje tekuće programe koji pružaju DCOP sučelja, raspoređene u stablu. Nalaženje ispravnog metoda generalno iziskuje nešto pretrage kroz stablo, pri čemu je korisno znati da sučelje obeleženo kao `(default)` obično sadrži najčešće korišćene funkcije.

Da biste isprobali radi li funkcija ono što očekujete, kliknite na stavku setColor. Za postavljanje boje `c` kliknite na dugme birača boja i izaberite boju. Kućicom podesite da li boja treba da bude boja `A`. Kliknite na U redu i boja pozadine je postavljena.

Za pristup DCOP metodu iz omiljenog vam skriptnog jezika, možete koristiti ili DCOP sveze, ako su raspoložive u modulu `kdebindings`, ili pozivati naredbu komandne linije `dcop`. Za jednostavne potrebe naredba `dcop` sasvim je dovoljna. Da pozovete DCOP metod iz komandne linije, treba da zadate program i sučelje koje poseduje metod, sam metod i njegove argumente, u obliku pogodnom za školjku.

Program, sučelje i metod zadaju se tim redosledom, a zatim slede argumenti onim redosledom kojim ih navodi K‑DCOP. `dcop` još mnoge opcije — proučite ispis ``dcop` `--help``.

Dosta teorije, vreme je za primer:

### Skripta za izmenu boje pozadine DCOP‑om

Naredbom komandne linije `dcop` i s nešto Perla, napravićemo jednostavnu skriptu koja polako kruži pozadinu površi kroz spektar boja.

Prvo da potražimo podesan metod K‑DCOP‑om. U ovom primeru preskočićemo korak pretrage, i odmah preći na njega: metod koji tražimo je kdesktop KBackgroundIface setColor . Argumenti i povratni tip funkcije prikazani su u stilu C++a. Za `setColor` argumenti su boja `c`, koja određuje novu boju pozadine, i logička vrednost (tačno-netačno) `isColorA`, koja određuje da li je boja prva ili druga (korisno za postavljanje preliva, itd.)

Metod `setColor` pozovimo kroz komandnu liniju ovako:

    % dcop  kdesktop KBackgroundIface setColor '#ffffff' false.

Da zadamo boju upotrebili smo heksadekadnu RGB vrednost, kakve se koriste u HTML‑u. Zapazite da je okružena jednostrukim navodnicima kako bi se # zaštitio od školjke.

Za iznalaženje heksadekadnih RGB vrednosti boja, otvorite bilo koji dijalog birača boja u nekom KDE programu — na primer, u Kontrolnom centru, Izgled Boje — odaberite željenu boju i pročitajte vrednost datu poljem HTML:.

Eto, to je sve što nam treba od DCOP‑a, sad samo da napišemo skriptu oko njega. Evo vrlo (grube!) izvedbe:

    $min=49;  # minimalna vrednost R, G, ili B boje
    $max=174; # maksimalna vrednost R, G, ili B boje
    $step=5;  # promena boje po svakom koraku
    $sleeptime=15; # interval u sekundama između koraka

    @start = ($max, $min, $min);
    @colour = @start;

    while (1) {
            foreach (0..5) {
                    my $which = $_ % 3; # koju boju (R, G, B) izmeniti
                    my $updown = $_ % 2; # uvećati ili smanjiti vrednost boje
                    do {
                            if ($updown == 0) { $colour[$which]+=$step; }
                            if ($updown == 1) { $colour[$which]-=$step; }
                            my $dcopcall=sprintf "dcop kdesktop KBackgroundIface setColor '#%x%x%x' true\n", @colour;
                            system($dcopcall);
                            sleep $sleeptime;
                            } while (($colour[$which]
    >= $min) and ($colour[$which] <= $max));
                    }
    }

Izvršite skriptu bez ikakvih argumenata, i boje pozadine kružiće kroz blago prigušen spektar, sve dok se skripta ne prekine. Voilà!

Naravno da Perl nije jedini jezik kojim možete pisati skripte sa DCOP‑om — ako vam je draže skriptovanje u školjci, i ono je dostupno.

### Postavljanje pozadine sa Interneta

Sledeća skripta dobavlja glavnu sliku iz stripa „Predusretljivo“ i postavlja je kao tapet površi, koristeći opšteprisutne alatke i nešto DCOP‑a.

    #!/bin/sh
    COMICURL=`wget -qO - http://www.userfriendly.org/static/index.html | \
              grep Latest | sed -e "s,.*SRC=\",," -e "s,\"
    >.*,,"`
    TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
    wget -q -O $TMPFILE $COMICURL
    dcop kdesktop KBackgroundIface setWallpaper $TMPFILE 1

Prvi red posle `#!/bin/sh` koristi `wget` i nešto magije regularnih izraza da izvuče lokaciju slike iz HTML izvora glave stranice. Drugi i treći red preuzimaju sliku, i `dcop` najzad postavlja preuzetu sliku kao tapet.

## Dodavanje dopunskih sveza tastera u KDE

Mnoge moderne tastature sadrže dopunske tastere kojima podrazumevano nisu dodeljene nikakve radnje.

„Multimedijski“ tasteri često stvaraju signal, pa se sveza tastera unutar programa može zadati jednostavno kao i za bilo koji drugi taster. Međutim, neki tasteri ostaju neotkriveni i njihovo pritiskanje u podešavanju prečica nema efekta.

Na primer, neki IBM‑ovi laptopovi imaju dopunske tastere oko strelica levo i desno, koji liče na stranicu levo i stranicu desno.

1. Koristite `xev` za nalaženje kôda tastera. U ovom slučaju, to su 233 i 234.

2. Izaberite simbole tastera. Postoji priličan opseg podrazumevano nekorišćenih, pa su mnogi slobodni. Spisak možete naći u `/usr/X11R6/include/X11/keysymdef.h`, ili ekvivalentu na vašem sistemu.

3. Ako ga nema, napravite u domaćoj fascikli fajl po imenu `.Xmodmap`, i dodajte mu ovo:

       keycode 233 = Next_Virtual_Screen
       keycode 234 = Prev_Virtual_Screen

4. Izdajte naredbu ``xmodmap``~/.Xmodmap``.

Ponovo pokrenite `xev` da proverite da li tasteri posle ovog generišu simbole koje ste dodelili. Ako je to slučaj, možete ih dodeliti bilo kojoj radnji kao i obično.

### Srodne informacije

- Uputnu stranicu za `xev` možete dobiti upisivanjem `man:/xev` u prozoru K‑osvajača, ili ``man`xev` u terminalu.

## Dodavanje sveza tastera za nove radnje

Većina radnji, ili na površi ili u programima, već su raspoložive za dodelu sveza. Ako ste sami napisali radnju za koju želite prečicu, ili drukčije nije raspoloživa, prečicu svejedno možete dodeliti.

Da spojimo dve prethodne sekcije, možda ćete hteti da inače neiskorišćen taster dodelite nekoj skripti ili DCOP naredbi. Za primer, dva tastera koja smo dodali u dodelimo sada za prelaz na prethodnu ili sledeću virtuelnu površ. To su dve funkcije za koje će vam trebati DCOP, kao što smo izneli u .

Ovo je lako uraditi korišćenjem sledećeg metoda:

1. Otvorite K‑kontrolu i pod Administracija računara izaberite Akcije unosa.

2. Izaberite Nova radnja.

3. Imenujte novu radnju, npr. `Sledeći virtuelni ekran`.

4. Pod Tip radnje: izaberite Prečica s tastature->||Naredba/URL (jednostavna).

5. Pod jezičkom Prečica s tastature, pritisnite taster koji želite da okida naredbu. U ovom primeru, to bi bilo ono sa naslikanom sledećom stranicom. Na slici tastera pojaviće se Next_Virtual_Screen.

6. Pod jezičkom Postavke naredbe/URL‑a, u polju upišite naredbu za izvršavanje: ``dcop kwin default nextDesktop``.

Ponovite prethodno sa tasterom Prev_Virtual_Screen i ``dcop kwin default previousDesktop``.

Od sada će vas pritisak na Prev_Virtual_Screen ili Next_Virtual_Screen prebacivati na prethodnu ili sledeću virtuelnu površ, tim redom.

Očigledno, bilo kojoj radnji možete dodeliti bilo koji slobodan taster.

### Srodne informacije

- Pogledajte dokumentaciju K‑prečica u K‑centru-pomoći, ili upisivanjem `help:/khotkeys` prozoru K‑osvajača.

Adrijan
de Grot (Adriaan de Groot)
groot@kde.org

## K‑ispravljački-dijalog — upravljanje ispravljačkim izlazom KDE‑a

### Osnovno korišćenje

K‑ispravljački-dijalog podrazumevano nije u KMeniju. Pokrećete ga ili iz školjke ili iz mini-CLI‑a, naredbom ``kdebugdialog``. Iskočiće prozor sa dugim spiskom ispravljačkih oblasti. Svako od njih ima kućicu koja se može popuniti i isprazniti, kako bi se ispravljački izlaz za tu oblast KDE‑a uključio ili isključio.

Ispravljačke oblasti na spisku poređane su numerički umesto abecedno, pa `kio (127)` dolazi pre `artskde (400)`. Brojevi rastu do oko 200000, no zapravo postoji samo oko 400 područja. Ipak, ne morate klizati kroz ceo spisak da nađete željenu oblast. Na vrhu dijaloga stoji polje u koje možete upisati deo imena oblasti, kada će spisak biti filtriran da sadrži samo one oblasti koje sadrže uneti tekst. Na primer, upisivanjem `k` malo će toga biti filtrirano, ali upisivanjem `kont` preostati samo ispravljačke oblasti Kontacta. Za još brže uključivanje i isključivanje ispravljačkog izlaza, tu su dugmad Izaberi sve i Poništi izbor, koja će navesti KDE da ispisuje more ispravljačkog izlaza, ili vrlo malo toga.

### K‑ispravljački-dijalog u punom režimu

U punom režimu, onom koji dobijate kad K‑ispravljački-dijalog pokrenete pomoću ``kdebugdialog``--fullmode``, dat je isti skup ispravljačkih oblasti kao u običnom režimu, ali u padajućem spisku tako da ih birate jednu po jednu. Ispod možete nezavisno postaviti izlaz za razne tipove poruka — informacije, upozorenja, greške i kobne greške. Za svaki tip možete izabrati da li se poruke šalju u:

fajl — unosite ime fajla, koji će biti upisan u vašu domaću fasciklu ($`HOME`);

dijalog s porukom — svaka ispravljačka poruka prikazuje se u dijalogu, u kojem morate kliknuti na U redu da nastavite s programom;

školjku — (podrazumevana stavka) poruke se ispisuju na stdgr, i pojavljuju ili prozoru školjke u kojoj je program pokrenut, ili u `~/.xsession-errors`;

sistemski dnevnik — šalje ispravljačku poruku sistemskom dnevniku, koji može da izvrši sopstvenu obradu poruke;

nigde — suzbija izlaz ovog tipa poruka.

Obično nije pametno izabrati nigde ili sistemski dnevnik za poruke o kobnim greškama, jer u oba slučaja poruku najverovatnije nećete videti, a program koji susretne kobnu grešku nestaće bez traga. Da li će program ispariti pri kobnim greškama možete odrediti kućicom Obustavi pri kobnoj greški, koja je podrazumevano popunjena — no svejedno možete očekivati da se program sruši (i to vrlo neuređeno) ako dođe do kobne greške.