<part id="kde-for-administrators">
<partinfo>
<authorgroup>
<author
><personname
> <firstname
>Waldo</firstname
> <surname
>Bastian</surname
> </personname
> <email
>bastian@kde.org</email
> </author>
<othercredit role="reviewer"
>&Philip.Rodrigues; &Philip.Rodrigues.mail; </othercredit>
</authorgroup>
</partinfo>

<title
>&kde; для адміністраторів</title>

<chapter id="kde-internals">
<title
>Нутрощі &kde;</title>

<sect1 id="kde-for-admins-overview">
<title
>Огляд</title>
<para
>ще не написано</para>
</sect1>

<sect1 id="directory-layout">
<title
>Компонування каталогів</title>

<para
>У &kde; визначено ієрархію файлової системи, яка використовується як самим середовищем &kde;, так і всіма програмами &kde;. Загалом кажучи, &kde; зберігає всі свої файли у дереві каталогів з фіксованою структурою. </para>

<para
>Типово, &kde; використовує два дерева каталогів:</para>

<itemizedlist>
<listitem
><para
>Одне на системному рівні (наприклад, <filename class="directory"
>/opt/kde3</filename
>).</para
></listitem>
<listitem
><para
>Одне на рівні каталогу домівки користувача (зазвичай. <filename class="directory"
> ~/.kde</filename
>)</para
></listitem>
</itemizedlist>

<para
>Як системний адміністратор, ви можете створити додаткові дерева. Такими додатковими деревами можна скористатися для зберігання <link linkend="user-profiles"
>профілів</link
>.</para>

<informalexample
><para
>Наприклад, у &SuSE; &Linux; використовується:</para>

<itemizedlist>
<listitem
><para
><filename
class="directory"
>$<envar
>HOME</envar
>/.kde</filename
></para
></listitem>
<listitem
><para
><filename class="directory"
>/opt/kde3</filename
>. (Характерно для &SuSE;; у інших дистрибутивах може використовуватися <filename class="directory"
>/usr</filename
> або <filename class="directory"
>/usr/kde3</filename
>)</para
></listitem>
<listitem
><para
><filename class="directory"
>/etc/opt/kde3</filename
>. (Цей каталог було додано &SuSE;).</para
></listitem>
</itemizedlist>

<para
>Якщо у вашій системі встановлено KIOSK Admin tool v0.7 або пізнішу версію, ви можете визначити, які дерева каталогів використовуються, такою командою: <userinput
><command
>kiosktool-kdedirs</command
> <option
>--check</option
></userinput
></para>
</informalexample>

<para
>&kde; і програми &kde; виконують пошук потрібних файлів у всіх деревах каталогів &kde;. Пошук у деревах каталогів виконується за порядком пріоритетності. Якщо потрібний файл присутній у декількох деревах каталогів, пріоритетним буде файл з останнього з каталогів, дерево, розташоване у домашньому каталозі користувача має найвищий пріоритет. Крім того, до цього дерева каталогів записуються всі внесені зміни.</para>

<informalexample>
<para
>Для встановлення відомостей щодо типу &MIME; <literal
>text/plain</literal
> буде виконано пошук таких файлів:</para>

<itemizedlist>
<listitem
><para
><filename
class="directory"
>$<envar
>HOME</envar
>/.kde/share/mimelnk/text/plain.desktop</filename
></para
></listitem>
<listitem
><para
><filename
class="directory"
>/opt/kde3/share/mimelnk/text/plain.desktop</filename
></para
></listitem>
<listitem
><para
><filename
class="directory"
>/etc/opt/kde3/share/mimelnk/text/plain.desktop</filename
></para
></listitem>
</itemizedlist>

<para
>Якщо користувач внесе зміни, ці зміни буде записано до файла <filename class="directory"
>$<envar
>HOME</envar
>/.kde/share/mimelnk/text/plain.desktop</filename
></para>
</informalexample>

<para
>З файлами налаштувань середовище поводиться трохи інакше. Якщо у деревах каталогів буде знайдено декілька файлів налаштувань з однаковою назвою, їх вміст буде об’єднано. Тут теж має значення пріоритет дерев каталогів. Якщо у двох файлах визначено один і той же ключ налаштувань, значення ключа визначатиметься за тим файлом, який має вищий пріоритет.</para>

<informalexample
><para
>Нехай існує два файли, вміст яких наведено нижче:</para>
<variablelist>
<varlistentry
><term
><filename
>$<envar
>HOME</envar
>/.kde/share/config/foobar</filename
></term>
<listitem
><programlisting
>Color=red
Shape=circle
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename
>/etc/opt/kde3/share/config/foobar</filename
></term>
<listitem
><programlisting
>Color=blue
Position=10,10
</programlisting>
</listitem>
</varlistentry>
</variablelist>

<para
>Результатом об’єднання файлів буде файл:</para>

<programlisting
>Color=red
Shape=circle
Position=10,10
</programlisting>

</informalexample>
</sect1>

<sect1 id="specifying-directories">
<title
>Визначення каталогів</title>

<para>

<segmentedlist>
<segtitle
>Змінна середовища</segtitle>
<segtitle
>Приклад параметрів</segtitle>
<segtitle
>Коментар</segtitle>

<seglistitem>
<seg
><envar
>KDEHOME</envar
></seg>
<seg
><filename class="directory"
>~/.kde</filename
></seg>
<seg
></seg>
</seglistitem>

<seglistitem>
<seg
><envar
>KDEROOTHOME</envar
></seg>
<seg
><filename class="directory"
>/root/.kde</filename
></seg>
<seg
>Різні змінні призначено для того, щоб адміністратор (root) не записував налаштувань до $KDEHOME користувача після запуску команд за допомогою <command
>su</command
>.</seg>
</seglistitem>

<seglistitem>
<seg
><envar
>KDEDIR</envar
></seg>
<seg
><filename class="directory"
>/opt/kde3</filename
>, <filename class="directory"
>/usr</filename
>, <filename class="directory"
>/usr/kde3</filename
></seg>
<seg
>Залежить від вашого дистрибутива. Використовується &kde; 2. Якщо не встановлено значення, використовується типове значення, визначене під час збирання середовища.</seg>
</seglistitem>

<seglistitem>
<seg
><envar
>KDEDIRS</envar
></seg>
<seg
><filename class="directory"
>/opt/kde3</filename
>, <filename class="directory"
>/usr</filename
>, <filename class="directory"
>/usr/kde3</filename
></seg>
<seg
>Нова змінна у &kde;3. Може вказувати на декілька тек, відокремлених у списку двокрапками. Якщо значення не встановлено, використовується значення змінної $<envar
>KDEDIR</envar
></seg>
</seglistitem>

</segmentedlist>
</para>
<para
><emphasis
>Не потрібно</emphasis
> встановлювати, типові параметри мають працювати.</para>
<para
>Запускаєте одночасно &kde;2 і &kde;3? Вкажіть для змінної $<envar
>KDEDIR</envar
> теки, що відповідає &kde; 2, а для змінної $<envar
>KDEDIRS</envar
> — теки &kde; 3.</para>

<informalexample>
<para
>Для представника персоналу обслуговування комп’ютерів університету підійдуть такі параметри:</para>
<programlisting
>KDEHOME='~/.kde3'
KDEROOTHOME='/root/.kde3'
KDEDIRS='/opt/kde_staff:/opt/kde3'
</programlisting>

</informalexample>

</sect1>

<sect1 id="user-profiles">
<title
>Профілі користувачів</title>

<para
>У попередньому прикладі у <filename class="directory"
>/opt/kde_staff</filename
> містилися додаткові параметри і програми для персоналу. За допомогою <quote
>профілів користувачів</quote
> ви можете додати цей каталог лише для певних користувачів і заборонити доступ до нього іншим. Додайте такі рядки до файла <filename
>/etc/kderc</filename
>:</para>

<programlisting
>[Directories-staff]
prefixes=/opt/kde_staff
</programlisting>

<para
>Таким чином ви створите профіль з назвою <quote
>staff</quote
> (персонал), у якому буде додано дерево каталогів <filename class="directory"
>/opt/kde_staff</filename
>. (Зауважте, що у &SuSE; &Linux; використовується файл <filename
>/etc/kde3rc</filename
>, а не файл <filename
>/etc/kderc</filename
>). Тепер, коли у нас є профіль з назвою, ми можемо призначати його певним користувачам.</para>

<para
>Для прив’язки профілів до користувачів слід вказати файл прив’язки у каталозі <filename
>/etc/kderc</filename
>:</para>

<programlisting
>[Directories]
userProfileMapFile=/etc/kde-user-profile
</programlisting>

<para
>Тепер можна призначати профілі на основі або імені користувача, або групи користувачів &UNIX;, до якої належить цей користувач.</para
> 

<para
>Щоб призначити профіль «staff» всім користувачам, які є членами групи &UNIX; з назвою staff_members, додайте такі рядки до файла <filename
>/etc/kde-user-profile</filename
>:</para>

<programlisting
>[General]
groups=staff_members
[Groups]
staff_members=staff
</programlisting>

<para
>Крім того, призначати профіль можна і окремому користувачеві:</para>

<programlisting
>[Users]
bastian=staff
</programlisting>

</sect1>

<sect1 id="directory-layout-revisited">
<title
>Ще раз про структуру каталогів</title>

<para
>Кожне з дерев каталогів, які використовуються &kde;, має фіксовану структуру каталогів. Каталоги, що не належать до певного дерева або просто не використовуються, не належать до структури. Наприклад, каталоги, що використовуються для тимчасових файлів, зазвичай, можна знайти лише у <filename class="directory"
>$<envar
>KDEHOME</envar
></filename
>, їх просто немає у інших деревах каталогів.</para>

</sect1>

<sect1 id="architecture-specific-directories">
<title
>Каталоги, специфічні для архітектури системи</title>

<para
>Каталоги, специфічні для архітектури (операційної системи і типу процесора) системи:</para>

<variablelist>
<varlistentry>
<term
><filename class="directory"
>bin</filename
></term>
<listitem
><para
>Використовується для файлів програм &kde;.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>lib</filename
></term>
<listitem
><para
>Використовується для бібліотек &kde;.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>lib/kde3</filename
></term>
<listitem
><para
>У цьому каталозі містяться компоненти, додатки та інші об’єкти, що завантажуються динамічно програмами &kde; 3.<replaceable
>x</replaceable
>.</para
></listitem
> 
</varlistentry>
</variablelist>

</sect1>

<sect1 id="shared-directories">
<title
>Спільні каталоги</title>

<para
>Спільні: ніякої різниці для різних архітектур, може бути спільно використано для різних архітектур.</para>

<variablelist>
<varlistentry>
<term
><filename class="directory"
>share/applnk</filename
></term>
<listitem
><para
>Файли <literal role="extension"
>.desktop</literal
> для меню &kde; (застарілі)</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/applications</filename
></term>
<listitem
><para
>Файли <literal role="extension"
>.desktop</literal
> для меню &kde; (починаючи з версії &kde; 3.2)</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/apps</filename
></term>
<listitem
><para
>Тут містяться файли даних програм. У кожної з програм цього каталогу є власний підкаталог, у якому зберігаються додаткові файли даних.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/config</filename
></term>
<listitem
><para
>Тут містяться файли налаштування. Файли налаштування, зазвичай, мають назву, що починається з назвою програми, якій вони належать, і завершується літерами <quote
>rc</quote
>. Особливим випадком є  файл <filename
>kdeglobals</filename
>. Цей файл налаштувань читають всі програми &kde;.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename
class="directory"
>share/config/session</filename
></term>
<listitem
><para
>Цей каталог використовується інструментом керування сеансами, його, зазвичай, можна знайти лише у дереві <filename class="directory"
>$<envar
>KDEHOME</envar
></filename
>. Наприкінці сеансу у цьому каталозі зберігають свій стан програми &kde;. Назви файлів каталогу складаються з назви відповідної програми з доданим числом. Інструмент керування сеансами, <command
>ksmserver</command
>, зберігає посилання на ці числа під час збереження сеансу у файлів <filename
>ksmserverrc</filename
>.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/doc/HTML</filename
></term>
<listitem
><para
>У цьому каталозі міститься документація щодо програм &kde;. Документацію розподілено за мовами і програмами, до яких вона належить. Зазвичай, у кожному з підкаталогів можна знайти два файли: файл <filename
>index.docbook</filename
>, у якому міститься документація у форматі DocBook без форматування, і файл <filename
>index.cache.bz2</filename
>, у якому міститься та сама документація, але форматована як стиснутий <command
>bzip2</command
> &HTML;. &HTML;-версію використовує Центр довідки. Якщо &HTML;-версія відсутня, Центр довідки створить її з версії DocBook, але цей процес може тривати досить довго.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/icons</filename
></term>
<listitem
><para
>У цьому каталозі зберігаються піктограми. Піктограми впорядковано за темами, розмірами і призначенням.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/mimelnk</filename
></term>
<listitem
><para
>У цьому каталозі зберігаються файли <literal role="extension"
>.desktop</literal
>, у яких описано типи &MIME;. &kde; використовує типи &MIME; для визначення типу файла.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/services</filename
></term>
<listitem
><para
>У цьому каталозі містяться файли <literal role="extension"
>.desktop</literal
>, у яких описано служби. Служби схожі на програми, але, зазвичай, запускаються не користувачем, а іншими програмами. Пунктів служб немає у меню &kde;.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/servicetypes</filename
></term>
<listitem
><para
>У цьому каталозі містяться файли <literal role="extension"
>.desktop</literal
>, які описують типи служб. Зазвичай, типу служб відповідає певний програмний інтерфейс. Програми і служби мають відповідні записи у файлах <literal role="extension"
>.desktop</literal
> щодо типів служб, які надають.</para
> </listitem
></varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/sounds</filename
></term>
<listitem
><para
>У цьому каталозі містяться звукові файли.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/templates</filename
></term>
<listitem
><para
>У цьому каталозі містяться шаблони для створення файлів різних типів. Шаблон складається з файла <literal role="extension"
>.desktop</literal
>, у якому описано файл і міститься посилання на файл у підкаталозі <filename class="directory"
>.source</filename
>. Шаблонам з цього підкаталогу відповідають пункти підменю <guimenu
>Створити</guimenu
> у меню стільниці і менеджера файлів. Після вибору користувачем пункту з цього підменю система просто копіює відповідний файл шаблону у потрібне місце.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename class="directory"
>share/wallpapers</filename
></term>
<listitem
><para
>У цьому каталозі містяться зображення, які можна використати як зображення тла</para
></listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="host-specific-directories">
<title
>Каталоги, специфічні для вузла</title
> 

