<chapter id="tinkering-under-the-hood">
<!-- Uncomment the <*info
> below and add your name to be -->
<!-- credited for writing this section. -->

<!--
<chapterinfo>
<authorgroup>
<author>
<firstname
>Your First Name here</firstname>
<surname
>Your Surname here </surname>
</author>
</authorgroup>
</chapterinfo>
-->

<title
>Čačkanje pod haubom <acronym
>KDE‑a</acronym
></title>

<sect1 id="hand-editing-config-files">

<sect1info>
<author
><personname
><firstname
>Nikolas</firstname
> <surname
>Gut</surname
></personname
> <email
>goutte@kde.org</email
> </author>
</sect1info>

<title
>Ručno uređivanje postavnih fajlova</title>

<sect2 id="hand-editing-intro">
<title
>Uvod</title>
<para
>Pošto su postavni fajlovi u <acronym
>KDE‑u</acronym
> tekstualni, daju se lako uređivati opštim uređivačem teksta poput <application
>Kate</application
>.</para>

<para
>Primer tekstualnog fajla:</para>

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

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

<warning
><para
>Ručno uređivanje postavnih fajlova može biti rizično po instalaciju <acronym
>KDE‑a</acronym
>. 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.</para
></warning>

</sect2>

<sect2 id="hand-editing-backups">
<title
>Rezerve</title>

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

<sect2 id="hand-editing">
<title
>Uređivanje</title>

<para
>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 <filename class="directory"
>.kde</filename
>. Ili da naučite više o dubinama <acronym
>KDE‑a</acronym
>.</para>

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

<para
>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 <acronym
>KDE</acronym
> u celini nije pokrenut.</para>

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

<para
>Struktura fajla će biti ovakva:</para>

<programlisting
>[Group]
ključ1=vrednost1
ključ2=vrednost2
ključ3=vrednost3</programlisting>

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

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

<itemizedlist>
<title
>Srodne informacije</title>


<listitem
><para
><xref linkend="kde-for-administrators"/> sadrži više informacija o <acronym
>KDE‑ovoj</acronym
> strukturi fascikli, kako biste pronašli fajl koji želite da uredite.</para>
</listitem>

</itemizedlist>

</sect2>

</sect1>

<sect1 id="scripting-the-desktop">
<title
>Skriptovanje površi</title>

<para
><acronym
>KDE</acronym
> 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 <acronym
>KDE‑u</acronym
>, iz komandne linije ili skripte napisane na vama omiljenom skriptnom jeziku. Takođe možete pribavljati podatke iz <acronym
>KDE</acronym
> programa; na primer, nekolicina <acronym
>KDE</acronym
> medija plejera obezbeđuje metode upita za podatke o tekućoj numeri.</para>

<para
>Uopšte, svaki <acronym
>KDE</acronym
> program obezbeđuje jedno ili više DCOP <firstterm
>sučelja</firstterm
>, 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 <application
>K‑DCOP‑om</application
>, pročeljem ka dostupnim DCOP metodima.</para>

<para
>Pokrenite <application
>K‑DCOP</application
> iz <application
>Konsole</application
> ili mini-CLI‑a (prozor koji iskače na <keycombo action="simul"
><keycap
>Alt</keycap
><keycap
>F2</keycap
></keycombo
>). Prozor <application
>K‑DCOP‑a</application
> 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 <literal
>(default)</literal
> obično sadrži najčešće korišćene funkcije.</para>



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

<para
>Za pristup DCOP metodu iz omiljenog vam skriptnog jezika, možete koristiti ili DCOP sveze, ako su raspoložive u modulu <literal
>kdebindings</literal
>, ili pozivati naredbu komandne linije <command
>dcop</command
>. Za jednostavne potrebe naredba <command
>dcop</command
> 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.</para>

<para
>Program, sučelje i metod zadaju se tim redosledom, a zatim slede argumenti onim redosledom kojim ih navodi <application
>K‑DCOP</application
>. <command
>dcop</command
> još mnoge opcije — proučite ispis <userinput
><command
>dcop</command
> <option
>--help</option
></userinput
>.</para>

<para
>Dosta teorije, vreme je za primer:</para>

