]>

# Использование К Менеджера Окон (kwm)

Команда KDE
29 ноября 1998
Версия 0.19.15

Эта документация соответствует kwm версии 0.19.15. По всем вопросам, комментариям и модификациям обращайтесь к авторам

translation
Russian
kwm
KDE
Dmitry
Mozzherin
перевод
русский
Дмитрий
Мозжерин

## Введение

Этот документ содержит общую информацию о kwm, описание программы и также технические данные, полезные для разработчиков контрольного модуля kwm и звукового системного модуля.

Для дальнейшего ознакомления с тем, как осуществлять низкоуровневую настройку kwm (что должно быть интересно только для разработчиков kwinconfig), используйте сгенерированный kwmrc и, непосредственно, программный код.

Для всех разработчиков: используйте `kwm.h` в libkdecore для получения представления, как использовать kwm для ваших задач. Для модулей: класс `KWMModuleApplication` является хорошим примером того, как программировать модули.

### Спецификация

kwm -- это менеджер окон, созданный для KDE. Среди прочих возможностей он предоставляет:

- Полную интеграцию в KDE.

- Полный клавиатурный контроль.

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

- Удобноемини-окно с командной строкой и историей для быстрого использования команд оболочки (shell).

- Возможность перенастройки "на лету" без перезапуска, в том числе при изменении облика, реагирования и клавиатурных ускорителей.

- Менеджер окон второго поколения. KWM использует современный набор инструментов графического интерфейса с пользователем (ГИП) для своих элементов (кнопок, меню, списков, и т.д.). Использование коммерческих или примитивных Xlib библиотек, привело бы к непомерному раздутию программ.

- `kstart` утилита для запуска приложений, написанных не для KDE, с использованием присущих KDE свойств, таких как минимизация, максимизация, передвижение на один из рабочих столов, специальное оформление или липкость. Для получения дальнейшей информации, запустите `kstart -help`.

- Превосходное удержание фокуса, даже если вы работаете на различных виртуальных рабочих столах (в отличие от других менеджеров окон, переключение с одного рабочего стола на другой не приводит к потере фокуса).

- Менеджмент сессии и прокси для менеджмента рабочей сессии - для программ не входящих в KDE. Прокси делает возможным восстановление программ, в которых вы работали, в том состоянии в котором они были оставлены, включая свойства окон (максимизирование, прилипание, минимизирование и т.д.). При этом программа будет находиться на том виртуальном рабочем столе, на котором она была открыта в предыдущей сессии.

- Современную концепцию модулей, которая включает максимальное использование X Сервера. Модули KWM также очень независимы: они могут быть запущены перед или после kwm. KWM можно перезагружать при все еще работающих модулях. Менеджер подсоединит модули автоматически.

- Кое-какие очень полезные модули, такие как KDE-панель рабочего стола (включающая также и панель задач) и чрезвычайно удобный пейджер.

- Предлагает некоторые расширения для X Сервера в `kwm.h`: Теперь окна программ могут сами максимизироваться (или прилипать, или приобретать/терять оформление и т.п.) и задавать мини-пиктограммы. Это также работает для картированных (видимых) окон.

## Использование kwm

### Параметры командной строки

kwm допускает следующие команды в командной строке:

-version

  Показывает номер версии, включая заплаты; kwm при этом параметре не запускается.

-nosession

  Запускает kwm без восстановления предыдущей сессии

### Клавиатурные ускорители

Глобальные ускорители можно переопределить в Центре управления KDE. Список, приведенный ниже, соответствует клавишам, заданным по умолчанию.

Alt-Esc или Control-Esc

  Открывает менеджер "Текущей сессии" с кнопкой выхода

Alt-Tab and Alt-Shift-Tab

  Пролистывают окна на текущем рабочем столе

Ctrl-Tab and Ctrl-Shift-Tab

  Пролистывают виртуальные рабочие столы (могут быть отключены в kwmrc)

Alt-F2

  Открывает мини-окно с командной строкой

Alt-F3

  Открывает меню оперирования окном.

Alt-F4

  Закрывает окно.

Ctrl-F&lsqb;1..8&rsqb;

  Переключается на указанный виртуальный рабочий стол.

Ctrl-Alt-Esc

  Вход в режим уничтожения окна (курсор превращается в пиратский)

### Управление мышью.

