<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
>Чачкање под хаубом <acronym
>КДЕ‑а</acronym
></title>

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

<sect1info>
<author
><personname
><firstname
>Николас</firstname
><surname
>Гут (Nicolas Goutte)</surname
></personname
> <email
>goutte@kde.org</email
> </author>
</sect1info>

<title
>Ручно уређивање поставних фајлова</title>

<sect2 id="hand-editing-intro">
<title
>Увод</title>
<para
>Пошто су поставни фајлови у <acronym
>КДЕ‑у</acronym
> текстуални, дају се лако уређивати општим уређивачем текста попут <application
>Кејт</application
>.</para>

<para
>Пример текстуалног фајла:</para>

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

<para
>Поставни фајлови посебни по кориснику складиште се у <filename class="directory"
>.kde/share/config</filename
> (где <filename
>.kde</filename
> треба заменити оним из $<envar
>KDEHOME</envar
>, ако је постављена), а глобални у потфасцикли <filename class="directory"
>share/config</filename
> инсталационе путање <acronym
>КДЕ‑а</acronym
> (коју можете наћи издавањем наредбе <command
>kde4-config --prefix</command
>). Имена поставних фајлова обично се завршавају са <literal
>rc</literal
> (без претходеће тачке), нпр. <filename
>kopeterc</filename
>.</para>

<warning
><para
>Ручно уређивање поставних фајлова може бити ризично по инсталацију <acronym
>КДЕ‑а</acronym
>. Програми обично не проверавају оно што читају из поставних фајлова, што значи да могу бити пометени погрешкама у њима, па се чак и срушити.</para
></warning>

</sect2>

<sect2 id="hand-editing-backups">
<title
>Резерве</title>

<para
>Главно правило гласи: направите резерву фајла пре било каквих измена. Резерву је боље чувати потпуно изван фасцикле <filename class="directory"
>.kde</filename
> (или оне задате са $<envar
>KDEHOME</envar
>) и њених потфасцикли. Резерве је и иначе паметно правити, у случају озбиљних проблема с <acronym
>КДЕ‑ом</acronym
> који би уништили важне поставне фајлове (на пример, поставке <application
>К‑поште</application
> које се налазе у <filename
>kmailrc</filename
>). Наравно, до овако озбиљне неприлике не би требало да дође, али никад се не зна.</para>
</sect2>

<sect2 id="hand-editing">
<title
>Уређивање</title>

<para
>Зашто бисте уопште дирали поставне фајлове? Рецимо, зато што морате ако желите да наметнете режим Киоска. Затим, можда вас програмер замоли да додате одређени унос, како би могао реши неки проблем са програмом. Можда пожелите да се решите проблема без уклањања целе фасцикле <filename class="directory"
>.kde</filename
>. Или да научите више о дубинама <acronym
>КДЕ‑а</acronym
>.</para>

<para
>Било како било, из којег год разлога, претпоставимо да желите ручно да измените поставни фајл.</para>

<para
>Када сте намерили да уредите поставни фајл, побрините се да програм којем припада није у погону. Ако је то неки од основних поставних фајлова, може бити боље да га уређујете док <acronym
>КДЕ</acronym
> у целини није покренут.</para>

<para
>Спремни? Онда да направимо резерву фајла (јесам ли то већ поменуо?). Покрените омиљени уређивач — претпоставимо да је то <application
>Кејт</application
> — и учитајте фајл (пазите да учитате као УТФ‑8, што <application
>Кејт</application
> наводи као <literal
>utf8</literal
>).</para>

<para
>Структура фајла ће бити оваква:</para>

<programlisting
>[Group]
кључ1=вредност1
кључ2=вредност2
кључ3=вредност3</programlisting>

<para
>Фајл сада можете изменити (пажљиво!) и сачувати га (пазите да то опет буде као УТФ‑8).</para>

<para
>Потом испробајте програм. Ако више не ради како би требало, затворите га и вратите резерву поставног фајла.</para>

