Waldo
Bastian
bastian@kde.org
&Philip.Rodrigues; &Philip.Rodrigues.mail;

# &kde; для адміністраторів

## Нутрощі &kde;

### Огляд

ще не написано

### Компонування каталогів

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

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

- Одне на системному рівні (наприклад, `/opt/kde3`).

- Одне на рівні каталогу домівки користувача (зазвичай. `~/.kde`)

Як системний адміністратор, ви можете створити додаткові дерева. Такими додатковими деревами можна скористатися для зберігання профілів.

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

- `$`HOME`/.kde`

- `/opt/kde3`. (Характерно для &SuSE;; у інших дистрибутивах може використовуватися `/usr` або `/usr/kde3`)

- `/etc/opt/kde3`. (Цей каталог було додано &SuSE;).

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

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

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

- `$`HOME`/.kde/share/mimelnk/text/plain.desktop`

- `/opt/kde3/share/mimelnk/text/plain.desktop`

- `/etc/opt/kde3/share/mimelnk/text/plain.desktop`

Якщо користувач внесе зміни, ці зміни буде записано до файла `$`HOME`/.kde/share/mimelnk/text/plain.desktop`

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

Нехай існує два файли, вміст яких наведено нижче:

`$`HOME`/.kde/share/config/foobar`

      Color=red
      Shape=circle

`/etc/opt/kde3/share/config/foobar`

      Color=blue
      Position=10,10

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

    Color=red
    Shape=circle
    Position=10,10

### Визначення каталогів

Змінна середовища Приклад параметрів Коментар `KDEHOME` `~/.kde` `KDEROOTHOME` `/root/.kde` Різні змінні призначено для того, щоб адміністратор (root) не записував налаштувань до $KDEHOME користувача після запуску команд за допомогою `su`. `KDEDIR` `/opt/kde3`, `/usr`, `/usr/kde3` Залежить від вашого дистрибутива. Використовується &kde; 2. Якщо не встановлено значення, використовується типове значення, визначене під час збирання середовища. `KDEDIRS` `/opt/kde3`, `/usr`, `/usr/kde3` Нова змінна у &kde;3. Може вказувати на декілька тек, відокремлених у списку двокрапками. Якщо значення не встановлено, використовується значення змінної $`KDEDIR`

Не потрібно встановлювати, типові параметри мають працювати.

Запускаєте одночасно &kde;2 і &kde;3? Вкажіть для змінної $`KDEDIR` теки, що відповідає &kde; 2, а для змінної $`KDEDIRS` — теки &kde; 3.

Для представника персоналу обслуговування комп’ютерів університету підійдуть такі параметри:

    KDEHOME='~/.kde3'
    KDEROOTHOME='/root/.kde3'
    KDEDIRS='/opt/kde_staff:/opt/kde3'

### Профілі користувачів

У попередньому прикладі у `/opt/kde_staff` містилися додаткові параметри і програми для персоналу. За допомогою профілів користувачів ви можете додати цей каталог лише для певних користувачів і заборонити доступ до нього іншим. Додайте такі рядки до файла `/etc/kderc`:

    [Directories-staff]
    prefixes=/opt/kde_staff

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

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

    [Directories]
    userProfileMapFile=/etc/kde-user-profile

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

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

    [General]
    groups=staff_members
    [Groups]
    staff_members=staff

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

    [Users]
    bastian=staff

### Ще раз про структуру каталогів

Кожне з дерев каталогів, які використовуються &kde;, має фіксовану структуру каталогів. Каталоги, що не належать до певного дерева або просто не використовуються, не належать до структури. Наприклад, каталоги, що використовуються для тимчасових файлів, зазвичай, можна знайти лише у `$`KDEHOME``, їх просто немає у інших деревах каталогів.

### Каталоги, специфічні для архітектури системи

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

`bin`

  Використовується для файлів програм &kde;.

`lib`

  Використовується для бібліотек &kde;.

`lib/kde3`

  У цьому каталозі містяться компоненти, додатки та інші об’єкти, що завантажуються динамічно програмами &kde; 3.x.

### Спільні каталоги

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

`share/applnk`

  Файли `.desktop` для меню &kde; (застарілі)

`share/applications`

  Файли `.desktop` для меню &kde; (починаючи з версії &kde; 3.2)

`share/apps`

  Тут містяться файли даних програм. У кожної з програм цього каталогу є власний підкаталог, у якому зберігаються додаткові файли даних.

`share/config`

  Тут містяться файли налаштування. Файли налаштування, зазвичай, мають назву, що починається з назвою програми, якій вони належать, і завершується літерами rc. Особливим випадком є файл `kdeglobals`. Цей файл налаштувань читають всі програми &kde;.

`share/config/session`

  Цей каталог використовується інструментом керування сеансами, його, зазвичай, можна знайти лише у дереві `$`KDEHOME``. Наприкінці сеансу у цьому каталозі зберігають свій стан програми &kde;. Назви файлів каталогу складаються з назви відповідної програми з доданим числом. Інструмент керування сеансами, `ksmserver`, зберігає посилання на ці числа під час збереження сеансу у файлів `ksmserverrc`.