Управление мышью, как и клавиатурные ускорители, можно переопределить в Центре управления. Здесь прилагается список настроек по умолчанию.

Щелчок на границе окна или в зоне заголовка окна

- левая кнопка мыши активирует окно и помещает его на передний план

- средняя кнопка мыши активирует окно и помещает его на задний план

- правая кнопка мыши показывает меню оперирования окном, если оно активно, если нет, то активирует окно без изменения его позиции в стопке окон

Двойной щелчок мышью на заголовок окна переключает режим максимизации окна

Перемещение окна за его заголовок

- левая кнопка мыши передвигает окно и помещает его на передний план

- средняя кнопка мыши передвигает окно без изменения его позиции в стопке окон

Перемещения за углы или края

- левая кнопка мыши изменяет размер окна и помещает его на передний план

- средняя кнопка мыши изменяет размер окна без изменения его позиции в стопке окон

Все окно

- Alt-левая кнопка мыши передвигает окно

- Alt-средняя кнопка мыши помещает окно на задний план, если оно на переднем плане

- Alt-правая кнопка мыши изменяет размер окна

Кнопки заголовка окна (настраиваемые)

- Меню показывает список операций окна

- Прилипание переключает состояние прилипания on/off (окно остается на экране когда вы переходите с одного рабочего стола на другой)

- Минимизация (превращение в пиктограмму) сворачивает окно в пиктограмму

- Максимизация

  - левая кнопка мыши максимизация окна

  - средняя кнопка мыши вертикальная максимизация

  - правая кнопка мыши горизонтальная максимизация

- Закрытие закрывает окно (программа может спросить, хотите ли вы сохранить что-либо)

### Мини-окно командной строки

Нажмите `Alt-F2` для вызова маленького окна с командной строкой. Введите команду оболочки Unix (переменная командной среды SHELL определяет какая оболочка будет исполнять команду). Также, вы можете ввести:

- URL для открытия окна kfm с соответствующим URL. Вы можете опустить http:// или ftp://, если имя сервера начинается с www. или ftp., соответственно.

- `man:command` для открытия окна kfm показывающего страницу руководства Unix для данной команды.

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

### Команды

Вы можете посылать команды в kwm через:

`KWM::sendKWMCommand(QString)` (в KDE программах) или `kwmcom command` (из командной строки)

Это особенно важно для разработчиков kglobalshortcut.

На данный момент kwm понимает следующие команды:

- refreshScreen обновляет экран

- darkenScreen затемняет экран. Осторожно: после этой команды рабочий стол перестает реагировать на клавиатуру/мышь.

- logout показывает диалог выхода.

- commandLine открывает мини-окно с командной строкой

- taskManager показывает менеджер "Текущей cессии".

- configure перезагружает настройку kwm используя kwmrc.

- winMove winResize winRestore winIconify winClose winShade winSticky winOperations Эти команды действуют на активное в данный момент окно и делают именно то, что вы от них ожидаете. (`winOperations` показывает меню оперирования окном.)

- deskUnclutter deskCascade Эти команды реорганизуют окна на рабочем столе.

- desktop&lsqb;1-8&rsqb; переключает на указанный рабочий стол

- desktop+1 desktop+2 desktop-1 desktop-2 desktop&percnt;2 Эти команды осуществляют переключение между рабочими столами. `desktop&percnt;2` переключает между нечетным рабочим столом и рабочим столом со следующим по возрастающей четным номером. Это значит - между 1 и 2 или между 3 и 4. Это полезно для эмуляции "Вверх" и "Вниз" в виртуальном матриксе n*2, который используется в KDE пейджере. Аналогичным образом, `desktop+2` означает "Вправо"; `desktop-1` means "Влево".

- go:другое Команда go уничтожает kwm со всеми его модулями и запускает "другое" вместо него. "другое" - это, например, другой менеджер окон, такой как fvwm. Примечание: вам придется указывать не путь, а только имя исполняемого другого приложения при использовании go, так как `kwmcom` ограничен 20 знаками.

## Настройка

kwm можно настраивать с помощью Центра управления KDE (Диспетчер приложений > Центр управления KDE). Откройте раздел Окна для изменения различных параметров. Клавиатурные ускорители можно переопределить в разделе Глобальные клавиши. Для настройки рабочих столов откройте раздел Приложения и выберите Панель. Для тех, кто предпочитает редактировать файл настройки вручную, эта секция объясняет организацию файла `kwmrc`, который находится в ˜/.kde/share/config.