<itemizedlist>
<title
>Сродне информације</title>


<listitem
><para
><xref linkend="kde-for-administrators"/> садржи више информација о <acronym
>КДЕ‑овој</acronym
> структури фасцикли, како бисте пронашли фајл који желите да уредите.</para>
</listitem>

</itemizedlist>

</sect2>

</sect1>

<sect1 id="scripting-the-desktop">
<title
>Скриптовање површи</title>

<para
><acronym
>КДЕ</acronym
> пружа моћан систем међупроцесне комуникације у виду ДКОП‑а, комуникационог протокола радне површи. ДКОП‑ом можете управљати широким опсегом функција у <acronym
>КДЕ‑у</acronym
>, из командне линије или скрипте написане на вама омиљеном скриптном језику. Такође можете прибављати податке из <acronym
>КДЕ</acronym
> програма; на пример, неколицина <acronym
>КДЕ</acronym
> медија плејера обезбеђује методе упита за податке о текућој нумери.</para>

<para
>Уопште, сваки <acronym
>КДЕ</acronym
> програм обезбеђује једно или више ДКОП <firstterm
>сучеља</firstterm
>, која пак обезбеђују методе (или функције, ако вам је драже) које други програм може позвати. Дакле, за употребу ДКОП‑а први корак је пронаћи подесан метод за задатак. То је најлакше извести <application
>К‑ДКОП‑ом</application
>, графичким сучељем ка доступним ДКОП методима.</para>

<para
>Покрените <application
>К‑ДКОП</application
> из <application
>Конзоле</application
> или мини‑ЦЛИ‑а (прозор који искаче на <keycombo action="simul"
><keycap
>Alt</keycap
><keycap
>F2</keycap
></keycombo
>). Прозор <application
>К‑ДКОП‑а</application
> приказује текуће програме који пружају ДКОП сучеља, распоређене у стаблу. Налажење исправног метода генерално изискује нешто претраге кроз стабло, при чему је корисно знати да сучеље обележено као <literal
>(default)</literal
> обично садржи најчешће коришћене функције.</para>



<para
>Да бисте испробали ради ли функција оно што очекујете, кликните на ставку <guilabel
>setColor</guilabel
>. За постављање боје <varname
>c</varname
> кликните на дугме бирача боја и изаберите боју. Кућицом подесите да ли боја треба да буде боја <literal
>A</literal
>. Кликните на <guilabel
>У реду</guilabel
> и боја позадине је постављена.</para>

<para
>За приступ ДКОП методу из омиљеног вам скриптног језика, можете користити или ДКОП свезе, ако су расположиве у модулу <literal
>kdebindings</literal
>, или позивати наредбу командне линије <command
>dcop</command
>. За једноставне потребе наредба <command
>dcop</command
> сасвим је довољна. Да позовете ДКОП метод из командне линије, треба да задате програм и сучеље које поседује метод, сам метод и његове аргументе, у облику погодном за шкољку.</para>

<para
>Програм, сучеље и метод задају се тим редоследом, а затим следе аргументи оним редоследом којим их наводи <application
>К‑ДКОП</application
>. <command
>dcop</command
> још многе опције — проучите испис <userinput
><command
>dcop</command
> <option
>--help</option
></userinput
>.</para>

<para
>Доста теорије, време је за пример:</para>

<example>
<title
>Скрипта за измену боје позадине ДКОП‑ом</title>

<para
>Наредбом командне линије <command
>dcop</command
> и с нешто перла, направићемо једноставну скрипту која полако кружи позадину површи кроз спектар боја.</para>

<para
>Прво да потражимо подесан метод <application
>К‑ДКОП‑ом</application
>. У овом примеру прескочићемо корак претраге, и одмах прећи на њега: метод који тражимо је <menuchoice
><guimenu
>kdesktop</guimenu
><guisubmenu
>KBackgroundIface</guisubmenu
><guimenuitem
>setColor</guimenuitem
> </menuchoice
>. Аргументи и повратни тип функције приказани су у стилу Ц++а. За <methodname
>setColor</methodname
> аргументи су боја <varname
>c</varname
>, која одређује нову боју позадине, и логичка вредност (тачно-нетачно) <varname
>isColorA</varname
>, која одређује да ли је боја прва или друга (корисно за постављање прелива, итд.)</para>