`share/doc/HTML`

  У цьому каталозі міститься документація щодо програм &kde;. Документацію розподілено за мовами і програмами, до яких вона належить. Зазвичай, у кожному з підкаталогів можна знайти два файли: файл `index.docbook`, у якому міститься документація у форматі DocBook без форматування, і файл `index.cache.bz2`, у якому міститься та сама документація, але форматована як стиснутий `bzip2` &HTML;. &HTML;-версію використовує Центр довідки. Якщо &HTML;-версія відсутня, Центр довідки створить її з версії DocBook, але цей процес може тривати досить довго.

`share/icons`

  У цьому каталозі зберігаються піктограми. Піктограми впорядковано за темами, розмірами і призначенням.

`share/mimelnk`

  У цьому каталозі зберігаються файли `.desktop`, у яких описано типи &MIME;. &kde; використовує типи &MIME; для визначення типу файла.

`share/services`

  У цьому каталозі містяться файли `.desktop`, у яких описано служби. Служби схожі на програми, але, зазвичай, запускаються не користувачем, а іншими програмами. Пунктів служб немає у меню &kde;.

`share/servicetypes`

  У цьому каталозі містяться файли `.desktop`, які описують типи служб. Зазвичай, типу служб відповідає певний програмний інтерфейс. Програми і служби мають відповідні записи у файлах `.desktop` щодо типів служб, які надають.

`share/sounds`

  У цьому каталозі містяться звукові файли.

`share/templates`

  У цьому каталозі містяться шаблони для створення файлів різних типів. Шаблон складається з файла `.desktop`, у якому описано файл і міститься посилання на файл у підкаталозі `.source`. Шаблонам з цього підкаталогу відповідають пункти підменю Створити у меню стільниці і менеджера файлів. Після вибору користувачем пункту з цього підменю система просто копіює відповідний файл шаблону у потрібне місце.

`share/wallpapers`

  У цьому каталозі містяться зображення, які можна використати як зображення тла

### Каталоги, специфічні для вузла

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

`$`KDEHOME`/socket-$`HOSTNAME``

  Зазвичай, каталог `/tmp/ksocket-$`USER`/`, цей каталог використовується для різноманітних сокетів &UNIX;.

`$`KDEHOME`/tmp-$`HOSTNAME``

  Зазвичай, каталог `/tmp/kde-$`USER`/`, цей каталог використовується для тимчасових файлів.

`$`KDEHOME`/cache-$`HOSTNAME``

  Зазвичай, каталог `/var/tmp/kdecache-$`USER`/`, цей каталог використовується для кешованих файлів.

Оскільки обидва каталоги, `/tmp` і `/var/tmp` придатні для запису будь-ким з користувачів, ймовірно, що один з цих каталогів вже існує, але належить іншому користувачеві. У такому випадку програма `lnusertemp` створить новий каталог з альтернативною назвою і посилатиметься саме на нього.

### Файли налаштувань

У &kde; для збереження налаштувань у файлах використовується текстовий формат. Подібні файли складаються з пар «ключ-значення», впорядкованих за групами. У всіх файлах налаштувань &kde; використовується кодування UTF-8 для символів, яких немає у таблиці ASCII.

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

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

    [KDE]
    LargeCursor=false
    SingleClick=true

    [KFileDialog Settings]
    Show hidden files=false
    Sort by=Name

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

    елемент=значення

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

Існує також декілька інших кодів з похилою рискою. Ось їх повний список:

- \s можна скористатися замість пробілу

- \t можна скористатися замість символу табуляції

- \r замінює символ повернення каретки

- \n замінює символ переходу на новий рядок

- \\ замінює сам символ зворотної риски

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

    [Preview Image]
    Caption=\s My Caption
    Description=This is\na very long\ndescription.

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

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

Якщо вміст файла `$`HOME`/.kde/share/config/foobar` такий:

    [MyGroup]
    Color=red
    Shape=circle

а вміст файла `/etc/opt/kde3/share/config/foobar` такий:

    [MyGroup]
    Color=blue
    Position=10,10

результатом буде файл:

    [MyGroup]
    Color=red
    Shape=circle
    Position=10,10

Якщо файл `$`HOME`/.kde/share/config/foobar` містить

    [MyGroup]
    Color=red
    Shape=circle
    [MyGroup]
    Color=green

файл `/opt/kde_staff/share/config/foobar` містить

    [MyGroup]
    Color=purple
    Position=20,20

а файл `/etc/opt/kde3/share/config/foobar` містить

    [MyGroup]
    Color=blue
    Position=10,10

результатом буде:

    [MyGroup]
    Color=green
    Shape=circle
    Position=20,20

Щоб заборонити користувачам перевизначати типові параметри, можна позначати параметри як незмінні. Параметри можна зробити незмінними окремо, групами або зробити незмінним цілий файл. Окремий запис можна зробити незмінним додаванням рядка `[$i]` за ключем, наприклад:

    Color[$i]=blue

Групу записів можна зробити незмінною додаванням рядка `[$i]` за назвою групи, наприклад:

    [MyGroup][$i]

Щоб зробити незмінним цілий файл, почніть його з окремого рядка, `[$i]`, тобто, наприклад, так:

    [$i]

Якщо файл `$`HOME`/.kde/share/config/foobar` містить:

    [MyGroup]
    Color=red
    Shape=circle

а файл `/etc/opt/kde3/share/config/foobar` містить:

    [MyGroup][$i]
    Color=blue
    Position=10,10

результатом буде:

    [MyGroup]
    Color=blue
    Position=10,10