<para
>Існує три специфічні для вузла каталоги, які, зазвичай, пов’язано символічними посиланнями з іншими адресами. Якщо цих каталогів ще немає, відповідні символічні посилання і каталоги буде створено за допомогою програми <command
>lnusertemp</command
>:</para>

<variablelist>

<varlistentry>
<term
><filename
>$<envar
>KDEHOME</envar
>/socket-$<envar
>HOSTNAME</envar
></filename
></term>
<listitem
><para
>Зазвичай, каталог <filename class="directory"
>/tmp/ksocket-$<envar
>USER</envar
>/</filename
>, цей каталог використовується для різноманітних сокетів &UNIX;.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename
>$<envar
>KDEHOME</envar
>/tmp-$<envar
>HOSTNAME</envar
></filename
></term>
<listitem
><para
>Зазвичай, каталог <filename class="directory"
>/tmp/kde-$<envar
>USER</envar
>/</filename
>, цей каталог використовується для тимчасових файлів.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><filename
>$<envar
>KDEHOME</envar
>/cache-$<envar
>HOSTNAME</envar
></filename
></term>
<listitem
><para
>Зазвичай, каталог <filename class="directory"
>/var/tmp/kdecache-$<envar
>USER</envar
>/</filename
>, цей каталог використовується для кешованих файлів.</para>
</listitem>
</varlistentry>
</variablelist>

<para
>Оскільки обидва каталоги, <filename class="directory"
>/tmp</filename
> і <filename class="directory"
>/var/tmp</filename
> придатні для запису будь-ким з користувачів, ймовірно, що один з цих каталогів вже існує, але належить іншому користувачеві. У такому випадку програма <command
>lnusertemp</command
> створить новий каталог з альтернативною назвою і посилатиметься саме на нього.</para>

</sect1>

<sect1 id="configuration-files">
<title
>Файли налаштувань</title
> <para
>У &kde; для збереження налаштувань у файлах використовується текстовий формат. Подібні файли складаються з пар «ключ-значення», впорядкованих за групами. У всіх файлах налаштувань &kde; використовується кодування <acronym
>UTF</acronym
>-8 для символів, яких немає у таблиці <acronym
>ASCII</acronym
>.</para>

<para
>Початок групи позначається назвою групи у квадратних дужках. Всі записи «ключ-значення», розташовані під цією назвою належать до відповідної групи. Група завершується або там, де починається інша група, або там, де завершується файл. Записи на початку файла, перед якими не стоїть назви групи, належать до типової групи.</para>

<informalexample
><para
>У наведеному нижче прикладі файл налаштування складається з двох груп. У першій групі містяться ключі <varname
>LargeCursor</varname
> і <varname
>SingleClick</varname
>, у другій — ключі <varname
>Show hidden files</varname
> і <varname
>Sort by</varname
>:</para>

<programlisting
>[KDE]
LargeCursor=false
SingleClick=true
</programlisting>

<programlisting
>[KFileDialog Settings]
Show hidden files=false
Sort by=Name
</programlisting>
</informalexample>

<para
>Записи груп складаються з ключа і значення, між якими стоїть знак рівності. Назва ключа може містити пробіли, за назвою може бути наведено параметри у квадратних дужках. Частина запису після знаку рівності вважається значенням ключа. Всі пробіли навколо знаку рівності під час обробки буде відкинуто, так само, як і всі пробіли наприкінці рядка. Якщо коротко, то формат запису такий:</para>

<programlisting
><replaceable
>елемент</replaceable
>=<replaceable
>значення</replaceable
>
</programlisting>

<para
>Якщо значення має містити пробіл на початку або в кінці, вказати цей пробіл можна за допомогою зворотної похилої риски разом з літерою <quote
>s</quote
>.</para>

<para
>Існує також декілька інших кодів з похилою рискою. Ось їх повний список: <itemizedlist>
<listitem
><para
><token
>\s</token
> можна скористатися замість пробілу</para>
</listitem>
<listitem
><para
><token
>\t</token
> можна скористатися замість символу табуляції</para>
</listitem>
<listitem
><para
><token
>\r</token
> замінює символ повернення каретки</para>
</listitem>
<listitem
><para
><token
>\n</token
> замінює символ переходу на новий рядок</para>
</listitem>
<listitem
><para
><token
>\\</token
> замінює сам символ зворотної риски</para>
</listitem>
</itemizedlist
></para>

<informalexample
><para
>У наведеному нижче прикладі значення елемента <varname
>Caption</varname
> починається з двох символів пробілу, а значення елемента <varname
>Description</varname
> складається з трьох рядків тексту. Для відокремлення рядків буде використано символи розриву рядків у позначеннях з похилою рискою.</para>

<programlisting
>[Preview Image]
Caption=\s My Caption
Description=This is\na very long\ndescription.
</programlisting>
</informalexample>

<para
>Порожні рядки у файлах налаштування буде проігноровано під час обробки, так само, як буде проігноровано всі рядки, як починаються з символу решітки (<quote
>#</quote
>). Символ решітки можна використовувати для додавання до файлів налаштувань коментарів. Слід зауважити, що у разі оновлення програмою &kde; файла налаштувань, коментарі <emphasis
>не</emphasis
> зберігаються.</para>

<para
>У підкаталогах <filename class="directory"
>share/config</filename
> різних дерев каталогів &kde; можуть міститися декілька файлів налаштувань з однаковою назвою. У такому випадку дані з цих файлів налаштування буде об’єднано на основі порівняння ключів. Якщо якийсь ключ у певній групі визначено декілька разів, значення ключа буде встановлено на основі даних з дерева каталогів з найвищим пріоритетом. Файли налаштування у каталозі <filename class="directory"
>$<envar
>KDEHOME</envar
></filename
> завжди мають найвищий пріоритет. Якщо якийсь ключ з певної групи визначено декілька разів у одному файлі, буде використано останнє з вказаних значень ключа.</para>

<informalexample>
<para
>Якщо вміст файла <filename
>$<envar
>HOME</envar
>/.kde/share/config/foobar</filename
> такий: <programlisting>
[MyGroup]
Color=red
Shape=circle
</programlisting
> а вміст файла <filename
>/etc/opt/kde3/share/config/foobar</filename
> такий: <programlisting>
[MyGroup]
Color=blue
Position=10,10
</programlisting
> результатом буде файл: <programlisting
>[MyGroup]
Color=red
Shape=circle
Position=10,10
</programlisting>
</para>
</informalexample>

<informalexample>
<para
>Якщо файл <filename
>$<envar
>HOME</envar
>/.kde/share/config/foobar</filename
> містить <programlisting>
[MyGroup]
Color=red
Shape=circle
[MyGroup]
Color=green
</programlisting
> файл <filename
>/opt/kde_staff/share/config/foobar</filename
> містить <programlisting>
[MyGroup]
Color=purple
Position=20,20
</programlisting
> а файл <filename
>/etc/opt/kde3/share/config/foobar</filename
> містить <programlisting>
[MyGroup]
Color=blue
Position=10,10
</programlisting
> результатом буде: <programlisting
>[MyGroup]
Color=green
Shape=circle
Position=20,20
</programlisting>
</para>
</informalexample>

<para
>Щоб заборонити користувачам перевизначати типові параметри, можна позначати параметри як незмінні. Параметри можна зробити незмінними окремо, групами або зробити незмінним цілий файл. Окремий запис можна зробити незмінним додаванням рядка <userinput
>[$i]</userinput
> за ключем, наприклад: <programlisting
>Color[$i]=blue
</programlisting>
</para>
<para
>Групу записів можна зробити незмінною додаванням рядка <userinput
>[$i]</userinput
> за назвою групи, наприклад: <programlisting
>[MyGroup][$i]
</programlisting>
</para>
<para
>Щоб зробити незмінним цілий файл, почніть його з окремого рядка, <userinput
>[$i]</userinput
>, тобто, наприклад, так: <programlisting
>[$i]
</programlisting>
</para>

<informalexample>
<para
>Якщо файл <filename
>$<envar
>HOME</envar
>/.kde/share/config/foobar</filename
> містить: <programlisting>
[MyGroup]
Color=red
Shape=circle
</programlisting
> а файл <filename
>/etc/opt/kde3/share/config/foobar</filename
> містить: <programlisting>
[MyGroup][$i]
Color=blue
Position=10,10
</programlisting
> результатом буде: <programlisting
>[MyGroup]
Color=blue
Position=10,10
</programlisting>
</para>
</informalexample>

<informalexample
><para
>Якщо файл <filename
>$<envar
>HOME</envar
>/.kde/share/config/foobar</filename
> містить: <programlisting>
[MyGroup]
Color=red
Shape=circle
</programlisting
> файл <filename
>/opt/kde_staff/share/config/foobar</filename
> містить <programlisting>
[MyGroup]
Color=purple
Shape=rectangle
</programlisting
> а файл <filename
>/etc/opt/kde3/share/config/foobar</filename
> містить <programlisting>
[MyGroup][$i]
Color=blue
Position=10,10
</programlisting
> результатом буде <programlisting
>[MyGroup]
Color=purple
Shape=rectangle
Position=10,10
</programlisting>
</para>
</informalexample>


<para
>Для динамічнішого встановлення значень налаштувань можна скористатися так званим <quote
>розширенням оболонки</quote
>. За допомогою розширення оболонки значення ключа налаштування можна зібрати на основі значення змінної середовища або на основі даних, виведених командою оболонки. Щоб увімкнути розширення оболонки для елемента налаштування за назвою ключа слід вказати рядок <token
>[$e]</token
>. Зазвичай, розширену форму буде записано до файла налаштування користувача після першого ж запуску. Щоб запобігти такому запису, ми рекомендуємо заблокувати елемент налаштування за допомогою рядка <token
>[$ie]</token
>. Після цього, звичайно ж, користувач не зможе змінити значення елемента.</para>

<informalexample>
<para
>У наведеному нижче прикладі значення елемента <varname
>Host</varname
> визначається за допомогою даних, виведених командою <command
>hostname</command
>. Крім того, параметр буде заблоковано, щоб забезпечити динамічне визначення його значення.</para>

<para
>Значення елемента <varname
>Email</varname
> визначатиметься за значеннями змінних середовища $<envar
>USER</envar
> і $<envar
>HOST</envar
>. Якщо користувач <systemitem class="username"
>ivan</systemitem
> розпочне роботу на вузлі <systemitem class="systemname"
>ivans_host</systemitem
> значенням елемента стане <literal
>joe@joes_host</literal
>. Цей параметр не заблоковано.</para>

<programlisting
>[Mail Settings] 
Host[$ie]=$(hostname)
Email[$e]=${USER}@${HOST}
</programlisting>
</informalexample>

<para
>Більшість елементів налаштування можна проіндексувати кодом мови. У цьому випадку для визначення значення ключа буде використано мову, яку користувач обрав для інтерфейсу стільниці. Якщо було обрано типову мову (американську англійську) або якщо для обраної мови немає запису у індексі, буде використано запис ключа без індексу.</para>

<informalexample>
<para
>У наведеному нижче прикладі значення елемента <varname
>Caption</varname
> залежатиме від мови. Якщо користувач обрав українську мову (код мови <literal
>uk</literal
>) значенням елемента буде <quote
>Мій підпис</quote
>. У всіх інших випадках буде використано значення <quote
>My Caption</quote
>.</para>

<programlisting
>[Preview Image]
Caption=My Caption
Caption[uk]=Мій підпис
</programlisting>
</informalexample>

