# Тонкая настройка &kde;

Nicolas
Goutte
goutte@kde.org

## Ручное редактирование файлов конфигурации

### Введение

Файлы конфигурации &kde; можно редактировать любым текстовым редактором, например, &kate;, так как они - обычные текстовые файлы.

Пример файла:

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

Пользовательские параметры хранятся в каталоге `.kde/share/config` (замените `.kde` на значение переменной $`KDEHOME` в вашей системе), общесистемные - в подкаталоге `share/config` корневого каталога &kde;. (Для того чтобы узнать путь к этому каталогу, выполните `kde-config --prefix`.) Имена файлов обычно заканчиваются символами rc (без точки), например, `kopeterc`.

При редактировании файлов конфигурации вручную стабильность &kde; может быть нарушена, так как большинство приложений не проверяет правильность параметров при чтении.

### Резервные копии

Создавайте резервные копии файлов перед тем, как их изменять. Резервные копии лучше всего хранить вне подкаталога `.kde` (или другого каталога, на который указывает $`KDEHOME`). Резервные копии могут помочь вам и в случае системного сбоя &kde;, уничтожившего важные файлы конфигурации (например, файл конфигурации &kmail; - `kmailrc`). (Такие сбои не должны случаться, но они всё-таки случаются.)

### Редактирование

Зачем вообще может понадобиться изменять файлы конфигурации? Во-первых, это необходимо при переводе системы в режим KIOSK. Разработчик приложения может попросить вас добавить параметр, чтобы помочь ему решить проблему с программой. Возможно, вы захотите устранить затруднения в работе с системой, не удаляя весь каталог `.kde`. Наконец, таким способом можно узнать больше о &kde;.

В любом из этих случаев вам может понадобиться вручную отредактировать файл конфигурации.

Приступая к редактированию, убедитесь, что приложение, которое использует файл, не запущено. Если это один из системных файлов конфигурации, редактируйте его, не запуская &kde;.

Готовы? Теперь сделайте резервную копию файла (надеюсь, вы об этом не забыли?), запустите ваш любимый редактор (предположим, это &kate;) и откройте файл (убедитесь, что используется кодировка UTF-8, &kate; отображает её как utf8).

Перед вами файл вида

    [Имя_группы]
    Ключ1=Значение1
    Ключ2=Значение2
    Ключ3=Значение3

Теперь отредактируйте его (будьте внимательны!) и сохраните (в кодировке UTF-8).

Теперь проверьте, как работает приложение. Если его поведение вас не устраивает, закройте его и восстановите файл конфигурации из резервной копии.

#### Связанная информация

- включает информацию о структуре каталогов &kde;. Это поможет вам найти файл, который вы хотите отредактировать.

## Создание сценариев

&kde; использует мощный механизм взаимодействия между процессами - &DCOP;, Desktop COmmunication Protocol. С помощью &DCOP; вы можете управлять &kde; из командной строки или с помощью сценария, написанного на вашем любимом интерпретируемом языке. Также вы можете получать информацию от приложений &kde;, например, несколько мультимедийных проигрывателей &kde; могут возвращать информацию о текущем файле.

Каждое приложение &kde; включает не менее одного интерфейса &DCOP;, который, в свою очередь, содержит методы (или функции, как вам угодно), которые могут быть вызваны другими приложениями. Если вы собираетесь использовать &DCOP;, в первую очередь следует найти функцию, с помощью которой вы можете выполнить свою задачу. Самый простой способ узнать доступные методы &DCOP; - использовать программу kdcop.

Запустите kdcop из &konsole; или через окно запуска программ (выводится по &Alt;F2 ). В окне kdcop в виде дерева показываются запущенные в данный момент приложения, которые предоставляют интерфейсы &DCOP;. Для того чтобы найти нужную функцию, иногда приходится поискать по этому дереву, однако запомните, что интерфейс, отмеченный (по умолчанию), обычно содержит наиболее часто используемые функции.

Для того чтобы выяснить, делает ли функция то, что вы от неё ожидаете, щёлкните дважды на пункте setColor. Для того чтобы установить цвет (переменная `c`), щёлкните на кнопке выбора цвета и укажите требуемый цвет. Если вы хотите, чтобы цвет был основным, установите флажок. Нажмите ОК, и будет установлен новый цвет фона.

Для того чтобы обратиться к методу &DCOP;, используя ваш любимый интерпретируемый язык, вы можете употреблять связки &DCOP;, если они доступны в модуле kdebindings, или использовать приложение `dcop`. Для простых вызовов достаточно `dcop`. Для того чтобы вызвать метод &DCOP; из командной строки, мы должны указать приложение, интерфейс, которому принадлежит функция, её имя и аргументы. Форма вызова зависит от оболочки.