Якщо файл `$`HOME`/.kde/share/config/foobar` містить:

    [MyGroup]
    Color=red
    Shape=circle

файл `/opt/kde_staff/share/config/foobar` містить

    [MyGroup]
    Color=purple
    Shape=rectangle

а файл `/etc/opt/kde3/share/config/foobar` містить

    [MyGroup][$i]
    Color=blue
    Position=10,10

результатом буде

    [MyGroup]
    Color=purple
    Shape=rectangle
    Position=10,10

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

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

Значення елемента `Email` визначатиметься за значеннями змінних середовища $`USER` і $`HOST`. Якщо користувач ivan розпочне роботу на вузлі ivans_host значенням елемента стане `joe@joes_host`. Цей параметр не заблоковано.

    [Mail Settings]
    Host[$ie]=$(hostname)
    Email[$e]=${USER}@${HOST}

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

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

    [Preview Image]
    Caption=My Caption
    Caption[uk]=Мій підпис

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

    [Preview Image]
    Caption=My Caption
    Caption[uk]=Мій підпис

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

Ось приклад файла налаштувань у форматі &XML;:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
    <kcfg>
        <kcfgfile name="korganizerrc"/>
        <group name="General">
             <entry type="Bool" key="Auto Save">
                 <label>Enable automatic saving of calendar</label>
                 <default>true</default>
             </entry>
             <entry type="Int" key="Auto Save Interval">
                 <default>10</default>
             </entry>
        </group>
    </kcfg>

Того самого результату можна досягти так:

    [General]
    Auto Save=false
    Auto Save Interval=25

### Послідовність запуску &kde;

#### &kdm;

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

    :0 local /usr/X11R6/bin/X :0 vt07

Серед відповідних файлів запуску також:

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

#### Скрипт запуску &kde;,: `startkde`

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

    LD_BIND_NOW=true kdeinit4 +kcminit_startup and kwrapper4 ksmserver $KDEWM

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

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

### Фонові процеси

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

`dcopserver`

  Обмін інформацією в межах стільниці

`kded`

  Загальна фонова служба.

  За потреби вмикає оновлення бази даних Sycoca

`kcminit`

  Служба ініціалізації

  Докладніші відомості можна знайти у розділі .

`klauncher`

  Запуск програм (це не діалогове вікно, що викликається комбінацією клавіш &Alt;F2 !)

  Докладніші відомості можна отримати з розділу .

`knotify`

  Сповіщення користувачів.

  Докладніші відомості можна отримати з розділу .

`ksmserver`

  Керування сеансами

  Докладніші відомості можна отримати з розділу .

#### `kdeinit`

`kdeinit` використовується для запуску всіх інших програм &kde;. `kdeinit` може запускати як звичайні файли програм, так і модулі `kdeinit` (KLMs). KLM працюють подібно до звичайних файлів програм, але запускаються ефективніше. KLM можна знайти у `$`KDEDIR`/lib/kde3`

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

    %ps aux

    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

Рядок `kdeinit: Running...` вказує на головний процес `kdeinit`. Інші процеси, показані у списку, є програмами, запущеними як KLM.

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

#### kcminit

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

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

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

Для перегляду списку всіх служб ініціалізації можна скористатися командою ``kcminit `--list```, команду ``kcminit служба`` призначено для явного запуску окремої служби. Ці команди можуть бути корисними для виявлення проблем з запуском.

#### `klauncher`

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

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

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

#### `knotify`

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

### KSMServer

`ksmserver` є інструментом керування сеансами &kde;. Під час запуску цей інструмент автоматично запускає вказані програми і відновлює параметри програм з попереднього сеансу. Вказати програми для автоматичного запуску можна за допомогою файлів `.desktop`, розміщений у каталозі `$`KDEDIR`/share/autostart`. Чи буде програму запущено автоматично, чи ні можна обумовити за допомогою певного елемента налаштування у записі `X-KDE-autostart-condition` файла `.desktop`.

Наприклад, файл `ktip.desktop` містить:

    X-KDE-autostart-condition=ktiprc:TipOfDay:RunOnStart:true

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

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

`kdesktop`

  Стільниця &kde;

`&kicker;`

  Панель &kde;

`ktip`

  Програма корисних підказок

`kwrited`

  Інструмент для отримання системних повідомлень, які надсилаються користувачеві

&klipper;

  Інструмент для роботи з буфером обміну інформацією, який швартується у лоток панелі

`kalarm`

  Програма, яка сповіщає вас про наступні події і зустрічі

`kdesktop` у свою чергу автоматично запускає програми, що зберігаються у `$`KDEHOME`/Autostart`. `kdesktop` автоматично відкриватиме всі файли, що зберігаються у цьому каталозі, зокрема документи, бінарні файли або програми, вказані за допомогою файлів `.desktop`.

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

### Змінні середовища

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

$`KDEDIR`

  Цю змінну слід встановити, якщо не встановлено `KDEDIRS`. Ця змінна має вказувати на кореневу теку встановленого &kde;. За допомогою цієї змінної &kde; знаходить дані: піктограми, меню і бібліотеки.

$`KDEDIRS`

  Ця змінна перевизначає `KDEDIR` і надає вам змогу вказувати декілька тек, у яких &kde; шукатиме потрібні йому дані. Корисна, якщо ви бажаєте або мусите встановити певні програми до каталогу, відмінного від каталогу решти &kde;.