<informalexample>
<para
>У нашому прикладі значення елемента <varname
>Caption</varname
> залежатиме від мови. Якщо користувач обрав українську мову (код мови <literal
>uk</literal
>) значенням елемента буде <quote
>Мій підпис</quote
>. У всіх інших випадках буде використано значення <quote
>My Caption</quote
>.</para>

<programlisting
>[Preview Image]
Caption=My Caption
Caption[uk]=Мій підпис
</programlisting>
</informalexample>

<para
>Загалом кажучи, елементи файла налаштувань не документовано. Починаючи з &kde; 3.2 розробники внесли зміни у цей стан. У каталозі <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/config.kcfg</filename
> можна знайти файли, у яких наведено формальний опис всіх можливих елементів файла налаштувань. Їх буде використано у новому редакторі налаштувань &kde; після завершення створення цього редактора.</para>

<informalexample>
<para
>Ось приклад файла налаштувань у форматі &XML;: <programlisting
><markup>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd"&gt;
&lt;kcfg&gt;
    &lt;kcfgfile name="korganizerrc"/&gt;
    &lt;group name="General"&gt;
         &lt;entry type="Bool" key="Auto Save"&gt;
             &lt;label&gt;Enable automatic saving of calendar&lt;/label&gt;
             &lt;default&gt;true&lt;/default&gt;
         &lt;/entry&gt;
         &lt;entry type="Int" key="Auto Save Interval"&gt;
             &lt;default&gt;10&lt;/default&gt;
         &lt;/entry&gt;
    &lt;/group&gt;
&lt;/kcfg&gt;
</markup
>
</programlisting>
</para>
<para
>Того самого результату можна досягти так: <programlisting
>[General]
Auto Save=false
Auto Save Interval=25
</programlisting>
</para>
</informalexample>

</sect1>

<sect1 id="kde-startup-sequence">
<title
>Послідовність запуску &kde;</title>

<sect2 id="kdm">
<title
>&kdm;</title>

<para
>Завжди запускається від імені користувача <systemitem class="username"
>root</systemitem
>! Використовує файли налаштування <filename
>$<envar
>KDEDIR</envar
>/share/config/kdmrc</filename
> і <filename
>/etc/X11/xdm/Xservers</filename
>. Останній з цих файлів містить елементи на зразок:</para>

<programlisting
>:0 local /usr/X11R6/bin/X :0 vt07
</programlisting>

<para
>Серед відповідних файлів запуску також: </para>
<simplelist>
<member
>Розділ [X-*-Core] у <filename
>kdmrc</filename
> </member>
<member
>Налаштування — <filename
>/etc/X11/xdm/Xsetup</filename
> </member>
<member
>Користувач вводить ім’я користувача і пароль </member>
<member
>Запуск — <filename
>/etc/X11/xdm/Xstartup</filename
> — підготовка від імені root </member>
<member
>Сеанс — <filename
>/etc/X11/xdm/Xsession</filename
> — запуск сеансу від імені користувача </member>
<member
>= Для сеансу KDE: <command
>kde</command
> або <command
>startkde</command
> </member>
<member
>= Якщо існує <filename
>~/.xsession</filename
> або <filename
>~/.xinitrc</filename
> </member>
<member
>Відновлення параметрів — <filename
>/etc/X11/xdm/Xreset</filename
> — після завершення сеансу </member>
</simplelist>

</sect2>

<sect2 id="startkde">
<title
>Скрипт запуску &kde;,: <command
>startkde</command
></title>

<para
>Послідовність запуску &kde; починається з скрипту <filename
>startkde</filename
>. Здебільшого цей скрипт викликає засіб входу до системи (&kdm;) одразу після розпізнавання користувача. У файлі скрипту <filename
>startkde</filename
> є два важливих рядки:</para>

<programlisting
>LD_BIND_NOW=true kdeinit4 +kcminit_startup and kwrapper4 ksmserver $KDEWM
</programlisting>

<para
>Перший з рядків запускає головний процес <command
>kdeinit4</command
>. Головний процес <command
>kdeinit4</command
> використовується для запуску всіх інших процесів &kde;. Його буде показано у виводі команди <command
>ps <option
>aux</option
></command
> як <computeroutput
>kdeinit4: Running...</computeroutput
>. Аргументи після назви команди, <command
>kdeinit4</command
>, є назвами додаткових процесів, які слід запустити. Символ <token
>+</token
> позначає, що <command
>kdeinit4</command
> має зачекати на завершення процесу. Крім того, <command
>kdeinit4</command
> запускає <command
>klauncher</command
> і <command
>kded</command
>.</para>

<para
>Другий з двох рядків надсилає до <command
>kdeinit4</command
> запит на запуск <command
>ksmserver</command
>, процесу керування сеансами. Керування сеансами визначає час існування сеансу. Після завершення роботи процесу буде завершено і роботу користувача.</para>

</sect2>
</sect1>

<sect1 id="background-processes">
<title
>Фонові процеси</title>

<para
>Всі фонові процеси &kde; є специфічними для користувача: на відміну від системних фонових служб, вони не є спільними для користувачів. Окрім прив’язки до користувача, ці процеси нерозривно пов’язано з дисплеєм сервера X. Серед цих процесів:</para>

<variablelist>
<varlistentry>
<term
><command
>dcopserver</command
></term>
<listitem
><para
>Обмін інформацією в межах стільниці</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>kded</command
></term>
<listitem
><para
>Загальна фонова служба.</para>
<para
>За потреби вмикає оновлення бази даних <link linkend="ksycoca"
>Sycoca</link
></para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>kcminit</command
></term>
<listitem
><para
>Служба ініціалізації</para>
<para
>Докладніші відомості можна знайти у розділі <xref linkend="kcminit"/>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>klauncher</command
></term>
<listitem
><para
>Запуск програм (це <emphasis
>не</emphasis
> діалогове вікно, що викликається комбінацією клавіш <keycombo action="simul"
>&Alt;<keycap
>F2</keycap
> </keycombo
>!)</para>
<para
>Докладніші відомості можна отримати з розділу <xref linkend="klauncher"/>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>knotify</command
></term>
<listitem
><para
>Сповіщення користувачів.</para>
<para
>Докладніші відомості можна отримати з розділу <xref linkend="knotify"/>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>ksmserver</command
></term>
<listitem
><para
>Керування сеансами</para>
<para
>Докладніші відомості можна отримати з розділу <xref linkend="ksmserver"/>.</para>
</listitem>
</varlistentry>

</variablelist>

<sect2 id="kdeinit">
<title
><command
>kdeinit</command
></title>
<para
><command
>kdeinit</command
> використовується для запуску всіх інших програм &kde;. <command
>kdeinit</command
> може запускати як звичайні файли програм, так і модулі <command
>kdeinit</command
> (<acronym
>KLM</acronym
>s). <acronym
>KLM</acronym
> працюють подібно до звичайних файлів програм, але запускаються ефективніше. <acronym
>KLM</acronym
> можна знайти у <filename class="directory"
>$<envar
>KDEDIR</envar
>/lib/kde3</filename
></para>

<para
>Недоліком є те, що програми, запущені таким чином, виглядають як пункти <computeroutput
><command
>kdeinit</command
></computeroutput
> у виводі команд <command
>top</command
> і <command
>ps</command
>. Скористайтеся командами <command
>top <option
>-c</option
></command
> або <command
>ps <option
>aux</option
></command
> для перегляду справжніх назв програм:</para>

<screen
><prompt
>%</prompt
><userinput
><command
>ps <option
>aux</option
></command
></userinput>
<computeroutput>
waba     23184  0.2  2.1 23428 11124 ?        S    21:41   0:00 kdeinit4: Running...
waba     23189  0.2  2.4 25136 12496 ?        S    21:41   0:00 kdeinit4: klauncher
waba     23192  0.7  2.8 25596 14772 ?        S    21:41   0:00 kdeinit4: kded
waba     23203  0.8  3.4 31516 17892 ?        S    21:41   0:00 kdeinit4: knotify
</computeroutput
>
</screen>

<para
>Рядок <computeroutput
>kdeinit: Running...</computeroutput
> вказує на головний процес <command
>kdeinit</command
>. Інші процеси, показані у списку, є програмами, запущеними як <acronym
>KLM</acronym
>.</para>

<para
>Після першого запуску <command
>kdeinit</command
> цей процес запускає <command
>klauncher</command
> і <command
>kded</command
>, а також багато додаткових програм, вказаних у його рядку команди скрипту <command
>startkde</command
>, зазвичай, <command
>kcminit_startup</command
>.</para>

</sect2>

<sect2 id="kcminit">
<title
>kcminit</title>

<para
>Під час запуску <command
>kcminit</command
> запускаються служби ініціалізації. Служби ініціалізації вказано у файлах .desktop програм або служб у рядку <varname
>X-KDE-Init</varname
>:</para>

<programlisting
>[Desktop Entry]
Encoding=UTF-8
Exec=kcmshell4 energy
Icon=energy_star
Type=Application
X-KDE-Library=energy
X-KDE-Init=energy
</programlisting>

<para
>Служби ініціалізації, зазвичай, використовуються для налаштування обладнання згідно до вказаних користувачем параметрів.</para>

<para
>Для перегляду списку всіх служб ініціалізації можна скористатися командою <userinput
><command
>kcminit <option
>--list</option
></command
></userinput
>, команду <userinput
><command
>kcminit <replaceable
>служба</replaceable
></command
></userinput
> призначено для явного запуску окремої служби. Ці команди можуть бути корисними для виявлення проблем з запуском.</para>

</sect2>

<sect2 id="klauncher">
<title
><command
>klauncher</command
></title>

<para
><command
>klauncher</command
> — це фонова служба, яка відповідає за активацію служб у межах &kde;. Ця служба діє у тісному зв’язку з головним процесом <command
>kdeinit</command
> для запуску нових процесів. Програми &kde; обмінюються даним з <command
>klauncher</command
> за допомогою &DCOP; для запуску нових програм або служб.</para>

<para
>Широко відома за повідомленням про помилку: <computeroutput
><errortext
> KLauncher could not be reached via DBus </errortext
></computeroutput
>, за яким раніше можна було виявити серйозну проблему з <command
>dcopserver</command
> або аварійне завершення <command
>klauncher</command
>.</para>

<para
><command
>klauncher</command
> можна перезапустити перезапуском <command
>kdeinit</command
> з вікна консолі. Перед виконанням перезапуску переконайтеся, що правильно вказано змінні середовища $<envar
>HOME</envar
>, $<envar
>DISPLAY</envar
> і різноманітні various $<envar
>KDEDIR(S)</envar
>!</para>

</sect2>

<sect2 id="knotify">
<title
><command
>knotify</command
></title>

<para
>Основним завданням <command
>knotify</command
> є переспрямування звукових сповіщень до звукового сервера, крім того, передбачено і інші способи сповіщення.</para>

</sect2>


</sect1>

<sect1 id="ksmserver">
<title
>KSMServer</title>

<para
><command
>ksmserver</command
> є інструментом керування сеансами &kde;. Під час запуску цей інструмент автоматично запускає вказані програми і відновлює параметри програм з попереднього сеансу. Вказати програми для автоматичного запуску можна за допомогою файлів <literal role="extension"
>.desktop</literal
>, розміщений у каталозі <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/autostart</filename
>. Чи буде програму запущено автоматично, чи ні можна обумовити за допомогою певного елемента налаштування у записі <varname
>X-KDE-autostart-condition</varname
> файла <literal role="extension"
>.desktop</literal
>.</para>

<informalexample>
<para
>Наприклад, файл <filename
>ktip.desktop</filename
> містить:</para>

<programlisting
>X-KDE-autostart-condition=ktiprc:TipOfDay:RunOnStart:true
</programlisting>

<para
>Це означає, що буде виконано перевірку файла налаштування <filename
>ktiprc</filename
> на наявність запису <varname
>RunOnStart</varname
> у розділі <varname
>[TipOfDay]</varname
>. Якщо такого розділу не буде знайдено, буде встановлено значення <literal
>true</literal
>, і це означатиме щодо <application
>ktip</application
> стане однією з програм, які буде автоматично запущено.</para>
</informalexample>

<para
>Серед програм, які автоматично запускаються службою <command
>ksmserver</command
>:</para>

<variablelist>

<varlistentry>
<term
><command
>kdesktop</command
></term>
<listitem
><para
>Стільниця &kde;</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>&kicker;</command
></term>
<listitem
><para
>Панель &kde;</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>ktip</command
></term>
<listitem
><para
>Програма корисних підказок</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>kwrited</command
></term>
<listitem
><para
>Інструмент для отримання системних повідомлень, які надсилаються користувачеві</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>&klipper;</term>
<listitem
><para
>Інструмент для роботи з буфером обміну інформацією, який швартується у лоток панелі</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><command
>kalarm</command
></term>
<listitem
><para
>Програма, яка сповіщає вас про наступні події і зустрічі</para>
</listitem>

</varlistentry>
</variablelist>