### kwmrc

Файл настройки kwmrc разделен на следующие разделы:

- Кнопки

- Общая часть

- Сессия

- Рабочий стол

- Оформление

- Фокус

- Липучесть

#### &lsqb;Кнопки&rsqb;

Этот раздел контролирует позиции контрольных кнопок на заголовке окна. Он содержит строчки в форме ButtonX=обозначение кнопки где X - буква A-F, а обозначение кнопки - одно из: `Menu (Меню), Sticky (Прилепить), Iconify (Минимизация), Maximize (Максимизация), Close (Закрытие), Off (Выкл.)`. Кнопки A, B, и C появляются с левой стороны от заголовка окна, а D, E, и F появляются с правой стороны.

#### &lsqb;Общая часть&rsqb;

В этой секции находятся общие параметры настройки:

- AltTabStyle=`KDE&verbar;CDE` (по умолчанию KDE) CDE тип для AltTab нужен для совместимости с классическими режимами фокусирования. CDE стиль используется по умолчанию в классических режимах фокусирования, так как KDE стиль в этих обстоятельствах не имеет большого смысла. Для всех прочих стандартов фокусирования лучше выбирать стиль KDE.

- AutoRaise=значение (в миллисекундах) Если используется `Режим Фокусирования:` `Фокус следует за мышью`, эта строка определяет задержку между моментом вхождения курсора на территорию окна с получением фокуса для этого окна и моментом выдвижения данного окна на передний план.

- BorderSnapZone=значение (в пикселях) Когда пользователь перемещает окно, и одна из его границ приближается к краю рабочего стола, окно автоматически выравнивает свою границу по краю рабочего стола. Значение определяет как близко окно должно быть к краю рабочего стола, чтобы для выравнивания границ.

- Button3Grab=`on&verbar;off` Если `off`, операции с окном использующие правую кнопку мыши отключены, так что событие нажатия правой кнопки мыши может использоваться окнами программ.

- ControlTab=`on&verbar;off` Если `on`, пользователь может нажатием `Ctrl+Tab` переключаться между виртуальными рабочими столами.

- ElectricBorder=значение (в миллисекундах) Если у вас более чем один рабочий стол, ElectricBorder позволяет вам передвигаться между ними помещением мыши на край экрана. Значение определяет продолжительность времени, в течение которого вы должны удерживать курсор на границе прежде чем произойдет переключение на новый рабочий стол. Значение равное -1 отменяет такое переключение.

- ElectricBorderPointerWarp=`NoWarp&verbar;MiddleWarp&verbar;FullWarp` Если параметр `ElectricBorder` находится в положении `on`, поставьте здесь тоже `on`, чтобы сдвинуть курсор в соответствующую позицию после переключения рабочего стола.

- ElectricBorderNumberOfPushes=значение (по умолчанию 5 продвижений) Число продвижений в течение временной рамки установленной в `ElectricBorder` параметре для переключения на новый рабочий стол без перемещения окна.

- FocusPolicy=`ClickToFocus (Щелчком)&verbar; FocusFollowMouse(Фокус следует за мышью)&verbar; ClassicFocusFollowsMouse(Классический фокус следует за мышью)&verbar; ClassicSloppyFocus(Классический фокус щелчком)` `ClickToFocus` требует, чтобы пользователь щелкнул кнопкой мыши внутри окна для того, чтобы переместить фокус на данное окно. `FocusFollowMouse` всегда перемещает фокус в текущее положение курсора. `ClassicFocusFollowsMouse` - окно теряет фокус, когда курсор выходит за пределы окна. Kwm вариант FocusFollowMouse использовался для переноса фокуса на новые окна или Alt-Tab для обеспечения лучшего контроля с клавиатуры.

- MaximizeOnlyVertically=`off&verbar;on` Когда этот параметр в положении `on`, окно максимизируется только в вертикальном направлении.

- ResizeAnimation=`1..10` (максимальной скорости) Когда параметр в положении `on`, минимизация и максимизация окон включает графическую анимацию. (по умолчанию 1)

- RstartProtocol=`...` (по умолчанию "rstart -v")

- ShapeMode=`off&verbar;on` Если ShapeMode в положении `on`, то kwm использует заданные пользователем растровые изображения вместо заданных по умолчанию. (смотри внизу).