`$KDEHOME`

  Якщо не встановлено цю змінну, &kde; використовуватиме `~/.kde` як каталог для зберігання особистих даних.

$`KDEROOTHOME`

  Якщо не встановлено, &kde; використовуватиме `~root/.kde` як каталог для зберігання особистих даних користувача root. Цю змінну було введено для того, щоб уникнути випадкового перезаписування &kde; даних користувача з правами доступу root, якщо звичайний користувач запустив програму &kde; після отримання прав користувача root за допомогою команди `su`.

$`KDEWM`

  Якщо було встановлено змінну середовища `KDEWM`, під час виконання скрипту `startkde` буде використано вказаний у цій змінній засіб керування вікнами, а не типовий &kwin;.

$`KDE_LANG`

  Перевизначає налаштування мови &kde;, наприклад, команда `KDE_LANG=uk kprogram &` запустить програму з перекладом українською, якщо встановлено відповідні файли.

$`KDE_MULTIHEAD`

  Встановіть для цієї змінної значення `true`, щоб позначити, що &kde; запущено у системі з декількома екранами.

$`KDE_FORK_SLAVES`

  (З’явилася у &kde; 3.2.3) Встановіть значення для цієї змінної середовища, щоб система породжувала допоміжні засоби (KIO-slave) безпосередньо з процесу програми, що їх викликає. Типово, KIO-slave породжуються за допомогою `klauncher`/`kdeinit`. Цей параметр буде корисним, якщо KIO-slave слід запускати у тому ж середовищі, що і програму. Це, наприклад, слід робити для програми Clearcase.

$`KDE_HOME_READONLY`

  Встановіть цю змінну, щоб позначити, що ваш домашній каталог змонтовано у режимі лише для читання.

$`KDE_NO_IPV6`

  (З’явилася у &kde; 3.2.3) Встановіть значення «true» для цієї змінної, щоб вимкнути підтримку IPv6 та підтримку пошуку DNS на основі IPv6.

$`KDE_IS_PRELINKED`

  (З’явилася у &kde; 3.2) Встановіть значення «true» для цієї змінної, щоб вказати системі, що ваші виконувані файли та бібліотеки &kde; було попередньо пов’язано (prelinked). Таким чином, `kdeinit` буде вимкнено.

$`KDE_UTF8_FILENAMES`

  Якщо встановлено значення «true» цієї системної змінної, &kde; вважатиме, що всі назви файлів вказано у UTF-8, незалежно від поточної локалі C.

$`KDE_FULL_SESSION`

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

$`KDESYCOCA`

  Надає вам змогу вказати шлях і назву створеного файла кешу налаштувань &kde;.

$`KDETMP`

  Надає вам змогу вказати каталог, відмінний від `/tmp`, у якому &kde; зберігатиме свої тимчасові файли.

$`KDEVARTMP`

  Надає вам змогу вказати каталог, відмінний від `/var/tmp`, у якому &kde; зберігатиме свої змінні файли.

$`XDG_DATA_HOME`

  (З’явилася у &kde; 3.2) Визначає базовий каталог, відносно якого слід зберігати специфічні для користувача файли даних. Типовим значенням є `$`HOME`/.local/share`

$`XDG_DATA_DIRS`

  (З’явилася у &kde; 3.2) Визначає впорядкований за пріоритетом перелік базових каталогів для пошуку у них даних на додачу до базового каталогу, що визначається змінною `$`XDG_DATA_HOME``. Типовим значенням є `/usr/local/share/:/usr/share/`

  &kde; додає адреси, вказані за допомогою змінної $`KDEDIRS` і профілів. Використовується для файлів меню `.desktop` і `.directory`. Файли `.desktop` знаходяться у `$`XDG_DATA_DIRS`/applications`. Файли `.directory` знаходяться у $XDG_DATA_DIRS/desktop-directories

$`XDG_CONFIG_HOME`

  (З’явилася у &kde; 3.2) Визначає базовий каталог, відносно якого слід зберігати файли налаштувань користувача. Типовим значенням є `$`HOME`/.config`.

$`XDG_CONFIG_DIRS`

  (З’явилася у &kde; 3.2) Визначає впорядкований за пріоритетом список базових каталогів, у яких слід шукати файли налаштування, окрім базового каталогу, вказаного у змінній $`XDG_CONFIG_HOME`. Типовим значенням є `/etc/xdg`, крім того &kde; додає адреси з $`KDEDIRS` і профілів. Використовується описами `.menu` у `$`XDG_CONFIG_DIRS`/menus`.

### Таємниці kdeinit

`kdeinit` використовується для запуску всіх інших програм &kde;. `kdeinit` може запускати звичайні бінарні файли і модулі `kdeinit` (KLMs). KLM працюють так само, як бінарні файли програм, але їх можна запустити у ефективніший спосіб. Файли KLM знаходяться у каталозі `$`KDEDIR`/lib/kde3`

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

    % ps aux | grep bastian

    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

Як ви вже певно зауважили, це має ще один сторонній ефект, що робить складним завершення процесу, який викликав проблеми:

    % killall kdesktop
    kdesktop: no process killed

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

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

    % kdekillall kdesktop
    або старе перевірене
    % kill 26195