<para
><command
>kdesktop</command
> у свою чергу автоматично запускає програми, що зберігаються у <filename class="directory"
>$<envar
>KDEHOME</envar
>/Autostart</filename
>. <command
>kdesktop</command
> автоматично відкриватиме всі файли, що зберігаються у цьому каталозі, зокрема документи, бінарні файли або програми, вказані за допомогою файлів <literal role="extension"
>.desktop</literal
>.</para>

<para
>Крім того керування сеансами &kde; відновлює один з попередніх сеансів. Сеанс — це набір програм, а також даних, що стосуються цих програм і відповідають стану цих програм на час збереження сеансу. Сеанси зберігаються у файлі налаштувань <filename
>ksmserverrc</filename
>, у якому містяться посилання на дані щодо стану програми. Самі дані щодо стану зберігаються у  <filename class="directory"
>$<envar
>KDEHOME</envar
>/share/config/session</filename
>. Серед даних щодо стану &kwin; містяться розташування вікон програм для всіх програм сеансу. </para>

</sect1>

<sect1 id="environment-variables">
<title
>Змінні середовища</title>

<para
>Ось декілька важливих змінних середовища, які використовуються &kde;:</para>

<variablelist>

<varlistentry>
<term
>$<envar
>KDEDIR</envar
></term>
<listitem
><para
>Цю змінну слід встановити, якщо не встановлено <envar
>KDEDIRS</envar
>. Ця змінна має вказувати на кореневу теку встановленого &kde;. За допомогою цієї змінної &kde; знаходить дані: піктограми, меню і бібліотеки.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDEDIRS</envar
></term>
<listitem
><para
>Ця змінна перевизначає <envar
>KDEDIR</envar
> і надає вам змогу вказувати декілька тек, у яких &kde; шукатиме потрібні йому дані. Корисна, якщо ви бажаєте або мусите встановити певні програми до каталогу, відмінного від каталогу решти &kde;.</para
> 
</listitem>
</varlistentry>

<varlistentry
><term
><envar
>$KDEHOME</envar
></term
><listitem
><para
>Якщо не встановлено цю змінну, &kde; використовуватиме <filename class="directory"
>~/.kde</filename
> як каталог для зберігання особистих даних.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDEROOTHOME</envar
></term
><listitem
><para
>Якщо не встановлено, &kde; використовуватиме <filename class="directory"
>~root/.kde</filename
> як каталог для зберігання особистих даних користувача <systemitem class="username"
>root</systemitem
>. Цю змінну було введено для того, щоб уникнути випадкового перезаписування &kde; даних користувача з правами доступу root, якщо звичайний користувач запустив програму &kde; після отримання прав користувача <systemitem class="username"
>root</systemitem
> за допомогою команди <command
>su</command
>.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDEWM</envar
></term
><listitem
><para
>Якщо було встановлено змінну середовища <envar
>KDEWM</envar
>, під час виконання скрипту <command
>startkde</command
> буде використано вказаний у цій змінній засіб керування вікнами, а не типовий &kwin;.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_LANG</envar
></term
><listitem
><para
>Перевизначає налаштування мови &kde;, наприклад, команда <userinput
>KDE_LANG=uk kprogram &amp;</userinput
> запустить програму з перекладом українською, якщо встановлено відповідні файли.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_MULTIHEAD</envar
></term
><listitem
><para
>Встановіть для цієї змінної значення <literal
>true</literal
>, щоб позначити, що &kde; запущено у системі з декількома екранами.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_FORK_SLAVES</envar
></term>
<listitem
><para
>(З’явилася у &kde; 3.2.3) Встановіть значення для цієї змінної середовища, щоб система породжувала допоміжні засоби (<acronym
>KIO</acronym
>-slave) безпосередньо з процесу програми, що їх викликає. Типово, <acronym
>KIO</acronym
>-slave породжуються за допомогою <command
>klauncher</command
>/<command
>kdeinit</command
>. Цей параметр буде корисним, якщо <acronym
>KIO</acronym
>-slave слід запускати у тому ж середовищі, що і програму. Це, наприклад, слід робити для програми <application
>Clearcase</application
>.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_HOME_READONLY</envar
></term>
<listitem
><para
>Встановіть цю змінну, щоб позначити, що ваш домашній каталог змонтовано у режимі лише для читання.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_NO_IPV6</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2.3) Встановіть значення «true» для цієї змінної, щоб вимкнути підтримку <acronym
>IPv6</acronym
> та підтримку пошуку <acronym
>DNS</acronym
> на основі <acronym
>IPv6</acronym
>.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_IS_PRELINKED</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2) Встановіть значення «true» для цієї змінної, щоб вказати системі, що ваші виконувані файли та бібліотеки &kde; було попередньо пов’язано (prelinked). Таким чином, <command
>kdeinit</command
> буде вимкнено.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_UTF8_FILENAMES</envar
></term
><listitem
><para
>Якщо встановлено значення «true» цієї системної змінної, &kde; вважатиме, що всі назви файлів вказано у <acronym
>UTF-8</acronym
>, незалежно від поточної локалі C.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDE_FULL_SESSION</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2) Автоматично встановлюється у значення «true» під час запуску &kde;, цю змінну використовує, наприклад, &konqueror;, щоб визначити, чи слід залишати програму у оперативній пам’яті для наступного повторного використання після закриття вікна програми. Якщо значення «true» не встановлено, &konqueror; завершуватиме роботу після закриття вікна (наприклад, &kdesu; так і робить, крім того, це можна використати для усування вад).</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDESYCOCA</envar
></term
><listitem
><para
>Надає вам змогу вказати шлях і назву створеного файла кешу налаштувань &kde;.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDETMP</envar
></term
><listitem
><para
>Надає вам змогу вказати каталог, відмінний від <filename class="directory"
>/tmp</filename
>, у якому &kde; зберігатиме свої тимчасові файли.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>KDEVARTMP</envar
></term
><listitem
><para
>Надає вам змогу вказати каталог, відмінний від <filename class="directory"
>/var/tmp</filename
>, у якому &kde; зберігатиме свої змінні файли.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>XDG_DATA_HOME</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2) Визначає базовий каталог, відносно якого слід зберігати специфічні для користувача файли даних. Типовим значенням є <filename class="directory"
>$<envar
>HOME</envar
>/.local/share</filename
></para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>XDG_DATA_DIRS</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2) Визначає впорядкований за пріоритетом перелік базових каталогів для пошуку у них даних на додачу до базового каталогу, що визначається змінною <filename class="directory"
>$<envar
>XDG_DATA_HOME</envar
></filename
>. Типовим значенням є <literal
>/usr/local/share/:/usr/share/</literal
></para>

<para
>&kde; додає адреси, вказані за допомогою змінної $<envar
>KDEDIRS</envar
> і профілів. Використовується для файлів меню <literal role="extension"
>.desktop</literal
> і <literal role="extension"
>.directory</literal
>. Файли <literal role="extension"
>.desktop</literal
> знаходяться у <filename class="directory"
>$<envar
>XDG_DATA_DIRS</envar
>/applications</filename
>. Файли <literal role="extension"
>.directory</literal
> знаходяться у $XDG_DATA_DIRS/desktop-directories </para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>XDG_CONFIG_HOME</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2) Визначає базовий каталог, відносно якого слід зберігати файли налаштувань користувача. Типовим значенням є <filename class="directory"
>$<envar
>HOME</envar
>/.config</filename
>.</para>
</listitem>
</varlistentry>

<varlistentry
><term
>$<envar
>XDG_CONFIG_DIRS</envar
></term
><listitem
><para
>(З’явилася у &kde; 3.2) Визначає впорядкований за пріоритетом список базових каталогів, у яких слід шукати файли налаштування, окрім базового каталогу, вказаного у змінній $<envar
>XDG_CONFIG_HOME</envar
>. Типовим значенням є <filename class="directory"
>/etc/xdg</filename
>, крім того &kde; додає адреси з $<envar
>KDEDIRS</envar
> і профілів. Використовується описами <literal role="extension"
>.menu</literal
> у <filename class="directory"
>$<envar
>XDG_CONFIG_DIRS</envar
>/menus</filename
>. </para>
</listitem>
</varlistentry>
</variablelist>

</sect1>

<sect1 id="the-kdeinit-mystery">
<title
>Таємниці kdeinit</title>

<!-- FIXME: Add more words. Fix markup -->

<para
><command
>kdeinit</command
> використовується для запуску всіх інших програм &kde;. <command
>kdeinit</command
> може запускати звичайні бінарні файли і модулі <command
>kdeinit</command
> (<acronym
>KLM</acronym
>s). <acronym
>KLM</acronym
> працюють так само, як бінарні файли програм, але їх можна запустити у ефективніший спосіб. Файли <acronym
>KLM</acronym
> знаходяться у каталозі <filename class="directory"
>$<envar
>KDEDIR</envar
>/lib/kde3</filename
></para>

<para
>Недоліком є те, що програми, запущені таким чином, виглядають як пункти <computeroutput
><command
>kdeinit</command
></computeroutput
> у виводі команд <command
>top</command
> і <command
>ps</command
>. Скористайтеся командами <command
>top <option
>-c</option
></command
> або <command
>ps <option
>aux</option
></command
> для перегляду справжніх назв програм:</para>

<screen
><prompt
>%</prompt
> <userinput
><command
>ps aux | grep bastian</command
></userinput>
<computeroutput>
bastian  26061  0.0  2.2 24284 11492 ?       S    21:27   0:00 kdeinit: Running...
bastian  26064  0.0  2.2 24036 11524 ?       S    21:27   0:00 kdeinit: dcopserver
bastian  26066  0.1  2.5 26056 12988 ?       S    21:27   0:00 kdeinit: klauncher
bastian  26069  0.4  3.2 27356 16744 ?       S    21:27   0:00 kdeinit: kded
bastian  26161  0.2  2.7 25344 14096 ?       S    21:27   0:00 kdeinit: ksmserver
bastian  26179  1.1  3.4 29716 17812 ?       S    21:27   0:00 kdeinit: kicker
bastian  26192  0.4  3.0 26776 15452 ?       S    21:27   0:00 kdeinit: klipper
bastian  26195  1.0  3.5 29200 18368 ?       S    21:27   0:00 kdeinit: kdesktop
</computeroutput
>
</screen>
<para
>Як ви вже певно зауважили, це має ще один сторонній ефект, що робить складним завершення процесу, який викликав проблеми:</para>

<screen
><prompt
>%</prompt
> <userinput
><command
>killall kdesktop</command
></userinput>
<computeroutput
>kdesktop: no process killed</computeroutput
></screen>

<para
>У вас може виникнути спокуса скористатися командою <userinput
><command
>killall kdeinit</command
></userinput
>, але завершення роботи процесів kdeinit призведе завершення роботи всього &kde;. Це означає повне знищення!</para>

<para
>Існує два простих вирішення цієї проблеми:</para>

<screen
><prompt
>%</prompt
> <userinput
><command
>kdekillall kdesktop</command
></userinput>
або старе перевірене
<prompt
>%</prompt
> <userinput
><command
>kill 26195</command
></userinput
></screen>
<para
>Програма <command
>kdekillall</command
> є частиною пакунка <acronym
>SDK</acronym
> &kde;.</para>

</sect1>

</chapter>

<chapter id="customizing-kde">
<title
>Налаштування &kde;</title>


<sect1 id="desktop-icons">
<title
>Піктограми стільниці</title>

<para
>&kde; використовує декілька типів піктограм:</para>
<itemizedlist>
<listitem
><para
>Документи</para>
</listitem>
<listitem
><para
>Посилання на веб-сайти (за використання файла <literal role="extension"
>.desktop</literal
>)</para>
</listitem>
<listitem
><para
>Посилання на програми (за використання файла <literal role="extension"
>.desktop</literal
>)</para>
</listitem>
<listitem
><para
>Пристрої — диски, розділи і периферія: <itemizedlist>
<listitem
><para
>Явне використання файла <literal role="extension"
>.desktop</literal
></para>
</listitem>
<listitem
><para
>Автоматичне, за допомогою підлеглого В/В devices://</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem
><para
>Специфічні для виробника дистрибутива (наприклад, у &SuSE; — Мій комп’ютер)</para>
</listitem>
</itemizedlist>

<sect2 id="desktop-icons-websites">
<title
>Веб-сайти</title>
<para
>Посилання на веб-сайти на основі файла <literal role="extension"
>.desktop</literal
>, створеного за допомогою пункту меню <menuchoice
><guimenu
>Створити</guimenu
> <guisubmenu
>Файл</guisubmenu
> <guimenuitem
>Посилання на адресу (URL)</guimenuitem
></menuchoice
>. Піктограму можна змінити за допомогою діалогового вікна <guilabel
>Властивості</guilabel
>. Зразок такого файла <literal role="extension"
>.desktop</literal
>: <programlisting
>[Desktop Entry]
Encoding=UTF-8
Icon=/opt/kde3/share/apps/kdesktop/pics/ksslogo.png
Type=Link
URL=http://www.kde.org/
</programlisting>
</para>
</sect2>

<sect2 id="desktop-icons-applications">
<title
>Програми</title>