Мы указываем данные в порядке приложение-интерфейс-метод-аргументы (аргументы в том порядке, в котором они отображаются в kdcop. Программа `dcop` имеет множество опций: см. ``dcop` `--help``.

От теории перейдём к практике:

### Сценарий изменения цвета фона с помощью функций &DCOP;

Мы создадим простой сценарий на Perl, использующий функции `dcop`. Он будет циклически изменять цвет фона рабочего стола (в порядке спектра).

Сначала с помощью kdcop найдём подходящий метод. В этом примере мы опустим описание процесса поиска: нам требуется метод kdesktop KBackgroundIface setColor . Аргументы и тип возвращаемого значения функции отображаются в соответствии с синтаксисом C++. Аргументы функции `setColor`: цвет (переменная `c`) - задаёт новый цвет фона, и двоичная переменная, `isColorA`, которая указывает, является цвет основным или вторичным (имеет значение, если фон формируется из 2-х цветов, т. е. используется градиент).

Вызов метода `setColor` производится так:

    % dcop kdesktop KBackgroundIface setColor '#ffffff' false

Значение RGB для цвета указывается в 16-ричной форме, как в &HTML;. Обратите внимание, что значение заключается в одинарные кавычки, чтобы оболочка правильно обработала символ #.

Для того чтобы узнать значение RGB для какого-либо цвета, откройте любой диалог выбора цвета в приложении &kde; (например, в Центре управления - Внешний вид и темы Цвета) и выберите желаемый цвет. Значение RGB отобразится в поле HTML.

Больше &DCOP; применять не потребуется, можно перейти к созданию сценария. Вот пример реализации (не самый аккуратный):

    $min=49;  # Минимальное значение интенсивности красной, зелёной или синей составляющей цвета
    $max=174; # Максимальное значение интенсивности красной, зелёной или синей составляющей цвета
    $step=5;  # На эту величину значение будет изменяться на каждом шаге
    $sleeptime=15; # Пауза между изменениями цвета

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

    while (1) {
            foreach (0..5) {
                    my $which = $_ % 3; # Какой цвет (красный, зелёный или синий) изменять
                    my $updown = $_ % 2; # Увеличивать или уменьшать интенсивность
                    do {
                            if ($updown == 0) { $colour[$which]+=$step; }
                            if ($updown == 1) { $colour[$which]-=$step; }
                            my $dcopcall=sprintf "dcop kdesktop KBackgroundIface setColor '#%x%x%x' true\n", @colour;
                            system($dcopcall);
                            sleep $sleeptime;
                            } while (($colour[$which]
    >= $min) and ($colour[$which] <= $max));
                    }
    }

Запустите сценарий без аргументов, и он будет циклически изменять цвет фона рабочего стола в заданном порядке, пока не будет остановлен. Вот, собственно, и всё!

Конечно, вы можете создавать сценарии, использующие &DCOP;, не только на Perl; если вы предпочитаете сценарии оболочки - пожалуйста:

### Установка фона через Интернет

Следующий сценарий скачивает основной рисунок комикса User Friendly и устанавливает его в качестве фона рабочего стола. Сценарий использует общедоступные инструменты и функции &DCOP;.

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

Первая строка сценария (после #!/bin/sh) с помощью `wget` и регулярных выражений получает адрес рисунка из основной &HTML;-страницы ресурса. Вторая и третья скачивают рисунок и, наконец, функция `dcop` помещает рисунок на рабочий стол.

## Добавление дополнительных комбинаций клавиш в &kde;

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

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

Например, некоторые ноутбуки IBM рядом с клавишами "влево"-"вправо" имеют дополнительные клавиши, которые выглядят как page left и page right.

1. Для того чтобы узнать код клавиш, используйте `xev`. В указанном примере это 233 и 234.

2. Выберите символы, которые будут соответствовать клавишам. Многие символы по умолчанию не используются, так что выбор есть. Список находится в файле `/usr/X11R6/include/X11/keysymdef.h` (или его эквиваленте в вашей системе).

3. В домашнем каталоге создайте файл `.Xmodmap` и добавьте в него следующие строки:

       keycode 233 = Next_Virtual_Screen
       keycode 234 = Prev_Virtual_Screen

4. Выполните команду ``xmodmap` `~/.Xmodmap``

Теперь программа `xev` при нажатии этих клавиш должна отображать символы, которые вы с ними связали. Вы можете использовать эти клавиши в комбинациях.

### Связанная информация

- Для того чтобы прочитать руководство `xev`, введите `man:/xev` в строке адреса окна &konqueror; или ``man` xev` - в окне терминала.

## Добавление комбинаций клавиш для новых действий

Вы можете назначить комбинации клавиш для большей части действий в приложениях и на рабочем столе. Вы можете сделать это, даже если добавили это действие сами, и оно не доступно стандартными способами.

В одном из примеров мы совместим материал из двух предыдущих разделов с помощью клавиш, которые мы рассматривали в секции , будет осуществляться переход к следующему и предыдущему рабочему столу. Для этого нам потребуются две функции DCOP (последний рассматривается в разделе ).

Это достигается следующим образом:

1. Откройте Центр управления KDE, в секции Региональные и специальные возможности выберите Действия.

2. Нажмите кнопку Создать действие

3. Присвойте ему имя, например, `Следующий рабочий стол`

4. Выберите тип действия: Комбинация клавиш -> Команда/URL (простой)

5. Перейдите на закладку Комбинации клавиш, щёлкните на кнопке и нажмите клавиши, которые хотите использовать. В нашем примере это клавиша Next Page. В поле будет отображаться символ Next_Virtual_Screen.

6. На закладке Параметры команды/URL введите команду ``dcop kwin default nextDesktop``

Повторите эти действия для клавиши Prev_Virtual_Screen (укажите команду ``dcop kwin default previousDesktop``).

Теперь при нажатии клавиш Prev_Virtual_Screen и Next_Virtual_Screen вы будете переходить к предыдущему и следующему виртуальному рабочему столу соответственно.

Вы можете связать любую свободную клавишу с любым свободным действием.

### Связанная информация

- Для того чтобы просмотреть документацию KHotKeys, выберите этот раздел в &khelpcenter; или введите `help:/khotkeys` в строке адреса окна &konqueror;.

Adriaan
de Groot
groot@kde.org

## &kdebugdialog; - настройка вывода отладочной информации &kde;

### Основы использования

&kdebugdialog; по умолчанию не указан в &kmenu;. Для того чтобы запустить его, введите команду ``kdebugdialog`` в окне терминала или окне запуска программ. Программа выведет список различных областей отладочной информации. Для того чтобы включить/выключить вывод отладочной информации соответствующих частей &kde;, установите/снимите флажок рядом с названием.

Список областей отладки отсортирован по номерам, а не по алфавиту, поэтому kio (127) идёт перед artskde (400). Максимальный номер - около 200000, но областей всего 400. Для того чтобы найти требуемую, вам не придётся листать весь список: укажите в поле ввода в верхней части окна часть названия области, и в списке будут отображаться только те области, названия которых содержат указанную строку. Например, если вы введёте `k`, список уменьшится ненамного, но если вы введёте `kont`, в списке останется только пункт &kontact;. Используя кнопки Выбрать всё и Отменить весь выбор, вы можете заставить &kde; выдавать как огромное количество отладочной информации, так и очень небольшое.

### Полный режим KDebugDialog

В полном режиме (команда kdebugdialog --fullmode) доступны те же области отладки, что и в обычном режиме, но теперь вы выбираете настраиваемую область из выпадающего списка и настраиваете каждую из них отдельно. Вы можете указать, куда будут выводиться сообщения следующих типов: Информация, Предупреждение, Ошибка и Критическая ошибка.

В файл (вы должны будете указать имя). Файл будет создан в вашем домашнем каталоге.

Вывод окна с сообщением. Каждое отладочное сообщение отображается в диалоговом окне. Нажмите ОК, чтобы приложение, отправившее сообщение, продолжило работу.

Вывод в оболочку (значение по умолчанию). Сообщения отправляются в поток stderr, и будут либо отображены в окне оболочки, из которого приложение было запущено, либо дописаны в файл `.xsession-errors`.

Запись в журнал системных сообщений. Сообщение отправляется процессу syslog, который производит дальнейшую обработку.

Ничего. Вывод сообщения подавляется.

Для критических ошибок не следует выбирать значение Ничего или Журнал системных сообщений, так как в обоих случаях вы, скорее всего, не увидите сообщение, а процесс приложения просто будет остановлен по неизвестной причине. Будет процесс остановлен при критической ошибке или нет, определяет флажок Отмена при фатальных ошибках, который по умолчанию установлен — но критическая ошибка и так почти всегда означает остановку приложения (в результате сбоя).