Програма `kdekillall` є частиною пакунка SDK &kde;.

## Налаштування &kde;

### Піктограми стільниці

&kde; використовує декілька типів піктограм:

- Документи

- Посилання на веб-сайти (за використання файла `.desktop`)

- Посилання на програми (за використання файла `.desktop`)

- Пристрої — диски, розділи і периферія:

  - Явне використання файла `.desktop`

  - Автоматичне, за допомогою підлеглого В/В devices://

- Специфічні для виробника дистрибутива (наприклад, у &SuSE; — Мій комп’ютер)

#### Веб-сайти

Посилання на веб-сайти на основі файла `.desktop`, створеного за допомогою пункту меню Створити Файл Посилання на адресу (URL). Піктограму можна змінити за допомогою діалогового вікна Властивості. Зразок такого файла `.desktop`:

    [Desktop Entry]
    Encoding=UTF-8
    Icon=/opt/kde3/share/apps/kdesktop/pics/ksslogo.png
    Type=Link
    URL=http://www.kde.org/

#### Програми

Посилання на програми з використанням файла `.desktop`: Створити Файл Посилання на програму. Подробиці ви маєте вказати власноруч. Набагато простіше створити таке посилання перетягуванням з меню &kde;: посилання можна або скопіювати, або створити символічне посилання на нього

    [Desktop Entry]
    Encoding=UTF-8
    GenericName=IRC Client
    GenericName[af]=Irc Kliët
    GenericName[de]=IRC Programm
    ...
    GenericName[uk]=Клієнт IRC
    SwallowExec=
    Name=KSirc
    Name[af]=Ksirc
    Name[de]=KSirc
    ...

Шаблон Boiler plate

Переклад загального опису, не використовуватиметься на стільниці

Застаріле, можна вилучати

Перекладена назва, яку буде показано на стільниці

Піктограми стільниці

    ...
    Name[zu]=Ksirc
    MimeType=
    Exec=ksirc %i %m
    Icon=ksirc
    TerminalOptions=
    Path=
    Type=Application
    Terminal=0
    X-KDE-StartupNotify=true
    X-DCOP-ServiceType=Multi
    Categories=Qt;KDE;Network

Підтримувані типи &MIME;, які не використовуються на стільниці

Рядок команди, яку буде виконано

Піктограма, з теми піктограм або за повним шляхом

Використовується, лише якщо потрібен термінал

Робочий каталог для команди

Ще один шаблон boiler plate

Має значення «true» (1), якщо програма виконується у терміналі (текстова програма)

Показувати «стрибаючий» курсор, вимкніть, якщо не працюватиме.

Чи запустилася програма? Вилучіть, якщо не працюватиме.

Категорії меню &kde;, які не використовуються на стільниці

#### Пункт `Exec` у файлах `.desktop`

Слідом за командою ви можете вказати декілька шаблонів заміни, які буде замінено справжніми значеннями під час запуску програми:

%f

  Назва окремого файла. Використовується під час скидання файла на піктограму або за використання прив’язки до типів.

%F

  Список файлів. Використовується для програм, які здатні відкривати декілька локальних файлів одразу.

%u

  Окрема адреса &URL;: якщо програма може працювати, наприклад, з адресами &URL; &FTP; або &HTTP;, без використання можливостей &kde;.

%U

  Список адрес &URL;. Спочатку файл буде звантажено, а вже потім локальний файл буде передано програмі (!!)

%d

  Тека файла, який слід відкрити. Корисно для програм, для яких потрібно, щоб файл знаходився у поточному робочому каталозі.

%D

  Список тек, потрібно не часто.

%i

  Піктограма; параметр `--icon`; програма &kde; використовуватиме піктограму з рядка `Icon`= на панелі задач.

%m

  Міні-піктограма, застаріле.

%c

  Заголовок вікна; параметр `--caption`; програма &kde; використовуватиме значення з рядка `Name`=рядок як заголовок на панелі задач.

Приклади: Рядок `Exec` Команда, яку буде виконано ksirc %i`ksirc --icon ksirc` cd %d; kedit $(basename %f)`cd /tmp; kedit file.txt`

#### Пристрої

Посилання на пристрої за допомогою файла `.desktop`, можна створити за допомогою пункту меню Створити -> Пристрій

#### Де визначати

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

- `~/Desktop`: копія `/etc/skel/Desktop`

- `$`KDEDIR`/apps/kdesktop/Desktop` (об’єднаний)

- `$`KDEDIR`/apps/kdesktop/DesktopLinks` (копія)

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

- Специфічні для дистрибутивів: у SUSE Linux деякі з піктограм копіюються до startkde.theme з `/opt/kde3/share/config/SuSE/default/`

### Меню &kde;

#### Як це працює

У &kde; 3.2 введено типовий формат меню, який визначено за адресою http://freedesktop.org/Standards/menu-spec/

До &kde; 3.2:

- Структура каталогів зберігалася у `share/applnk`

- Структура каталогів відповідала структурі меню

- Кожному з файлів `.desktop` відповідала єдина програма

У &kde; 3.2 було важко змінювати структуру меню, тому у новому форматі меню:

- Визначено структуру у окремому файлі .menu

- Формат засновано на категоріях

- Формат є спільним для GNOME і &kde;

- Увімкнено підтримку меню у стилі applnk