<example>
<title
>Skripta za izmenu boje pozadine DCOP‑om</title>

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

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

<para
>Metod <methodname
>setColor</methodname
> pozovimo kroz komandnu liniju ovako: <screen
><prompt
>%</prompt
> <userinput
><command
>dcop</command
>  kdesktop KBackgroundIface setColor '#ffffff' false</userinput
>.
</screen>
</para>

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

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


<para
>Eto, to je sve što nam treba od DCOP‑a, sad samo da napišemo skriptu oko njega. Evo vrlo (grube!) izvedbe: <programlisting
><![CDATA[
$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));
                }
}
]]>
</programlisting>
</para>

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

</example>

<para
>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.</para>

<example>
<title
>Postavljanje pozadine sa Interneta</title>

<para
>Sledeća skripta dobavlja glavnu sliku iz stripa <ulink url="http://www.userfriendly.org/"
>„Predusretljivo“</ulink
> i postavlja je kao tapet površi, koristeći opšteprisutne alatke i nešto DCOP‑a.</para>

<programlisting
><![CDATA[
#!/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
]]>
</programlisting>

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

</example>


<!-- <itemizedlist>
<title
>Related Information</title>
<listitem
><para
>to be written</para>
</listitem>
</itemizedlist
> -->


</sect1>


<sect1 id="adding-extra-keys">
<title
>Dodavanje dopunskih sveza tastera u <acronym
>KDE</acronym
></title>

<para
>Mnoge moderne tastature sadrže dopunske tastere kojima podrazumevano nisu dodeljene nikakve radnje.</para>

<para
>„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.</para>

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

<procedure>
<step
><para
>Koristite <command
>xev</command
> za nalaženje kôda tastera. U ovom slučaju, to su 233 i 234. </para
></step>
<step
><para
>Izaberite simbole tastera. Postoji priličan opseg podrazumevano nekorišćenih, pa su mnogi slobodni. Spisak možete naći u <filename
>/usr/X11R6/include/X11/keysymdef.h</filename
>, ili ekvivalentu na vašem sistemu.</para
></step>
<step
><para
>Ako ga nema, napravite u domaćoj fascikli fajl po imenu <filename
>.Xmodmap</filename
>, i dodajte mu ovo:</para>
<screen
>keycode 233 = Next_Virtual_Screen
keycode 234 = Prev_Virtual_Screen</screen>
</step>
<step
><para
>Izdajte naredbu <userinput
><command
>xmodmap</command
><filename
>~/.Xmodmap</filename
></userinput
>.</para
></step>
</procedure>

<para
>Ponovo pokrenite <command
>xev</command
> 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.</para>

<itemizedlist>
<title
>Srodne informacije</title>
<listitem
><para
>Uputnu stranicu za <command
>xev</command
> možete dobiti upisivanjem <userinput
>man:/xev</userinput
> u prozoru <application
>K‑osvajača</application
>, ili <userinput
><command
>man</command
>xev</userinput
> u terminalu.</para
></listitem>
</itemizedlist>

</sect1>

<sect1 id="keys-for-scripts">
<title
>Dodavanje sveza tastera za nove radnje</title>

<para
>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.</para>

<para
>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 <xref linkend="adding-extra-keys"/> 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 <xref linkend="scripting-the-desktop"/>.</para>

<para
>Ovo je lako uraditi korišćenjem sledećeg metoda:</para>

<procedure>
<step>
<para
>Otvorite <application
>K‑kontrolu</application
> i pod <guilabel
>Administracija računara</guilabel
> izaberite <guilabel
>Akcije unosa</guilabel
>.</para>
</step>
<step>
<para
>Izaberite <guibutton
>Nova radnja</guibutton
>.</para>
</step>
<step>
<para
>Imenujte novu radnju, npr. <userinput
>Sledeći virtuelni ekran</userinput
>.</para>
</step>
<step>
<para
>Pod <guilabel
>Tip radnje:</guilabel
> izaberite <guilabel
>Prečica s tastature->||Naredba/URL (jednostavna)</guilabel
>.</para>
</step>
<step>
<para
>Pod jezičkom <guilabel
>Prečica s tastature</guilabel
>, 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 <keysym
>Next_Virtual_Screen</keysym
>.</para>
</step>
<step>
<para
>Pod jezičkom <guilabel
>Postavke naredbe/URL‑a</guilabel
>, u polju upišite naredbu za izvršavanje: <userinput
><command
>dcop kwin default nextDesktop</command
></userinput
>.</para>
</step>
</procedure>