- ShapePixmapTop=растровое изображение ShapePixmapBottom=растровое изображение ShapePixmapLeft=растровое изображение ShapePixmapRight=растровое изображение ShapePixmapTopLeft=растровое изображение ShapePixmapTopRight=растровое изображение ShapePixmapBottomLeft=растровое изображение ShapePixmapBottomRight=растровое изображение Эти параметры определяют какие изображения будут показываться в соответствующих сторонах/углах окон, когда `ShapeMode` находится в положении `on`. растровое изображение должно указывать на имя файла изображения (.xpm), которое должно находится в share/apps/kwm/pics.

  Код kwm включает папку "images", которая содержит пример расширений формы окон.

- TitlebarLook=`shaded(затененный)&verbar;plain(обычный)&verbar;pixmap(растровое изображение)` Этот параметр определяет как будут выглядеть заголовки окон. Выберите `pixmap`, чтобы kwm показывал заданное пользователем изображение в заголовке окон так, как это определено в следующих строках:

- TitlebarPixmapActive=растровое изображение TitlebarPixmapInactive=растровое изображение

  Эти параметры задают изображения, которые будут показаны в заголовках активных и неактивных окон соответственно, когда TitleBarLook задан как `pixmap`.

- TitleAnimation=значение (в миллисекундах) Включение TitleAnimation говорит kwm в случае длинных заголовков окон (слишком длинных чтобы помещаться в зоне заголовка) передвигать надпись справа налево и обратно, чтобы можно было прочитать весь заголовок. Значение задает скорость перемещения. Значение 0 отменяет анимацию заголовка.

- TitlebarDoubleClickCommand=`winMaximize(Максимизация окна)&verbar; winShade(Затенение окна)&verbar; winMove(Перемещение окна)&verbar; winResize(Изменение размера окна)&verbar; winRestore(Восстановление окна)&verbar; winIconify(Минимизация окна)&verbar; winClose(Закрытие окна)&verbar; winSticky(Липучесть окна)&verbar; winOperations(Меню окна)` Этот параметр позволяет определить, что должно случаться, если пользователь дважды щелкнет кнопкой мыши на заголовок окна.

- TraverseAll=`on&verbar;off` Если `on`, тогда `Alt-tab` пролистывает через все окна на всех рабочих столах. В случае `off`, `Alt-tab` пролистывает только окна на открытом рабочем столе.

- WindowMoveType=`Opaque(Непрозрачный)&verbar;Transparent(Прозрачный)` Этот параметр контролирует то, как окно выглядит при его перемещении по экрану с помощью мыши. `Transparent` показывает только контуры окна при перемещении, а `Opaque` сохраняет содержимое окна.

- WindowsPlacement=`cascade(каскадом)&verbar;interactive(интерактивно)&verbar; manual(вручную)&verbar; random(случайным образом)&verbar;smart("умно")` Этот параметр определяет как kwm размещает окна на рабочем столе, когда они открываются в первый раз. `manual` позволяет пользователю самому разместить окно на рабочем столе. `interactive` требует дополнительного значения (в процентах), например: `WindowsPlacement=interactive,25` В случае `interactive`, kwm использует `smart (умный)` алгоритм размещения окон, но только если при этом новое окно не перекрывает уже существующие окна более чем на заданное количество процентов. В последнем случае используется `manual` алгоритм, который позволяет пользователю самому разместить окно. Процент может быть больше чем 100.

  Остальные параметры разрешают kwm автоматически разместить окно.

- WindowSnapZone=значение (в пикселях) Когда пользователь размещает окно на рабочем столе и одна из его границ приближается к границе другого окна, граница передвигаемого окна выравнивается вдоль границы неподвижного. значение определяет как близко должны быть окна для выравнивания границы.

#### &lsqb;Сессия&rsqb;

- proxyignore=`xemacs,xterm,...,` Список разделенных запятой, не принадлежащих KDE программ, чьи текущие характеристики не нужно сохранять при выходе из KDE. Впишите имя программы с любыми аргументами командной строки.

#### &lsqb;Рабочий Стол&rsqb;

Этот раздел определяет число виртуальных рабочих столов, их названия и размещение. Он содержит такие строчки:

- NumberOfDesktops=значение Определяет число виртуальных рабочих столов. На время написания документации kwm поддерживает до 8 рабочих столов.