<para
>Посилання на програми з використанням файла <literal role="extension"
>.desktop</literal
>: <menuchoice
><guimenu
>Створити</guimenu
> <guisubmenu
>Файл</guisubmenu
> <guimenuitem
>Посилання на програму</guimenuitem
></menuchoice
>. Подробиці ви маєте вказати власноруч. Набагато простіше створити таке посилання перетягуванням з меню &kde;: посилання можна або скопіювати, або створити символічне посилання на нього</para>

<!-- Perhaps legacy and translated should be the other way around, but -->
<!-- this is how it appears in Waldo's presentation. Need to check -->
<!-- this -->

<programlisting
>[Desktop Entry]<co id="boilerplate"/>
Encoding=UTF-8
GenericName=IRC Client<co id="generic-desc"/>
GenericName[af]=Irc Kli&euml;t
GenericName[de]=IRC Programm
...
GenericName[uk]=Клієнт IRC<co id="legacy"/>
SwallowExec=<co id="translated"/>
Name=KSirc
Name[af]=Ksirc
Name[de]=KSirc
...
</programlisting>

<calloutlist>
<callout arearefs="boilerplate"
><para
>Шаблон Boiler plate</para>
</callout>
<callout arearefs="generic-desc"
><para
>Переклад загального опису, не використовуватиметься на стільниці</para>
</callout>
<callout arearefs="legacy"
><para
>Застаріле, можна вилучати</para>
</callout>
<callout arearefs="translated"
><para
>Перекладена назва, яку буде показано на стільниці</para>
</callout>
</calloutlist>

<para
>Піктограми стільниці</para>
<programlisting
>...
Name[zu]=Ksirc
MimeType=<co id="co-mimetype"/>
Exec=ksirc %i %m<co id="co-exec"/>
Icon=ksirc<co id="co-icon"/>
TerminalOptions=<co id="co-terminaloptions"/>
Path=<co id="co-path"/>
Type=Application<co id="co-type"/>
Terminal=0<co id="co-terminal"/>
X-KDE-StartupNotify=true<co id="co-x-kde-startupnotify"/>
X-DCOP-ServiceType=Multi<co id="co-x-dcop-servicetype"/>
Categories=Qt;KDE;Network<co id="co-categories"/>
</programlisting>

<calloutlist>
<callout arearefs="co-mimetype"
><para
>Підтримувані типи &MIME;, які не використовуються на стільниці</para>
</callout>
<callout arearefs="co-exec"
><para
>Рядок команди, яку буде виконано</para>
</callout>
<callout arearefs="co-icon"
><para
>Піктограма, з теми піктограм або за повним шляхом</para>
</callout>
<callout arearefs="co-terminaloptions"
><para
>Використовується, лише якщо потрібен термінал</para>
</callout>
<callout arearefs="co-path"
><para
>Робочий каталог для команди</para>
</callout>
<callout arearefs="co-type"
><para
>Ще один шаблон boiler plate</para>
</callout>
<callout arearefs="co-terminal"
><para
>Має значення «true» (1), якщо програма виконується у терміналі (текстова програма)</para>
</callout>
<callout arearefs="co-x-kde-startupnotify"
><para
>Показувати «стрибаючий» курсор, вимкніть, якщо не працюватиме.</para>
</callout>
<callout arearefs="co-x-dcop-servicetype"
><para
>Чи запустилася програма? Вилучіть, якщо не працюватиме.</para>
</callout>
<callout arearefs="co-categories"
><para
>Категорії меню &kde;, які не використовуються на стільниці</para>
</callout>
</calloutlist>



</sect2>

<sect2 id="desktop-icons-exec">
<title
>Пункт <varname
>Exec</varname
> у файлах <literal role="extension"
>.desktop</literal
></title>

<para
>Слідом за командою ви можете вказати декілька шаблонів заміни, які буде замінено справжніми значеннями під час запуску програми: <variablelist>
<varlistentry>
<term
>%f</term
> <listitem
><para
>Назва окремого файла. Використовується під час скидання файла на піктограму або за використання прив’язки до типів.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%F</term>
<listitem
><para
>Список файлів. Використовується для програм, які здатні відкривати декілька локальних файлів одразу.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%u</term>
<listitem
><para
>Окрема адреса &URL;: якщо програма може працювати, наприклад, з адресами &URL; &FTP; або &HTTP;, без використання можливостей &kde;.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%U</term>
<listitem
><para
>Список адрес &URL;. Спочатку файл буде звантажено, а вже потім локальний файл буде передано програмі (!!)</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%d</term>
<listitem
><para
>Тека файла, який слід відкрити. Корисно для програм, для яких потрібно, щоб файл знаходився у поточному робочому каталозі.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%D</term>
<listitem
><para
>Список тек, потрібно не часто.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%i</term
> 
<listitem
><para
>Піктограма; параметр <option
>--icon</option
>; програма &kde; використовуватиме піктограму з рядка <varname
>Icon</varname
>= на панелі задач.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%m</term>
<listitem
><para
>Міні-піктограма, застаріле.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>%c</term
> 
<listitem
><para
>Заголовок вікна; параметр <option
>--caption</option
>; програма &kde; використовуватиме значення з рядка <varname
>Name</varname
>=рядок як заголовок на панелі задач.</para>
</listitem>
</varlistentry>

</variablelist>
</para>

<informalexample>
<para
>Приклади: <segmentedlist>
<segtitle
>Рядок <varname
>Exec</varname
></segtitle>
<segtitle
>Команда, яку буде виконано</segtitle>
<seglistitem
><seg
>ksirc %i</seg
><seg
><command
>ksirc --icon ksirc</command
></seg>
</seglistitem>
<seglistitem
><seg
>cd %d; kedit $(basename %f)</seg
><seg
><command
>cd /tmp; kedit file.txt</command
></seg>
</seglistitem>
</segmentedlist>
</para>
</informalexample>

<!--Dont' know what this refers to: -->
<!--See What's This (Shift-F1) in Properties Dialog-->

</sect2>

<sect2 id="desktop-icons-devices">
<title
>Пристрої</title>
<para
>Посилання на пристрої за допомогою файла <literal role="extension"
>.desktop</literal
>, можна створити за допомогою пункту меню Створити -> Пристрій </para>
</sect2>

<sect2 id="where-to-define">
<title
>Де визначати</title>

<para
>Ось каталоги де можна визначати піктограми стільниці: <itemizedlist>

<listitem
><para
><filename class="directory"
>~/Desktop</filename
>: копія <filename class="directory"
>/etc/skel/Desktop</filename
></para
></listitem>

<listitem
><para
><filename class="directory"
>$<envar
>KDEDIR</envar
>/apps/kdesktop/Desktop</filename
> (об’єднаний)</para
></listitem>

<listitem
><para
><filename class="directory"
>$<envar
>KDEDIR</envar
>/apps/kdesktop/DesktopLinks</filename
> (копія)</para
></listitem>

<listitem
><para
>Піктограми пристроїв (об’єднуються динамічно)</para
></listitem>

<listitem
><para
>Специфічні для дистрибутивів: у SUSE Linux деякі з піктограм копіюються до startkde.theme з <filename class="directory"
>/opt/kde3/share/config/SuSE/default/</filename
></para
></listitem>

</itemizedlist>
</para>
</sect2>
</sect1>

<sect1 id="kde-menu">
<title
>Меню &kde;</title>

<sect2 id="how-it-works">
<title
>Як це працює</title>

<para
>У &kde; 3.2 введено типовий формат меню, який визначено за адресою <ulink url="http://freedesktop.org/Standards/menu-spec/"
>http://freedesktop.org/Standards/menu-spec/</ulink
></para>
<para
>До &kde; 3.2: <itemizedlist>

<listitem
><para
>Структура каталогів зберігалася у <filename class="directory"
>share/applnk</filename
></para
></listitem>

<listitem
><para
>Структура каталогів відповідала структурі меню</para
></listitem>

<listitem
><para
>Кожному з файлів <literal role="extension"
>.desktop</literal
> відповідала єдина програма</para
></listitem>

</itemizedlist>
</para>

<para
>У &kde; 3.2 було важко змінювати структуру меню, тому у новому форматі меню: <itemizedlist>
<listitem
><para
>Визначено структуру у окремому файлі .menu</para
></listitem>
<listitem
><para
>Формат засновано на категоріях</para
></listitem>
<listitem
><para
>Формат є спільним для <acronym
>GNOME</acronym
> і &kde;</para
></listitem>
<listitem
><para
>Увімкнено підтримку меню у стилі applnk</para
></listitem>
</itemizedlist>
</para>

<informalexample>
<para
>Приклад з <filename
>applications.menu</filename
>: <programlisting
><markup>
        &lt;Menu&gt;
            &lt;Name&gt;Office&lt;/Name&gt;
            &lt;Directory&gt;suse-office.directory&lt;/Directory&gt;
            &lt;Include&gt;
                &lt;Filename&gt;Acrobat Reader.desktop&lt;/Filename&gt;
                &lt;Filename&gt;kde-kpresenter.desktop&lt;/Filename&gt;
                &lt;Filename&gt;kde-kword.desktop&lt;/Filename&gt;
            &lt;/Include&gt;
        &lt;Menu&gt;
</markup
>
</programlisting>
</para>
<para
>Запис меню з 3 програмами: <itemizedlist>

<listitem
><para
><filename
>/usr/share/applications/Acrobat Reader.desktop</filename
></para
></listitem>

<listitem
><para
><filename
>/opt/kde3/share/applications/kde/kpresenter.desktop</filename
></para
></listitem>

<listitem
><para
><filename
>/opt/kde3/share/applications/kde/kword.desktop</filename
></para
></listitem>

</itemizedlist>
</para>
</informalexample>
</sect2>

<sect2 id="stored-where">
<title
>Де зберігається?</title>

<para
>У файлах <literal role="extension"
>.menu</literal
> описується структура меню. Файли зберігаються у каталогах <filename class="directory"
>$<envar
>KDEDIR</envar
>/etc/xdg/menus</filename
> і <filename class="directory"
>/etc/xdg/menus</filename
>. У цих каталогах зберігається загальносистемна структура меню, ці каталоги визначаються змінною $<envar
>XDG_CONFIG_DIRS</envar
>. У каталозі <filename class="directory"
>$<envar
>HOME</envar
>/.config/menus</filename
> зберігаються внесені користувачем зміни до меню, адреса цього каталогу визначається змінною $<envar
>XDG_CONFIG_HOME</envar
>. Ознайомитися з докладнішими відомостями можна за адресою <ulink url="http://www.freedesktop.org/Standards/basedir-spec"
>http://www.freedesktop.org/Standards/basedir-spec</ulink
>.</para>

<para
>У файлах <literal role="extension"
>.desktop</literal
> описуються програми, ці файли зберігаються у каталогах <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/applications</filename
>, <filename class="directory"
>/usr/share/applications</filename
>, <filename class="directory"
>/usr/local/share/applications</filename
>. Це загальносистемні файли програм <literal role="extension"
>.desktop</literal
>, перелік каталогів визначається змінною $<envar
>XDG_DATA_DIRS</envar
>.</para>

<para
>У каталозі <filename class="directory"
>$<envar
>HOME</envar
>/.local/applications</filename
> містяться файли <literal role="extension"
>.desktop</literal
> користувача та внесені користувачем зміни. Назва каталогу визначається змінною $<envar
>XDG_DATA_HOME</envar
>. Докладніші відомості можна отримати за адресою <ulink url="http://www.freedesktop.org/Standards/basedir-spec"
>http://www.freedesktop.org/Standards/basedir-spec</ulink
></para>


<para
>У файлах <literal role="extension"
>.directory</literal
> описуються підменю, ці файли зберігаються у каталогах: <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/desktop-directories</filename
>, <filename class="directory"
>/usr/share/desktop-directories</filename
>, <filename class="directory"
>/usr/local/share/desktop-directories</filename
>. Це загальносистемні файли меню <literal role="extension"
>.directory</literal
>, перелік каталогів, де вони зберігаються, визначається змінною $<envar
>XDG_DATA_DIRS</envar
>. Зміни, внесені користувачем, зберігаються у каталозі <filename class="directory"
>$<envar
>HOME</envar
>/.local/desktop-directories</filename
>. Назва цього каталогу визначається змінною $<envar
>XDG_DATA_HOME</envar
>. Докладніші відомості можна отримати за адресою <ulink url="http://www.freedesktop.org/Standards/basedir-spec"
>http://www.freedesktop.org/Standards/basedir-spec</ulink
></para>

<informalexample>
<para
>Приклад з <filename
>applications.menu</filename
>: <programlisting
><markup>
             &lt;Menu&gt;
                        &lt;Name&gt;Art&lt;/Name&gt;
                        &lt;Directory&gt;suse-edutainment-art.directory&lt;/Directory&gt;
                        &lt;Include&gt;
                                &lt;Category&gt;X-SuSE-Art&lt;/Category&gt;
                        &lt;/Include&gt;
                &lt;/Menu&gt;
</markup
>
</programlisting>
</para>