<para
>Ponovite prethodno sa tasterom <keysym
>Prev_Virtual_Screen</keysym
> i <userinput
><command
>dcop kwin default previousDesktop</command
></userinput
>.</para>

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

<para
>Očigledno, bilo kojoj radnji možete dodeliti bilo koji slobodan taster.</para>

<itemizedlist>
<title
>Srodne informacije</title
> 
<listitem
><para
>Pogledajte dokumentaciju K‑prečica u <application
>K‑centru-pomoći</application
>, ili upisivanjem <userinput
>help:/khotkeys</userinput
> prozoru <application
>K‑osvajača</application
>.</para
></listitem
> 
<listitem
><para
><xref linkend="adding-extra-keys"/></para
></listitem>
<listitem
><para
><xref linkend="scripting-the-desktop"/></para
></listitem>
</itemizedlist>

</sect1>

<sect1 id="kdebugdialog">
<sect1info>
<authorgroup>
<author
><personname
><firstname
>Adrijan</firstname
> <surname
>de Grot</surname
></personname
> <email
>groot@kde.org</email
> </author>
</authorgroup>
</sect1info>

<title
><application
>K‑ispravljački-dijalog</application
> — upravljanje ispravljačkim izlazom <acronym
>KDE‑a</acronym
></title>

<sect2 id="kdebugdialog-basic-usage">
<title
>Osnovno korišćenje</title>

<para
><application
>K‑ispravljački-dijalog</application
> podrazumevano nije u KMenuju. Pokrećete ga ili iz školjke ili iz mini-CLI‑a, naredbom <userinput
><command
>kdebugdialog</command
></userinput
>. 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 <acronym
>KDE‑a</acronym
> uključio ili isključio.</para>

<para
>Ispravljačke oblasti na spisku poređane su numerički umesto abecedno, pa <literal
>kio (127)</literal
> dolazi pre <literal
>artskde (400)</literal
>. 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 <userinput
>k</userinput
> malo će toga biti filtrirano, ali upisivanjem <userinput
>kont</userinput
> preostati samo ispravljačke oblasti <application
>Kontacta</application
>. Za još brže uključivanje i isključivanje ispravljačkog izlaza, tu su dugmad <guibutton
>Izaberi sve</guibutton
> i <guibutton
>Poništi izbor</guibutton
>, koja će navesti <acronym
>KDE</acronym
> da ispisuje more ispravljačkog izlaza, ili vrlo malo toga.</para>
</sect2>

<sect2 id="kdebugdialog-fullmode">
<title
><application
>K‑ispravljački-dijalog</application
> u punom režimu</title>

<!-- this text partly taken from the kdebugdialog handbook -->

<para
>U punom režimu, onom koji dobijate kad <application
>K‑ispravljački-dijalog</application
> pokrenete pomoću <userinput
><command
>kdebugdialog</command
><option
>--fullmode</option
></userinput
>, 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:</para>

<para
><guilabel
>fajl</guilabel
> — unosite ime fajla, koji će biti upisan u vašu domaću fasciklu ($<envar
>HOME</envar
>);</para>

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

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

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

<para
><guilabel
>nigde</guilabel
> — suzbija izlaz ovog tipa poruka.</para>

<para
>Obično nije pametno izabrati <guilabel
>nigde</guilabel
> ili <guilabel
>sistemski dnevnik</guilabel
> 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 <guilabel
>Obustavi pri kobnoj greški</guilabel
>, 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.</para>

<!-- Add links to "further reading" here -->
<!-- <itemizedlist>
<title
>Related Information</title>
<listitem
><para
>to be written</para>
</listitem>
</itemizedlist
>-->



</sect2>
</sect1>
</chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: xml
sgml-omittag:nil
sgml-shorttag:nil
sgml-namecase-general:nil
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:0
sgml-indent-data:true
sgml-parent-document:("index.docbook" "book" "chapter")
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