Приклад з `applications.menu`:

            <Menu>
                <Name>Office</Name>
                <Directory>suse-office.directory</Directory>
                <Include>
                    <Filename>Acrobat Reader.desktop</Filename>
                    <Filename>kde-kpresenter.desktop</Filename>
                    <Filename>kde-kword.desktop</Filename>
                </Include>
            <Menu>

Запис меню з 3 програмами:

- `/usr/share/applications/Acrobat Reader.desktop`

- `/opt/kde3/share/applications/kde/kpresenter.desktop`

- `/opt/kde3/share/applications/kde/kword.desktop`

#### Де зберігається?

У файлах `.menu` описується структура меню. Файли зберігаються у каталогах `$`KDEDIR`/etc/xdg/menus` і `/etc/xdg/menus`. У цих каталогах зберігається загальносистемна структура меню, ці каталоги визначаються змінною $`XDG_CONFIG_DIRS`. У каталозі `$`HOME`/.config/menus` зберігаються внесені користувачем зміни до меню, адреса цього каталогу визначається змінною $`XDG_CONFIG_HOME`. Ознайомитися з докладнішими відомостями можна за адресою http://www.freedesktop.org/Standards/basedir-spec.

У файлах `.desktop` описуються програми, ці файли зберігаються у каталогах `$`KDEDIR`/share/applications`, `/usr/share/applications`, `/usr/local/share/applications`. Це загальносистемні файли програм `.desktop`, перелік каталогів визначається змінною $`XDG_DATA_DIRS`.

У каталозі `$`HOME`/.local/applications` містяться файли `.desktop` користувача та внесені користувачем зміни. Назва каталогу визначається змінною $`XDG_DATA_HOME`. Докладніші відомості можна отримати за адресою http://www.freedesktop.org/Standards/basedir-spec

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

Приклад з `applications.menu`:

                 <Menu>
                            <Name>Art</Name>
                            <Directory>suse-edutainment-art.directory</Directory>
                            <Include>
                                    <Category>X-SuSE-Art</Category>
                            </Include>
                    </Menu>

`Art` — це внутрішня назва цього меню. `suse-edutainment-art.directory` визначає назву і піктограму, які буде використано для цього меню, у меню буде показано всі програми, що містять записи `X-SuSE-Art` у полі категорії, наприклад:

    Categories=Qt;KDE;Education;X-SuSE-Art

`suse-edutainment-art.directory` визначає назву і піктограму для цього меню:

    [Desktop Entry]
    Name=Art and Culture
    Icon=kcmsystem

#### Типові пастки

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

Якщо програми є небажаними у меню, вам слід або пересунути їх до меню `.hidden` або до спеціального меню з параметром

    NoDisplay=true

у файлі `.directory`

#### Основні меню

У каталозі `$`KDEDIR`/etc/xdg/menus/applications-merged/` міститься файл `kde-essential.menu`, до якого включено всі базові меню, які, зазвичай, не показуються у самому меню &kde;:

- У Центрі керування є приховане меню «Параметри», вміст якого визначається `kde-settings.menu`, а піктограма і назва визначаються у файлі `kde-settings.directory`

- У Інформаційному центрі є приховане меню «Інформація», вміст якого визначається файлом `kde-information.menu`, а піктограма і назва визначаються файлом `kde-information.directory`.

- Зберігачі екрана мають приховане меню «Система/Зберігачі екрана», чий вміст визначається файлом `kde-screensavers.menu`, а піктограма і назва визначаються файлом `kde-system-screensavers.directory`. У файлі `$`KDEDIR`/share/desktop-directories/kde-system-screensavers.directory` містяться записи:

      NoDisplay=true

#### Меню у старому стилі

У &kde; підтримуються і меню у застарілому стилі, які визначаються структурою каталогів у `$`KDEDIR`/share/applnk` (загальносистемний) і `$`HOME`/.kde/share/applnk` (каталог користувача). Ці меню буде використано, якщо у файлі `.desktop` немає рядка «`Categories`=». У останньому випадку, запис визначає розташування меню.

#### KSycoca

KSycoca кешує структуру меню і відомості щодо всіх доступних програм. Ви можете перебудувати базу даних за допомогою команди ``kbuildsycoca4``. Зібрана база даних зберігаються у каталозі `/var/tmp/kdecache-${`USER`}/ksycoca`. Ця база оновлюється у автоматичному режимі програмою KDED, перевіряється під час входу до &kde;, після входу до системи KDED наглядає за цією базою даних.

Щоб вимкнути спостереження за змінами (оскільки воно може погано працювати з NFS) додайте до `kdedrc` такі рядки:

    [General]
    CheckSycoca=false

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

#### &kmenuedit;

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

### Панель &kde;

Панель &kde; також відома за назвою &kicker;. Панель має модульну будову і складається з таких компонентів:

- Аплети

- Кнопки програм

- Особливі кнопки

Типово, на панелі містяться такі аплети:

- Пейджер — показує мініатюри віртуальних стільниць

- Панель задач

- Системний лоток

- Годинник

та такі кнопки з особливим призначенням:

- Меню &kde;

- Кнопка стільниці

Сюди також додаються різноманітні кнопки програм, якщо дозволяє наявний простір:

- Кнопка домівки

- Кнопка переглядача

- Кнопка KMail

### Прив’язка файлів