- Desktop&num;&lsqb;C&rsqb;=имя Определяет название имя Рабочего стола &num;, например, `Desktop1[C]=Один` Рабочие столы пронумерованы 1-8.

- Desktop&num;Region=geometry Определяет геометрию рабочего стола &num;; например, `Desktop1Region=101+0+923+722`

Заметьте, что модифицирование этих разделов файла настройки не приведет к разительным изменениям, так как kpanel, при перезапуске, сообщит kwm разумные значения параметров для текущего рабочего стола. При вашем выходе из системы, kwm сохранит эти, более новые, установки.

#### &lsqb;Оформление&rsqb;

- noDecorationTitles=,

- tinyDecorationTitles=,

- noDecorationClasses=,

- tinyDecorationClasses=,

#### &lsqb;Фокус&rsqb;

- noFocusTitles=,

- noFocusClasses=,

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

Примечание: Все изменения будут влиять только на окна, открытые после сохранения kwmrc. Не забудьте запустить `kwmcom `configure``, или перезапустить `kwm` после того, как вы изменили файл kwmrc.

#### &lsqb;Липучесть&rsqb;

- stickyTitles=,

- stickyClasses=,

Каждое свойство позволяет вам задать список регулярных выражений. Окно, у которого заголовок или класс совпадает с заданным выражением, будет оформлено соответствующим образом. Примечание: Эти изменения влияют только на НОВЫЕ окна. Не забудьте вызвать `kwmcom `configure``, или перезапустить `kwm` после изменений в файле kwmrc.

Возможно, вместо изменения файла настройки, вы предпочтете использовать утилиту `kstart`.

## Звуковые события

KWM включает несколько звуковых событий, каждое из которых может быть использовано в звуковом системном модуле. На данный момент задействованы следующие звуковые события:

- Window Iconify

- Window DeIconify

- Window Maximize

- Window UnMaximize

- Window Sticky

- Window UnSticky

- Window New

- Window Delete

- Window New Trans

- Window Delete Trans

- Window Shade Up

- Window Shade Down

- Logout

- Logout Message

## Часто задаваемые вопросы

### Почему я должен использовать kwm?

Я потратил несколько дней, изучая настройку 10 различных менеджеров окон. Теперь, когда у меня есть 678 строк в ресурсных файлах, делающих абсолютно то, что мне надо, вы приходите и хотите убрать мой менеджер окон!

Ответ: Вы не должны, это абсолютно на ваш выбор. KDE поддерживает все существующие менеджеры окон, но для использования всех преимуществ KDE, мы рекомендуем вам использовать kwm. Смотрите список характеристик в разделе Спецификация.

### Почему я не могу определить новые ускорители клавиатуры для программ?

Ответ: Потому, что это не является задачей менеджера окон. Тем не менее, вы можете написать маленькое приложение, которое сможет это делать. Каждое приложение KDE может иметь доступ к глобальным ускорителям клавиатуры используя класс KGlobalAccel из libkdecore.

### Почему внешний вид kwm так сильно напоминает Windows 95?

Ответ: Ой, правда? Дайте проверить... (Маттиас пытается найти кого-нибудь, кто имеет Windows 95, потому что у него Windows 95 не установлен ни на один из его компьютеров, мммм, никто не использует Windows 95 здесь. Хорошо, давайте возьмем старый дистрибутив Linux и установим fvwm95-2.....) Нет, не могу этого сказать. KWM выглядит гораздо красивее и предлагает большее функций в базовом управлении окнами.

### Можно ли добавить дополнительные функции KDE в другие менеджеры окон?

Ответ: Да, можно. Вы просто должны просмотреть `kwm.h` и `kwm.C` из `libkdecore` и дополнить ваш любимый менеджер окон, чтобы он мог корректно реагировать на эти запросы. Нам сообщают, что некоторые другие менеджеры окон уже поддерживают некоторые из запросов, или даже их большинство.

### Поддерживает ли kwm затененные окна a la OpenStep?

Ответ: Да.

## Эпилог

### Разработчик

`Matthias Ettrich`

### Авторы

`Matthias Ettrich`

`Stephen Schaub` - Редактор

`Kalle Dalheimer` - Редактор

`Robert Williams` - Редактор

`Дмитрий Мозжерин` - Переводчик