<para
><literal
>Art</literal
> — це внутрішня назва цього меню. <filename
>suse-edutainment-art.directory</filename
> визначає назву і піктограму, які буде використано для цього меню, у меню буде показано всі програми, що містять записи <literal
>X-SuSE-Art</literal
> у полі категорії, наприклад: <programlisting
>Categories=Qt;KDE;Education;X-SuSE-Art
</programlisting
></para>

<para
><filename
>suse-edutainment-art.directory</filename
> визначає назву і піктограму для цього меню: <programlisting
>[Desktop Entry]
Name=Art and Culture
Icon=kcmsystem
</programlisting>
</para>
</informalexample>
</sect2>

<sect2 id="common-pitfalls">
<title
>Типові пастки</title>

<para
>Програми, яких <emphasis
>немає</emphasis
> у меню, <emphasis
>не</emphasis
> існують для інших програм, їх не можна використовувати для прив’язки до типу файлів: якщо ви вилучите програму з меню, &kde; вважатиме, що ви не бажаєте нею користуватися.</para>

<para
>Якщо програми є небажаними у меню, вам слід або пересунути їх до меню <filename
>.hidden</filename
> або до спеціального меню з параметром <programlisting>
NoDisplay=true
</programlisting
> у файлі <literal role="extension"
>.directory</literal
></para>
</sect2>

<sect2 id="essential-menus">
<title
>Основні меню</title>

<para
>У каталозі <filename class="directory"
>$<envar
>KDEDIR</envar
>/etc/xdg/menus/applications-merged/</filename
> міститься файл <filename
>kde-essential.menu</filename
>, до якого включено всі базові меню, які, зазвичай, не показуються у самому меню &kde;: <itemizedlist>
<listitem
><para
>У Центрі керування є приховане меню «Параметри», вміст якого визначається <filename
>kde-settings.menu</filename
>, а піктограма і назва визначаються у файлі <filename
>kde-settings.directory</filename
></para>
</listitem>
<listitem
><para
>У Інформаційному центрі є приховане меню «Інформація», вміст якого визначається файлом <filename
>kde-information.menu</filename
>, а піктограма і назва визначаються файлом <filename
>kde-information.directory</filename
>.</para>
</listitem>

<listitem
><para
>Зберігачі екрана мають приховане меню «Система/Зберігачі екрана», чий вміст визначається файлом <filename
>kde-screensavers.menu</filename
>, а піктограма і назва визначаються файлом <filename
>kde-system-screensavers.directory</filename
>. У файлі <filename
>$<envar
>KDEDIR</envar
>/share/desktop-directories/kde-system-screensavers.directory</filename
> містяться записи: <programlisting
>NoDisplay=true
</programlisting>
</para>
</listitem>
</itemizedlist
></para>
</sect2>

<sect2 id="old-style-menus">
<title
>Меню у старому стилі</title>

<para
>У &kde; підтримуються і меню у застарілому стилі, які визначаються структурою каталогів у <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/applnk</filename
> (загальносистемний) і <filename class="directory"
>$<envar
>HOME</envar
>/.kde/share/applnk</filename
> (каталог користувача). Ці меню буде використано, якщо у файлі <literal role="extension"
>.desktop</literal
> немає рядка «<varname
>Categories</varname
>=». У останньому випадку, запис визначає розташування меню.</para>
</sect2>

<sect2 id="ksycoca">
<title
><application
>KSycoca</application
></title>
<para
><application
>KSycoca</application
> кешує структуру меню і відомості щодо всіх доступних програм. Ви можете перебудувати базу даних за допомогою команди <userinput
><command
>kbuildsycoca4</command
></userinput
>. Зібрана база даних зберігаються у каталозі <filename class="directory"
>/var/tmp/kdecache-${<envar
>USER</envar
>}/ksycoca</filename
>. Ця база оновлюється у автоматичному режимі програмою <application
>KDED</application
>, перевіряється під час входу до &kde;, після входу до системи <application
>KDED</application
> наглядає за цією базою даних.</para>

<para
>Щоб вимкнути спостереження за змінами (оскільки воно може погано працювати з NFS) додайте до <filename
>kdedrc</filename
> такі рядки: <programlisting
>[General]
CheckSycoca=false
</programlisting>
</para>

<para
>Щоб виконати примусове повторне створення бази даних, виконайте команду <userinput
><command
>touch $<envar
>KDEDIR</envar
>/share/services/update_ksycoca</command
></userinput
>.</para>

</sect2>

<sect2 id="kmenuedit">
<title
>&kmenuedit;</title>

<para
>Програму &kmenuedit; призначено для зміни налаштувань для окремого користувача. Зміни у структурі меню зберігаються до файла <filename
>~/.config/menus/applications-kmenuedit.menu</filename
>, зміни у переліку програм — у <filename class="directory"
>~/.local/share/applications/</filename
>, а зміни у підменю (піктограми, назви) зберігаються у <filename class="directory"
>~/.local/share/desktop-directories/</filename
>. Інструмент адміністрування KIOSK використовує &kmenuedit; і копіює зміни до адрес, визначених профілем, та загальносистемних адрес. </para>

</sect2>

</sect1>

<!-- This section might be redundant. If it isn't, it needs some screenies -->
<sect1 id="kde-panel">
<title
>Панель &kde;</title>

<para
>Панель &kde; також відома за назвою &kicker;. Панель має модульну будову і складається з таких компонентів: <itemizedlist>
<listitem
><para
>Аплети</para
></listitem>
<listitem
><para
>Кнопки програм</para
></listitem>
<listitem
><para
>Особливі кнопки</para
></listitem>
</itemizedlist>
</para>

<para
>Типово, на панелі містяться такі аплети: <itemizedlist
> <listitem
><para
>Пейджер — показує мініатюри віртуальних стільниць</para
></listitem
> <listitem
><para
>Панель задач</para
></listitem
> <listitem
><para
>Системний лоток</para
></listitem
> <listitem
><para
>Годинник</para
></listitem
> </itemizedlist
> та такі кнопки з особливим призначенням: <itemizedlist>
<listitem
><para
>Меню &kde;</para
></listitem>
<listitem
><para
>Кнопка стільниці</para
></listitem>
</itemizedlist>
</para>

<para
>Сюди також додаються різноманітні кнопки програм, якщо дозволяє наявний простір: <itemizedlist>
<listitem
><para
>Кнопка домівки</para
></listitem>
<listitem
><para
>Кнопка переглядача</para
></listitem>
<listitem
><para
>Кнопка KMail</para
></listitem>
</itemizedlist>
</para>
</sect1>

<sect1 id="file-associations">
<title
>Прив’язка файлів</title>

<para
>За допомогою прив’язки файлів можна пов’язати файли певного типу з програмою або програмами. Тип файла встановлюється за визначеним типом &MIME; цього файла. Відомі &kde; типи &MIME; зберігаються у каталозі <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/mimelnk</filename
>. Кожен файл <literal role="extension"
>.desktop</literal
> програми містить список типів &MIME;, які підтримуються цією програмою.</para>

<informalexample>
<para
><filename
>kview.desktop</filename
>: <programlisting
>MimeType=image/gif;image/x-xpm;image/x-xbm;image/jpeg;
image/x-bmp;image/png;image/x-ico;image/x-portable-bitmap;
image/x-portable-pixmap;image/x-portable-greymap;
image/tiff;image/jp2
</programlisting>
</para>

<para
><filename
>kuickshow.desktop</filename
>: <programlisting
>MimeType=image/gif;image/x-xpm;image/x-xbm;image/jpeg;
image/png;image/tiff;image/x-bmp;image/x-psd;image/x-eim;
image/x-portable-bitmap;image/x-portable-pixmap;
image/x-portable-greymap
</programlisting>
</para>

<para
>Обидві ці програми здатні відкривати файли типу image/gif. Яку ж з них буде використано для відкриття файла <literal role="extension"
>.gif</literal
>?</para>

<para
>Програму з вищим пріоритетом! <filename
>kview.desktop</filename
> містить рядок <programlisting>
InitialPreference=3
</programlisting
> а <filename
>kuickshow.desktop</filename
> містить рядок <programlisting>
InitialPreference=6
</programlisting
> Тому для відкриття файлів <literal role="extension"
>.gif</literal
> буде використано програму &kuickshow;. </para>

<para
>Як зробити &kview; типовим переглядачем?</para>

<para
>Користувач може змінити прив’язку за допомогою Центру керування. Внесені користувачем зміни буде збережено у файлі <filename
>$<envar
>HOME</envar
>/.kde/share/config/profilerc</filename
>. Щоб використати однакові параметри для декількох користувачів, ці параметри слід зберегти до каталогу профілів користувачів або спільного каталогу налаштувань &kde;: тоді налаштування будуть типовими для всіх користувачів.</para>

</informalexample>

</sect1>

</chapter>

<chapter id="locking-down-kde">
<title
>Блокування стільниці &kde;</title>

<sect1 id="how-it-works-the-basics">
<title
>Як це працює — Основи</title>

<para
>Можливості блокування &kde; сконцентровано навколо таких пунктів:</para>

<itemizedlist>
<listitem
><para
><link linkend="immutable-configuration-options"
>Зробити параметри налаштування незмінними</link
></para
></listitem>
<listitem
><para
><link linkend="action-restrictions"
>Обмеження певних дій</link
></para
></listitem>
<listitem
><para
><link linkend="url-restrictions"
>Обмеження доступу до певних адрес &URL;</link
></para
></listitem>
<listitem
><para
><link linkend="configuration-modules"
>Обмеження доступу до певних модулів налаштування</link
></para
></listitem>
</itemizedlist>

</sect1>

<sect1 id="immutable-configuration-options">
<title
>Як зробити параметри налаштування незмінними</title>
<subtitle
>Блокування стільниці &kde;</subtitle>

<para
>За допомогою незмінних параметрів системний адміністратор може забезпечити збереження типових параметрів середовища, які користувач не зможе змінити.</para>

<para
>Після того, як ви зробите параметри налаштування незмінними, середовище ігноруватиме попередньо створені користувачами параметри.</para>

<para
>Керувати параметрами можна окремо, за групами параметрів або за файлами, у яких зберігаються значення параметрів.</para>

<para
>Якщо файл або група є незмінними, всі параметри налаштування для цього файла або групи також є незмінними, навіть ті параметри, для яких адміністратором системи не було вказано типових значень.</para>

<note
><para
>Рівень підтримки програмами незмінних параметрів може бути різним. Хоча користувач не зможе змінювати на постійній основі незмінні параметри налаштування, у інтерфейсі користувача можуть залишатися пункти, призначені для таких змін.</para
></note>

</sect1>

<sect1 id="action-restrictions">
<title
>Обмеження дій</title>

<para
>Програми &kde; створено на основі концепції дій. Дії може бути активовано у різний спосіб, типово, за допомогою панелі меню, однієї з панелей інструментів або клавіатурного скорочення. Прикладом дії є <action
>Зберегти документ</action
>. Якщо вам відома внутрішня назва дії, ви можете обмежити її використання. Після обмеження дії вже не буде показано у меню або на панелі інструментів. Внутрішньою назвою дії <action
>Зберегти документ</action
> є <option
>action/file_save</option
>. У оболонці блокування також передбачено набір абстрактніших обмежень, якими можна скористатися для вимикання функціональних можливостей, які не зводяться до окремої дії. Прикладом такого набору є обмеження <option
>shell_access</option
>, за допомогою якого можна вимкнути всі функціональні можливості, за допомогою яких користувачеві надається доступ до оболонки команд &UNIX;.</para>

<example>
<title
>Обмеження доступу користувачів до командної оболонки</title>

<para
>Для того, щоб заборонити користувачеві доступ до командної оболонки, ми можемо обмежити дію <option
>shell_access</option
> додаванням таких рядків до файла <filename
>kdeglobals</filename
>: </para
> 

<screen
>[KDE Action Restrictions]
shell_access=false</screen>

<para
>Оскільки такі зміни вплинуть на меню &kde; і перелік доступних програм, нам слід примусово оновити базу даних sycoca:</para>

<screen
><userinput
><command
>touch</command
> <filename
>$<envar
>KDEDIR</envar
>/share/services/update_ksycoca</filename
></userinput
></screen>

<para
>Тепер повторно увійдіть до &kde; і перевірте такі об’єкти:</para>

<itemizedlist>
<listitem
><para
>K-меню</para
></listitem>
<listitem
><para
>Пункт меню &konqueror;, <menuchoice
><guimenu
>Інструменти</guimenu
> <guimenuitem
>Відкрити термінал</guimenuitem
></menuchoice
></para
></listitem>
<listitem
><para
>Запуск команди за допомогою комбінації клавіш <keycombo action="simul"
>&Alt;<keycap
>F2</keycap
></keycombo
></para
></listitem>
</itemizedlist>
</example>
<para
>Повну документацію щодо всіх можливих дій можна знайти за адресою <ulink url="http://www.kde.org/areas/sysadmin/"
>http://www.kde.org/areas/sysadmin/</ulink
>.</para>

<para
>Декілька з найцікавіших дій перелічено нижче:</para>