<para
>Метод <methodname
>setColor</methodname
> позовимо кроз командну линију овако: <screen
><prompt
>%</prompt
> <userinput
><command
>dcop</command
>  kdesktop KBackgroundIface setColor '#ffffff' false</userinput
>.
</screen>
</para>

<para
>Да задамо боју употребили смо хексадекадну РГБ вредност, какве се користе у ХТМЛ‑у. Запазите да је окружена једноструким наводницима како би се <token
>#</token
> заштитио од шкољке.</para>

<para
>За изналажење хексадекадних РГБ вредности боја, отворите било који дијалог бирача боја у неком <acronym
>КДЕ</acronym
> програму — на пример, у Контролном центру, <menuchoice
><guimenu
>Изглед</guimenu
><guimenuitem
>Боје</guimenuitem
> </menuchoice
> — одаберите жељену боју и прочитајте вредност дату пољем <guilabel
>ХТМЛ:</guilabel
>.</para>


<para
>Ето, то је све што нам треба од ДКОП‑а, сад само да напишемо скрипту око њега. Ево врло (грубе!) изведбе: <programlisting
><![CDATA[
$min=49;  # mинимална вредност Р, Г, или Б боје
$max=174; # maксимална вредност Р, Г, или Б боје
$step=5;  # промена боје по сваком кораку
$sleeptime=15; # интервал у секундама између корака

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

while (1) {
        foreach (0..5) {
                my $which = $_ % 3; # коју боју (Р, Г, Б) изменити
                my $updown = $_ % 2; # увећати или смањити вредност боје
                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
>Извршите скрипту без икаквих аргумената, и боје позадине кружиће кроз благо пригушен спектар, све док се скрипта не прекине. <foreignphrase
>Voilà</foreignphrase
>!</para>

</example>

<para
>Наравно да перл није једини језик којим можете писати скрипте са ДКОП‑ом — ако вам је драже скриптовање у шкољци, и оно је доступно.</para>

<example>
<title
>Постављање позадине са Интернета</title>

<para
>Следећа скрипта добавља главну слику из стрипа <ulink url="http://www.userfriendly.org/"
>„Предусретљиво“</ulink
> и поставља је као тапет површи, користећи општеприсутне алатке и нешто ДКОП‑а.</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
>Први ред после <literal
>#!/bin/sh</literal
> користи <command
>wget</command
> и нешто магије регуларних израза да извуче локацију слике из ХТМЛ извора главе странице. Други и трећи ред преузимају слику, и <command
>dcop</command
> најзад поставља преузету слику као тапет.</para>

</example>


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


</sect1>


<sect1 id="adding-extra-keys">
<title
>Додавање допунских свеза тастера у <acronym
>КДЕ</acronym
></title>

<para
>Многе модерне тастатуре садрже допунске тастере којима подразумевано нису додељене никакве радње.</para>

<para
>„Мултимедијски“ тастери често стварају сигнал, па се свеза тастера унутар програма може задати једноставно као и за било који други тастер. Међутим, неки тастери остају неоткривени и њихово притискање у подешавању пречица нема ефекта.</para>

<para
>На пример, неки ИБМ‑ови лаптопови имају допунске тастере око стрелица лево и десно, који личе на страницу лево и страницу десно.</para>

<procedure>
<step
><para
>Користите <command
>xev</command
> за налажење кôда тастера. У овом случају, то су 233 и 234. </para
></step>
<step
><para
>Изаберите симболе тастера. Постоји приличан опсег подразумевано некоришћених, па су многи слободни. Списак можете наћи у <filename
>/usr/X11R6/include/X11/keysymdef.h</filename
>, или еквиваленту на вашем систему.</para
></step>
<step
><para
>Ако га нема, направите у домаћој фасцикли фајл по имену <filename
>.Xmodmap</filename
>, и додајте му ово:</para>
<screen
>keycode 233 = Next_Virtual_Screen
keycode 234 = Prev_Virtual_Screen</screen>
</step>
<step
><para
>Издајте наредбу <userinput
><command
>xmodmap</command
><filename
>~/.Xmodmap</filename
></userinput
>.</para
></step>
</procedure>

<para
>Поново покрените <command
>xev</command
> да проверите да ли тастери после овог генеришу симболе које сте доделили. Ако је то случај, можете их доделити било којој радњи као и обично.</para>

<itemizedlist>
<title
>Сродне информације</title>
<listitem
><para
>Упутну страницу за <command
>xev</command
> можете добити уписивањем <userinput
>man:/xev</userinput
> у прозору <application
>К‑освајача</application
>, или <userinput
><command
>man</command
>xev</userinput
> у терминалу.</para
></listitem>
</itemizedlist>

</sect1>

<sect1 id="keys-for-scripts">
<title
>Додавање свеза тастера за нове радње</title>

<para
>Већина радњи, или на површи или у програмима, већ су расположиве за доделу свеза. Ако сте сами написали радњу за коју желите пречицу, или друкчије није расположива, пречицу свеједно можете доделити.</para>

<para
>Да спојимо две претходне секције, можда ћете хтети да иначе неискоришћен тастер доделите некој скрипти или ДКОП наредби. За пример, два тастера која смо додали у <xref linkend="adding-extra-keys"/> доделимо сада за прелаз на претходну или следећу виртуелну површ. То су две функције за које ће вам требати ДКОП, као што смо изнели у <xref linkend="scripting-the-desktop"/>.</para>

<para
>Ово је лако урадити коришћењем следећег метода:</para>

<procedure>
<step>
<para
>Отворите <application
>К‑контролу</application
> и под <guilabel
>Администрација рачунара</guilabel
> изаберите <guilabel
>Акције уноса</guilabel
>.</para>
</step>
<step>
<para
>Изаберите <guibutton
>Нова радња</guibutton
>.</para>
</step>
<step>
<para
>Именујте нову радњу, нпр. <userinput
>Следећи виртуелни екран</userinput
>.</para>
</step>
<step>
<para
>Под <guilabel
>Тип радње:</guilabel
> изаберите <guilabel
>Пречица с тастатуре->||Наредба/УРЛ (једноставна)</guilabel
>.</para>
</step>
<step>
<para
>Под језичком <guilabel
>Пречица с тастатуре</guilabel
>, притисните тастер који желите да окида наредбу. У овом примеру, то би било оно са насликаном следећом страницом. На слици тастера појавиће се <keysym
>Next_Virtual_Screen</keysym
>.</para>
</step>
<step>
<para
>Под језичком <guilabel
>Поставке наредбе/УРЛ‑а</guilabel
>, у пољу упишите наредбу за извршавање: <userinput
><command
>dcop kwin default nextDesktop</command
></userinput
>.</para>
</step>
</procedure>

<para
>Поновите претходно са тастером <keysym
>Prev_Virtual_Screen</keysym
> и <userinput
><command
>dcop kwin default previousDesktop</command
></userinput
>.</para>

<para
>Од сада ће вас притисак на <keysym
>Prev_Virtual_Screen</keysym
> или <keysym
>Next_Virtual_Screen</keysym
> пребацивати на претходну или следећу виртуелну површ, тим редом.</para>

<para
>Очигледно, било којој радњи можете доделити било који слободан тастер.</para>

<itemizedlist>
<title
>Сродне информације</title
> 
<listitem
><para
>Погледајте документацију К‑пречица у <application
>К‑центру-помоћи</application
>, или уписивањем <userinput
>help:/khotkeys</userinput
> прозору <application
>К‑освајача</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
>Адријан</firstname
><surname
>де Грот (Adriaan de Groot)</surname
></personname
> <email
>groot@kde.org</email
> </author>
</authorgroup>
</sect1info>

<title
><application
>К‑исправљачки-дијалог</application
> — управљање исправљачким излазом <acronym
>КДЕ‑а</acronym
></title>

<sect2 id="kdebugdialog-basic-usage">
<title
>Основно коришћење</title>

<para
><application
>К‑исправљачки-дијалог</application
> подразумевано није у К‑менију. Покрећете га или из шкољке или из мини‑ЦЛИ‑а, наредбом <userinput
><command
>kdebugdialog</command
></userinput
>. Искочиће прозор са дугим списком исправљачких области. Свако од њих има кућицу која се може попунити и испразнити, како би се исправљачки излаз за ту област <acronym
>КДЕ‑а</acronym
> укључио или искључио.</para>

<para
>Исправљачке области на списку поређане су нумерички уместо абецедно, па <literal
>kio (127)</literal
> долази пре <literal
>artskde (400)</literal
>. Бројеви расту до око 200000, но заправо постоји само око 400 подручја. Ипак, не морате клизати кроз цео списак да нађете жељену област. На врху дијалога стоји поље у које можете уписати део имена области, када ће списак бити филтриран да садржи само оне области које садрже унети текст. На пример, уписивањем <userinput
>k</userinput
> мало ће тога бити филтрирано, али уписивањем <userinput
>kont</userinput
> преостати само исправљачке области <application
>Контакта</application
>. За још брже укључивање и искључивање исправљачког излаза, ту су дугмад <guibutton
>Изабери све</guibutton
> и <guibutton
>Поништи избор</guibutton
>, која ће навести <acronym
>КДЕ</acronym
> да исписује море исправљачког излаза, или врло мало тога.</para>
</sect2>

<sect2 id="kdebugdialog-fullmode">
<title
><application
>К‑исправљачки-дијалог</application
> у пуном режиму</title>

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

<para
>У пуном режиму, оном који добијате кад <application
>К‑исправљачки-дијалог</application
> покренете помоћу <userinput
><command
>kdebugdialog</command
><option
>--fullmode</option
></userinput
>, дат је исти скуп исправљачких области као у обичном режиму, али у падајућем списку тако да их бирате једну по једну. Испод можете независно поставити излаз за разне типове порука — информације, упозорења, грешке и кобне грешке. За сваки тип можете изабрати да ли се поруке шаљу у:</para>

<para
><guilabel
>фајл</guilabel
> — уносите име фајла, који ће бити уписан у вашу домаћу фасциклу ($<envar
>HOME</envar
>);</para>

<para
><guilabel
>дијалог с поруком</guilabel
> — свака исправљачка порука приказује се у дијалогу, у којем морате кликнути на <guibutton
>У реду</guibutton
> да наставите с програмом;</para>

<para
><guilabel
>шкољку</guilabel
> — (подразумевана ставка) поруке се исписују на стдгр, и појављују или прозору шкољке у којој је програм покренут, или у <filename
>~/.xsession-errors</filename
>;</para>

<para
><guilabel
>системски дневник</guilabel
> — шаље исправљачку поруку системском дневнику, који може да изврши сопствену обраду поруке;</para>

<para
><guilabel
>нигде</guilabel
> — сузбија излаз овог типа порука.</para>

<para
>Обично није паметно изабрати <guilabel
>нигде</guilabel
> или <guilabel
>системски дневник</guilabel
> за поруке о кобним грешкама, јер у оба случаја поруку највероватније нећете видети, а програм који сусретне кобну грешку нестаће без трага. Да ли ће програм испарити при кобним грешкама можете одредити кућицом <guilabel
>Обустави при кобној грешки</guilabel
>, која је подразумевано попуњена — но свеједно можете очекивати да се програм сруши (и то врло неуређено) ако дође до кобне грешке.</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:
-->