За допомогою прив’язки файлів можна пов’язати файли певного типу з програмою або програмами. Тип файла встановлюється за визначеним типом &MIME; цього файла. Відомі &kde; типи &MIME; зберігаються у каталозі `$`KDEDIR`/share/mimelnk`. Кожен файл `.desktop` програми містить список типів &MIME;, які підтримуються цією програмою.

`kview.desktop`:

    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

`kuickshow.desktop`:

    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

Обидві ці програми здатні відкривати файли типу image/gif. Яку ж з них буде використано для відкриття файла `.gif`?

Програму з вищим пріоритетом! `kview.desktop` містить рядок

    InitialPreference=3

а `kuickshow.desktop` містить рядок

    InitialPreference=6

Тому для відкриття файлів `.gif` буде використано програму &kuickshow;.

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

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

## Блокування стільниці &kde;

### Як це працює — Основи

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

- Зробити параметри налаштування незмінними

- Обмеження певних дій

- Обмеження доступу до певних адрес &URL;

- Обмеження доступу до певних модулів налаштування

### Як зробити параметри налаштування незмінними

Блокування стільниці &kde;

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

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

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

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

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

### Обмеження дій

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

#### Обмеження доступу користувачів до командної оболонки

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

    [KDE Action Restrictions]
    shell_access=false

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

    touch $KDEDIR/share/services/update_ksycoca

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

- K-меню

- Пункт меню &konqueror;, Інструменти Відкрити термінал

- Запуск команди за допомогою комбінації клавіш &Alt;F2

Повну документацію щодо всіх можливих дій можна знайти за адресою http://www.kde.org/areas/sysadmin/.

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

`action/options_configure`

  Пункт Налаштувати з меню Параметри

`action/help_report_bug`

  Пункт Надіслати звіт про помилку з меню Довідка.

`action/kdesktop_rmb`

  Викликає контекстне меню стільниці.

`action/kicker_rmb`

  Викликає контекстне меню панелі.

`user/root`

  Ховає всі дії або програми, для виконання яких потрібні права доступу root.

`shell_access`

  Ховає всі дії або програми, які надають доступ до командної оболонки.

`print/system`

  Вимикає пункт вибору системи друку (сервера).

`lock_screen`

  Вмикає або вимикає можливість блокування користувачем екрана

`start_new_session`

  Вмикає або вимикає можливість запуску користувачем другого сеансу X (див. також &kdm;)

`opengl_screensavers`

  Вмикає або вимикає можливість використання зберігачів екрана з підтримкою OpenGL.

`manipulatescreen_screensavers`

  Дозволити використання зберігачів екрана, які не приховують всього екрана

### Обмеження адрес &URL;

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

list

  Обмежує перегляд каталогів.

open

  Обмежує відкриття певних адрес &URL;

Redirect

  Обмежує можливість однієї адреси &URL; відкривати іншу адресу &URL;, у автоматичному режимі або як гіперпосилання.

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

Наступні правила вимикають можливість відкриття адрес &URL; http і https &URL; поза межами домену .ourcompany.com:

    [KDE URL Restrictions]
    rule_count=2
    rule_1=open,,,,http,,,false
    rule_2=open,,,,http,*.ourcompany.com,,true

За допомогою перших чотирьох ком пропущено критерії вибору відносно початкової адреси &URL;. Ця частина може знадобитися лише для правил типу переспрямування.

`rule_1` забороняє відкриття будь-якої з адрес &URL; http або https

`rule_2` надає змогу відкривати будь-які адреси &URL; http і https у домені .ourcompany.com. Зауважте, що шаблон заміни * можна використовувати лише на початку назви домену.

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

    [KDE URL Restrictions]
    rule_count=2
    rule_1=list,,,,file,,,false
    rule_2=list,,,,file,,$HOME,true

`rule_1` забороняє перегляд будь-яких локальних каталогів

`rule_2` надає змогу переглядати каталоги у власному каталозі користувача $`HOME`.

$`HOME` і $`TMP` — це особливі значення, які позначають домашній каталог користувача і тимчасовий каталог користувача &kde;, наприклад, `/tmp/kde-bastian`

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

    [KDE URL Restrictions]
    rule_count=3
    rule_1=open,,,,file,,,false
    rule_2=open,,,,file,,$HOME,true
    rule_3=open,,,,file,,$TMP,true

`rule_1` забороняє відкриття будь-якого локального файла

`rule_2` дозволяє відкриття файлів у власному каталозі користувача, $`HOME`.

`rule_3` дозволяє відкриття файлів у тимчасовому каталозі &kde; користувача. Потреба у такому відкритті пов’язана з тим, що певні програми &kde; спочатку звантажують файл або документ до тимчасового каталогу, а вже потім відкривають його у самій програмі.

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

Наприклад, якщо ви бажаєте надати серверу внутрішньої мережі www.mycompany.com можливість посилатися на локальні файли ви можете додати таке правило:

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

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

:local

  Протоколи, за допомогою яких здійснюється доступ до даних, що зберігаються локально, приклади: file:/, man:/, fonts:/, floppy:/

:internet

  Загальні протоколи інтернету, на зразок http і ftp

Відомості щодо протоколів зберігаються у файлах `*.protocol` каталогу `$`KDEDIR`/share/services`.