<variablelist>
<varlistentry>
<term
><option
>action/options_configure</option
></term>
<listitem
><para
>Пункт <guimenuitem
>Налаштувати</guimenuitem
> з меню <guimenu
>Параметри</guimenu
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>action/help_report_bug</option
></term>
<listitem
><para
>Пункт <guimenuitem
>Надіслати звіт про помилку</guimenuitem
> з меню <guimenu
>Довідка</guimenu
>.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>action/kdesktop_rmb</option
></term>
<listitem
><para
>Викликає контекстне меню стільниці.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>action/kicker_rmb</option
></term>
<listitem
><para
>Викликає контекстне меню панелі.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>user/root</option
></term>
<listitem
><para
>Ховає всі дії або програми, для виконання яких потрібні права доступу <systemitem class="username"
>root</systemitem
>.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>shell_access</option
></term>
<listitem
><para
>Ховає всі дії або програми, які надають доступ до командної оболонки.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>print/system</option
></term>
<listitem
><para
>Вимикає пункт вибору системи друку (сервера).</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>lock_screen</option
></term>
<listitem
><para
>Вмикає або вимикає можливість блокування користувачем екрана</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>start_new_session</option
></term>
<listitem
><para
>Вмикає або вимикає можливість запуску користувачем другого сеансу X (див. також &kdm;)</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>opengl_screensavers</option
></term>
<listitem
><para
>Вмикає або вимикає можливість використання зберігачів екрана з підтримкою OpenGL.</para
></listitem>
</varlistentry>
<varlistentry>
<term
><option
>manipulatescreen_screensavers</option
></term>
<listitem
><para
>Дозволити використання зберігачів екрана, які не приховують всього екрана</para
></listitem>
</varlistentry>
</variablelist>

</sect1>

<sect1 id="url-restrictions">
<title
>Обмеження адрес &URL;</title>

<para
>Існує три типи обмежень, які може бути накладено на адреси &URL;:</para>

<variablelist>
<varlistentry>
<term
>list</term>
<listitem
><para
>Обмежує перегляд каталогів.</para
></listitem>
</varlistentry>
<varlistentry>
<term
>open</term>
<listitem
><para
>Обмежує відкриття певних адрес &URL;</para
></listitem>
</varlistentry>
<varlistentry>
<term
>Redirect</term>
<listitem
><para
>Обмежує можливість однієї адреси &URL; відкривати іншу адресу &URL;, у автоматичному режимі або як гіперпосилання.</para
></listitem>
</varlistentry>
</variablelist>

<para
>Правила перевірятимуться за порядком їх зазначення. Останнє з правил, які застосовується до адрес &URL;, визначає, чи можливий доступ до цієї адреси &URL;.</para>

<para
>Наступні правила вимикають можливість відкриття адрес &URL; http і https &URL; поза межами домену <systemitem class="domainname"
>.ourcompany.com</systemitem
>:</para>

<screenco
><areaspec>
<area id="url_commas" coords="3"/>
<area id="url_rule1" coords="3"/>
<area id="url_rule2" coords="4"/>
</areaspec>
<screen
>[KDE URL Restrictions]
rule_count=2
rule_1=open,,,,http,,,false
rule_2=open,,,,http,*.ourcompany.com,,true</screen
></screenco>

<calloutlist>
<callout arearefs="url_commas">
<para
>За допомогою перших чотирьох ком пропущено критерії вибору відносно початкової адреси &URL;. Ця частина може знадобитися лише для правил типу переспрямування.</para
> 
</callout>
<callout arearefs="url_rule1"
><para
><option
>rule_1</option
> забороняє відкриття будь-якої з адрес &URL; http або https</para
></callout>
<callout arearefs="url_rule2"
><para
><option
>rule_2</option
> надає змогу відкривати будь-які адреси &URL; http і https у домені <systemitem class="domainname"
>.ourcompany.com</systemitem
>. Зауважте, що шаблон заміни <token
>*</token
> можна використовувати лише на початку назви домену.</para
></callout>
</calloutlist>

<para
>Наведені нижче правила призведуть до того, що користувач більше не зможе переглядати вміст каталогів локальної файлової системи поза межами свого каталогу $<envar
>HOME</envar
>:</para>

<screenco
><areaspec>
<area id="home_rule1" coords="3"/>
<area id="home_rule2" coords="4"/>
</areaspec>
<screen
>[KDE URL Restrictions]
rule_count=2
rule_1=list,,,,file,,,false
rule_2=list,,,,file,,$HOME,true</screen
></screenco>

<calloutlist>
<callout arearefs="home_rule1"
><para
><option
>rule_1</option
> забороняє перегляд будь-яких локальних каталогів</para
></callout>
<callout arearefs="home_rule2"
><para
><option
>rule_2</option
> надає змогу переглядати каталоги у власному каталозі користувача $<envar
>HOME</envar
>.</para
></callout>
</calloutlist>

<para
>$<envar
>HOME</envar
> і $<envar
>TMP</envar
> — це особливі значення, які позначають домашній каталог користувача і тимчасовий каталог користувача &kde;, наприклад, <filename class="directory"
>/tmp/kde-bastian</filename
></para>

<para
>За допомогою наступних правил можна зробити так, щоб користувач більше не міг відкривати локальні файли поза межами свого каталогу $<envar
>HOME</envar
>:</para>

<screenco
><areaspec>
<area id="local_rule1" coords="3"/>
<area id="local_rule2" coords="4"/>
<area id="local_rule3" coords="5"/>
</areaspec>
<screen
>[KDE URL Restrictions]
rule_count=3
rule_1=open,,,,file,,,false
rule_2=open,,,,file,,$HOME,true
rule_3=open,,,,file,,$TMP,true</screen
></screenco>

<calloutlist>
<callout arearefs="local_rule1"
><para
><option
>rule_1</option
> забороняє відкриття будь-якого локального файла</para
></callout>
<callout arearefs="local_rule2"
><para
><option
>rule_2</option
> дозволяє відкриття файлів у власному каталозі користувача, $<envar
>HOME</envar
>.</para
></callout>
<callout arearefs="local_rule3"
><para
><option
>rule_3</option
> дозволяє відкриття файлів у тимчасовому каталозі &kde; користувача. Потреба у такому відкритті пов’язана з тим, що певні програми &kde; спочатку звантажують файл або документ до тимчасового каталогу, а вже потім відкривають його у самій програмі.</para
></callout>
</calloutlist>


<para
>За допомогою параметра переспрямування можна керувати тим, чи матимуть змогу документи з певною адресою виконувати автоматичне переспрямування або переспрямування вручну за гіперпосиланням на якусь іншу адресу. Загальні заходи безпеки надають у ваше розпорядження типовий набір правил. Наприклад, документи з інтернету не можуть посилатися на локальні документи.</para>

<para
>Наприклад, якщо ви бажаєте надати серверу внутрішньої мережі <systemitem class="systemname"
>www.mycompany.com</systemitem
> можливість посилатися на локальні файли ви можете додати таке правило:</para>

<screen
>[KDE URL Restrictions]
rule_count=1
rule_1=redirect,http,www.mycompany.com,,file,,,true</screen>

<para
>Крім зазначення протоколів за назвою, можна вказувати цілі групи протоколів. Для цього визначено такі групи:</para>

<variablelist>
<varlistentry>
<term
>:local</term>
<listitem
><para
>Протоколи, за допомогою яких здійснюється доступ до даних, що зберігаються локально, приклади: file:/, man:/, fonts:/, floppy:/</para
></listitem>
</varlistentry>
<varlistentry>
<term
>:internet</term>
<listitem
><para
>Загальні протоколи інтернету, на зразок http і ftp</para
></listitem>
</varlistentry>
</variablelist>

<para
>Відомості щодо протоколів зберігаються у файлах <literal role="extension"
>*.protocol</literal
> каталогу <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/services</filename
>.</para>