Рядок `Class`= запис визначає групу протоколу: ``grep` `Class=` `$`KDEDIR`/share/services/*.protocol``

Загальні правила:

- Протоколи :local можуть посилатися на будь-які інші протоколи

- Завжди можна посилатися на протокол :internet

- Не всі протоколи є частиною групи, наприклад, fish:/ не є частиною групи.

### Модулі налаштування

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

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

Окремі модулі налаштування можна запустити за допомогою команди `kcmshell4` назва_модуля

Щоб відкрити модуль налаштування проксі-сервера, скористайтесь командою:

- `kcmshell4` `kde-proxy.desktop`

- `kcmshell4` proxy

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

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

- Модулі, які можна побачити у Центрі керування, зазвичай мають файл `.desktop` у каталозі `$`KDEDIR`/share/applications/kde`, їх впорядковано у прихованому меню Параметри-Модулі файла `kde-settings.menu`, включеного через `kde-essential.menu`

      kbuildsycoca4 --menutest 2> /dev/null | grep Settings-Modules

- Модулі налаштування окремих програм, зазвичай, мають файл `.desktop`, що зберігається у каталозі `$`KDEDIR`/share/applnk/.hidden`, який відповідає прихованому меню .hidden, включеному як результат обробки <KDELegacyDirs/>

      kbuildsycoca4 --menutest 2> /dev/null | grep .hidden

- Починаючи з &kde; 3.3 у вас з’явилася можливість редагування Центру керування за допомогою програми kcontroledit. Робота з kcontroledit схожа на роботу з kmenuedit, зміни стосуються лише поточного користувача. Для внесення змін, що стосуватимуться всіх користувачів, скористайтеся kiosktool.

Ви можете вимкнути окремі модулі налаштування додаванням таких рядків до файла `kdeglobals`:

    [KDE Control Module Restrictions]
    ідентифікатор модуля=false

Наприклад, щоб вимкнути модуль налаштування проксі-сервера, скористайтеся командою

    [KDE Control Module Restrictions]
    kde-proxy.desktop=false

Відкрийте Центр керування і перевірте: налаштування проксі сервера має зникнути з діалогового вікна Налаштувати Konqueror.

## Ліниве адміністрування

### Дистанційна робота за стільницею

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

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

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

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

### «Зроби сам» у &kde; — створення власних інструментів

#### DCOP

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

Декілька зауважень щодо використання `dcop`:

- `dcop` [параметри] [програма [об’єкт [функція [аргумент1] [аргумент2] ... ] ] ]

- Програми, якими було відкрито декілька вікон, буде позначено у списку записами <програма>-PID

- Під час зазначення параметрів слід враховувати регістр. setFullScreen і setfullscreen — це дві різні функції.

- У параметрах програми і об’єктів можна використовувати шаблон заміни формальних виразів *.

      &percnt; dcop kon*
      konqueror-16006
      konsole-8954

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

    &percnt; dcop konsole*
    konsole-8954

Одну з &konsole; запущено з PID рівним 8954.

    &percnt; dcop konsole-8954
    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

Тут ви бачите, що запущено чотири сеанси.

    &percnt; dcop konsole-8954 konsole
    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()

Це параметри головної програми &konsole;.

    &percnt; dcop konsole-8954 session-1
    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)

А ось параметри для першого сеансу, session-1.

    &percnt; dcop konsole-8954 konsole setFullScreen true

За допомогою цієї команди можна розгорнути вікно &konsole; на весь екран.

Якщо існує декілька програм або об’єктів, яким з них слід скористатися? Як щодо дій за посиланням?

    &percnt; echo $KONSOLE_DCOP
    DCOPRef(konsole-7547,konsole)

    &percnt; dcop $KONSOLE_DCOP newSession
    session-6

    &percnt; dcopstart konsole
    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'

#### KDialog

«Зроби сам» у &kde; — створення власних інструментів

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

    kdialog --msgbox 'Прийшла пошта!'

    kdialog --title 'Свіжа пошта' --msgbox 'Надійшла свіжа пошта!'

Частину KDialog можна змінити за допомогою параметра `--caption`

    kdialog --title 'Свіжа пошта' --msgbox 'Надійшла свіжа пошта!' --dontagain myfile:mykey

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

    [Notification Messages]
    mykey=false

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

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

    kdialog --yesno 'Бажаєте з’єднати комп’ютер
    з мережею Інтернет?' echo $?

Значення, яке буде повернуто | Значення
--- | ---
0 | Так, Гаразд, Продовжити
1 | Ні
2 | Скасувати

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

Іншими різновидами є:

`--warningyesno`

  подібно до `--yesno`, але з іншою піктограмою

`--warningcontinuecancel`

  з кнопками Продовжувати і Скасувати

`--warningyesnocancel`

  з кнопками Так, Ні і Скасувати. Приклад:

      kdialog --warningyesnocancel 'Бажаєте зберегти
      зміни?'

    kdialog --inputbox "Введіть ваше ім’я:" "ВашеІм’я"

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

    password=$(kdialog --password "Введіть ваш пароль:")

Параметр `--dontagain` не працюватиме, якщо вказано параметри `--inputbox` або `--password`

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

`--menu`

  Надає користувачеві змогу обрати єдиний пункт зі списку.

`--checklist`

  Надає користувачеві можливість обрати один або декілька пунктів зі списку.

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

`$city` буде a, b, c або d.

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

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

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

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

&groupware-with-kontact;