<para
>Рядок <option
>Class</option
>= запис визначає групу протоколу: <userinput
><command
>grep</command
> <option
>Class=</option
> <filename
>$<envar
>KDEDIR</envar
>/share/services/*.protocol</filename
></userinput
></para>

<para
>Загальні правила:</para>

<itemizedlist>
<listitem
><para
>Протоколи :local можуть посилатися на будь-які інші протоколи</para
></listitem>
<listitem
><para
>Завжди можна посилатися на протокол :internet</para
></listitem>
<listitem
><para
>Не всі протоколи є частиною групи, наприклад, fish:/ не є частиною групи.</para
></listitem>
</itemizedlist>

</sect1>

<sect1 id="configuration-modules">
<title
>Модулі налаштування</title>

<para
>У &kde; передбачено модулі налаштування, за допомогою яких можна налаштувати різноманітні аспекти середовища &kde;. Модулі налаштування зібрано у Центрі керування, діалоговому вікні налаштування програми або у обох цих місцях.</para>

<informalexample>
<para
>Доступ до модуля налаштування проксі-сервера можна отримати за допомогою Центру керування, але він також є частиною діалогового вікна <guilabel
>Налаштувати Konqueror</guilabel
> програми &konqueror;</para>

<para
>Окремі модулі налаштування можна запустити за допомогою команди <command
>kcmshell4</command
> <replaceable
>назва_модуля</replaceable
></para>

<para
>Щоб відкрити модуль налаштування проксі-сервера, скористайтесь командою:</para>
<itemizedlist>
<listitem
><para
><command
>kcmshell4</command
> <filename
>kde-proxy.desktop</filename
></para
></listitem>
<listitem
><para
><command
>kcmshell4</command
> proxy</para
></listitem>
</itemizedlist>

<para
><note
><para
>Не всі програми можна налаштувати за допомогою модулів налаштування, часто діалогове вікно налаштування є частиною самої програми.</para
></note
></para>
</informalexample>

<para
>Всі модулі налаштування, строго кажучи, є частиною меню &kde;.</para>

<itemizedlist>
<listitem>
<para
>Модулі, які можна побачити у Центрі керування, зазвичай мають файл <literal role="extension"
>.desktop</literal
> у каталозі <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/applications/kde</filename
>, їх впорядковано у прихованому меню <guimenu
>Параметри-Модулі</guimenu
> файла <filename
>kde-settings.menu</filename
>, включеного через <filename
>kde-essential.menu</filename
></para>
<screen
><userinput
><command
>kbuildsycoca4</command
> <option
>--menutest</option
> 2&gt; /dev/null | <command
>grep</command
> Settings-Modules</userinput
></screen>
</listitem>
<listitem>
<para
>Модулі налаштування окремих програм, зазвичай, мають файл <literal role="extension"
>.desktop</literal
>, що зберігається у каталозі <filename
>$<envar
>KDEDIR</envar
>/share/applnk/.hidden</filename
>, який відповідає прихованому меню .hidden, включеному як результат обробки <markup
>&lt;KDELegacyDirs/&gt;</markup
></para>
<screen
><userinput
><command
>kbuildsycoca4</command
> <option
>--menutest</option
> 2&gt; /dev/null | <command
>grep</command
> .hidden</userinput
></screen>
</listitem>
<listitem
><para
>Починаючи з &kde; 3.3 у вас з’явилася можливість редагування Центру керування за допомогою програми <application
>kcontroledit</application
>. Робота з <application
>kcontroledit</application
> схожа на роботу з <application
>kmenuedit</application
>, зміни стосуються лише поточного користувача. Для внесення змін, що стосуватимуться всіх користувачів, скористайтеся <application
>kiosktool</application
>.</para
></listitem
> 
</itemizedlist>

<para
>Ви можете вимкнути окремі модулі налаштування додаванням таких рядків до файла <filename
>kdeglobals</filename
>:</para>

<screen
>[KDE Control Module Restrictions]
<replaceable
>ідентифікатор модуля</replaceable
>=false</screen>
<para
>Наприклад, щоб вимкнути модуль налаштування проксі-сервера, скористайтеся командою</para>
<screen
>[KDE Control Module Restrictions]
kde-proxy.desktop=false</screen>
<para
>Відкрийте Центр керування і перевірте: налаштування проксі сервера має зникнути з діалогового вікна <guilabel
>Налаштувати Konqueror</guilabel
>.</para>

</sect1>
<!-- 
<sect1 id="making-it-work">
<title
>Making it Work</title>

Making It Work
KDE 3.2: Set $KDEDIRS from startkde script
Distribute profiles to all clients

</para>
</sect1>
-->
</chapter>

<chapter id="the-lazy-admin">
<title
>Ліниве адміністрування</title>

<!-- This section appears to need quite a lot of additional words to -->
<!-- make sense. Perhaps it would be better to comment it out if it -->
<!-- can't be updated before the next release (Phil) -->
<!-- FIXME: Commented it out until it's got some more content fleshing it -->
<!-- out (Lauri)

<sect1 id="lazy-admin-overview">
<title
>Overview</title>

<para>
The Lazy Admin
Overview
Deployment
	How to get &kde; available on many clients
Remote Desktop Sharing
Take a look at someone else desktop
DCOP
	The DCOP command line tool makes it possible to control &kde; applications from the command line
KDialog
	A versatile tool to use standard &kde; dialogs in your own scripts



Deployment
Thin Clients
Installing Software
= AutoYaST
= KickStart
Maintaining Settings
= /etc/kderc, other settings
= Use rsync to copy files around
= Shared filesystem such as NFS
o store profiles themselves on NFS



http://www.suse.de/~nashif/autoinstall/index.html

</para>
</sect1>
-->
<sect1 id="remote-desktop-sharing">
<title
>Дистанційна робота за стільницею</title>

<para
>За допомогою спільного використання стільниці ви можете дозволити віддаленим користувачам переглядати і за бажання керувати стільницею поточного користувача. Для роботи віддалений користувач має отримати запрошення, ви можете створювати захищені паролем запрошення. Ця можливість є ідеальною для команд з технічної підтримки або адміністраторів, які бажають отримати доступ до стільниць користувачів для усування або виправлення проблем та надання користувачам настанов з приводу використання програм.</para>

<para
>Для спільного використання стільниці вам потрібні будуть дві програми: &krfb; (віддалений буфер кадрів &kde;, сервер VNC) і &krdc; (з’єднання з віддаленою стільницею &kde;; клієнт VNC.)</para>

<para
>За допомогою &krfb; будь-який користувач може створювати і керувати запрошеннями. За допомогою запрошень можна створювати одноразовий пароль, за допомогою якого отримувач може з’єднатися з вашою стільницею. Типово, цей пароль буде чинним лише протягом одного успішного з’єднання, строк його дії буде завершено за одну годину, якщо ви ним не скористаєтеся.</para>

<para
>Вхідними з’єднаннями керує модуль kded, kinetd. Для перевірки, чи запущено цей модуль, ви можете скористатися командою <userinput
><command
>dcop</command
> kded kinetd services</userinput
>. Типово, &krfb; очікуватиме на з’єднання на порту 5900. Після отримання вхідного запиту на з’єднання, програма відкриє діалогове вікно підтвердження з’єднання користувачем.</para>

<!-- TODO: Write a bit more here, with a walk through maybe? -->

</sect1>

<sect1 id="kde-diy">
<title
>«Зроби сам» у &kde; — створення власних інструментів</title>

<sect2 id="dcop">
<title
>DCOP</title>

<para
>Desktop COmmunication Protocol, <acronym
>DCOP</acronym
>, — це простий механізм обміну даними між процесами. За допомогою <acronym
>DCOP</acronym
> користувач може взаємодіяти з програмами, які виконуються у системі. До складу &kde; входять дві програми для використання <acronym
>DCOP</acronym
>: <application
>dcop</application
>, інструмент для роботи у командному рядку, і <application
>kdcop</application
>, програма з графічним інтерфейсом. </para>
<para
>Декілька зауважень щодо використання <command
>dcop</command
>: </para>

<para>
<itemizedlist>
<listitem>
<para
><command
>dcop</command
> [параметри] [програма [об’єкт [функція [аргумент1] [аргумент2] ... ] ] ] </para>
</listitem>
<listitem>
<para
>Програми, якими було відкрито декілька вікон, буде позначено у списку записами &lt;програма&gt;-<acronym
>PID</acronym
> </para>
</listitem>
<listitem>
<para
>Під час зазначення параметрів слід враховувати регістр. setFullScreen і setfullscreen — це дві різні функції. </para>
</listitem>
<listitem>
<para
>У параметрах програми і об’єктів можна використовувати шаблон заміни формальних виразів *. <screen
><prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> kon*</option
></userinput>
konqueror-16006
konsole-8954
</screen>
</para>
</listitem>

</itemizedlist>

</para>

<para
>Нижче наведено декілька прикладів команд і виведених ними даних: </para>

<informalexample>
<screen
><prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> konsole*</option
></userinput>
konsole-8954
</screen>
<para
>Одну з &konsole; запущено з <acronym
>PID</acronym
> рівним 8954.</para>

<screen
><prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> konsole-8954</option
></userinput>
KBookmarkManager-.../share/apps/kfile/bookmarks.xml
KBookmarkManager-.../share/apps/konqueror/bookmarks.xml
KBookmarkNotifier
KDebug
MainApplication-Interface
konsole (default)
konsole-mainwindow#1
ksycoca
session-1
session-2
session-3
session-4
</screen>
<para
>Тут ви бачите, що запущено чотири сеанси.</para>

<screen
><prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> konsole-8954</option
><option
> konsole</option
></userinput>
QCStringList interfaces()
QCStringList functions()
int sessionCount()
QString currentSession()
QString newSession()
QString newSession(QString type)
QString sessionId(int position)
void activateSession(QString sessionId)
void nextSession()
void prevSession()
void moveSessionLeft()
void moveSessionRight()
bool fullScreen()
void setFullScreen(bool on)
ASYNC reparseConfiguration()
</screen>
<para
>Це параметри головної програми &konsole;. </para>

<screen
><prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> konsole-8954</option
><option
> session-1</option
></userinput>
QCStringList interfaces()
QCStringList functions()
bool closeSession()
bool sendSignal(int signal)
void clearHistory()
void renameSession(QString name)
QString sessionName()
int sessionPID()
QString schema()
void setSchema(QString schema)
QString encoding()
void setEncoding(QString encoding)
QString keytab()
void setKeytab(QString keyboard)
QSize size()
void setSize(QSize size)
</screen>
<para
>А ось параметри для першого сеансу, session-1.</para>

<screen
><prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> konsole-8954</option
><option
> konsole</option
><option
> setFullScreen</option
><parameter
> true</parameter
></userinput
>
</screen>
<para
>За допомогою цієї команди можна розгорнути вікно &konsole; на весь екран.</para>

</informalexample>

<para
>Якщо існує декілька програм або об’єктів, яким з них слід скористатися? Як щодо дій за посиланням? </para>
<screen
><prompt
>&percnt; </prompt
><userinput
><command
>echo</command
><option
> $KONSOLE_DCOP</option
></userinput>
DCOPRef(konsole-7547,konsole)

<prompt
>&percnt; </prompt
><userinput
><command
>dcop</command
><option
> $KONSOLE_DCOP</option
><option
> newSession</option
></userinput>
session-6

<prompt
>&percnt; </prompt
><userinput
><command
>dcopstart</command
><option
> konsole</option
></userinput>
konsole-9058


#!/bin/sh
konsole=$(dcopstart konsole-script)
session=$(dcop $konsole konsole currentSession)
dcop $konsole $session renameSession Local

session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession Remote

session=$(dcop $konsole konsole newSession)
dcop $konsole $session renameSession Code
dcop $konsole $session sendSession 'cd /my/work/directory'

</screen>

</sect2>

<sect2 id="kdialog">
<title
>KDialog</title>
<subtitle
>«Зроби сам» у &kde; — створення власних інструментів</subtitle>

<para
>Ви можете скористатися діалоговими вікнами &kde; з ваших власних скриптів, поєднавши потужність скриптів оболонки &UNIX; з простотою використання &kde;.</para>

<screen
><userinput
><command
>kdialog</command
> <option
>--msgbox 'Прийшла пошта!'</option
></userinput
></screen>

<screen
><userinput
><command
>kdialog</command
> <option
>--title 'Свіжа пошта'</option
> <option
>--msgbox 'Надійшла свіжа пошта!'</option
></userinput
></screen>

<para
>Частину <application
>KDialog</application
> можна змінити за допомогою параметра <option
>--caption</option
></para>

<screen
><userinput
><command
>kdialog</command
> <option
>--title 'Свіжа пошта'</option
> <option
>--msgbox 'Надійшла свіжа пошта!'</option
> <option
>--dontagain myfile:mykey</option
></userinput
></screen>

<para
>Зберігає вибір, пов’язаний з повторним показом, до файла <filename
>$<envar
>KDEHOME</envar
>/share/config/myfile</filename
>, записом до нього таких рядків:</para>

<screen
>[Notification Messages]
mykey=false</screen>

<para
>Замість параметра <option
>--msgbox</option
> ви також можете скористатися, відповідно, параметрами <option
>--sorry</option
> і <option
>--error</option
>. Наприклад, ви можете скористатися командою <command
>kdialog</command
> <option
>--sorry 'Мережа недоступна'</option
> або <command
>kdialog</command
> <option
>--error 'Не вдалося відкрити поштову скриньку'</option
>.</para>

<para
>Крім того, можна створювати вікна повідомлень, за допомогою яких користувач може дати відповідь «так» або «ні».</para>

<screen
><command
>kdialog</command
> <option
>--yesno 'Бажаєте з’єднати комп’ютер
з мережею Інтернет?'</option
> <command
>echo</command
> <returnvalue
>$?</returnvalue
></screen>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Значення, яке буде повернуто</entry>
<entry
>Значення</entry>
</row>
</thead>
<tbody>
<row
><entry
>0</entry
><entry
>Так, Гаразд, Продовжити</entry
></row>
<row
><entry
>1</entry
><entry
>Ні</entry
></row>
<row
><entry
>2</entry
><entry
>Скасувати</entry
></row>
</tbody>
</tgroup>
</informaltable>

<para
>Не забудьте зберегти результат у змінній, якщо ви не бажаєте використовувати його напряму. Наведена нижче команда надасть $? нове значення. Тут ви можете також скористатися параметром <option
>--dontagain</option
>, щоб програма запам’ятала вибір користувача і скористалася ним наступні рази, вже не показуючи діалогового вікна.</para>

<para
>Іншими різновидами є:</para>

<variablelist>
<varlistentry>
<term
><option
>--warningyesno</option
></term>
<listitem>
<para
>подібно до <option
>--yesno</option
>, але з іншою піктограмою</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>--warningcontinuecancel</option
></term>
<listitem
><para
>з кнопками <guibutton
>Продовжувати</guibutton
> і <guibutton
>Скасувати</guibutton
></para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>--warningyesnocancel</option
></term>
<listitem
><para
>з кнопками <guibutton
>Так</guibutton
>, <guibutton
>Ні</guibutton
> і <guibutton
>Скасувати</guibutton
>. Приклад:</para>
<screen
><command
>kdialog</command
> <option
>--warningyesnocancel 'Бажаєте зберегти
зміни?'</option
></screen>
</listitem>
</varlistentry>
</variablelist>

<screen
><command
>kdialog</command
> <option
>--inputbox "Введіть ваше ім’я:" "ВашеІм’я"</option
></screen>

<para
>Результат буде виведено до stdout, щоб надати якийсь змінній значення виведених даних, ви можете скористатися конструкцією <userinput
>name=$(kdialog --inputbox "Введіть ваше ім’я:" "ВашеІм’я")</userinput
>. Останній з аргументів є необов’язковим, його буде використано для попереднього заповнення поля діалогового вікна.</para>

<screen
><userinput
><varname
>password</varname
>=$(<command
>kdialog</command
> <option
>--password "Введіть ваш пароль:"</option
>)</userinput
></screen>

<para
>Параметр <option
>--dontagain</option
> не працюватиме, якщо вказано параметри <option
>--inputbox</option
> або <option
>--password</option
></para>

<para
>Існує два різновиди діалогових вікон, у яких користувач може обирати пункти зі списку:</para>

<variablelist>
<varlistentry>
<term
><option
>--menu</option
></term>
<listitem>
<para
>Надає користувачеві змогу обрати єдиний пункт зі списку.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>--checklist</option
></term>
<listitem>
<para
>Надає користувачеві можливість обрати один або декілька пунктів зі списку.</para>
</listitem>
</varlistentry>
</variablelist>

<screen
><userinput
><varname
>city</varname
>=$(<command
>kdialog</command
> <option
>--menu "Оберіть місто" a Лондон b Мадрид c Париж d Берлін</option
>)</userinput
></screen>

<para
><varname
>$city</varname
> буде <returnvalue
>a</returnvalue
>, <returnvalue
>b</returnvalue
>, <returnvalue
>c</returnvalue
> або <returnvalue
>d</returnvalue
>.</para>

<screen
><userinput
><varname
>city</varname
>=$(<command
>kdialog</command
> <option
>--checklist "Оберіть місто" a Лондон off b Мадрид on c Париж on d Берлін off</option
>)</userinput
></screen>

<para
>Пункти «Мадрид» і «Париж» буде позначено. Результат, якщо буде позначено «Мадрид» і «Париж», буде <returnvalue
>"b"</returnvalue
> <returnvalue
>"c"</returnvalue
>.</para>

<para
>Якщо ви додасте параметр <option
>--separate-output</option
>, програма поверне значення <returnvalue
>b</returnvalue
> і <returnvalue
>c</returnvalue
> у окремих рядках, отже результат буде легше обробляти.</para>

<screen
>file=$(kdialog --getopenfilename $HOME)
file=$(kdialog --getopenfilename $HOME "*.png *.jpg|Файли зображень")
file=$(kdialog --getsavefilename $HOME/SaveMe.png)
file=$(kdialog --getexistingdirectory $HOME)</screen>

</sect2>

</sect1>

</chapter>
&groupware-with-kontact; </part>

<!-- 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" "part")
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
