НАЗВАНИЕ
Wm - менеджер окон.
ВВОД
wm/wm [command [arg ...]]
ОПИСАНИЕ
Wm - менеджер окон в Inferno, позволяющий пользователю размещать окна приложений в нужном порядке и в нужном месте экрана, а также активно ими (приложениями) пользоваться. После запуска wm исполняет ряд команд, указанных пользователем, как это показано выше (по умолчанию это: wm/toolbar, см toolbar(1)). Тем не менее, сам по себе, wm не является утилитой запуска приложений - для этого имеются специальные программы, например, тот же wm/toolbar.
ФУНКЦИИ
Управление приложениями[]
Wm позволяет управлять запущенными из-под него приложениями посредством структуры контекста данных Wmcontext (adt - abstract data type, см.adt). Через эту структуру приложение отдает и получает данные посредством обращения к элементу `контекст` Draw->Context, который, собственно, прописан в этом графическом модуле (см. draw-context(2)). Управляющие сигналы, формируемые при этом:
- start what - запуск при условии what. Это может быть как ptr (pointer events, движение курсора), kbd (keyboard events, нажатие кнопки), так и control (window manager control events, управляющие сигналы, см. ниже).
- key charval - симулирует нажатие клавиши. Charval - числовой код `нажатой` клавиши, см. также keyboard(2).
- !reshape tag reqid minx miny maxx maxy [ how ] - создает окно или меняет размеры существующего окна с именем tag. Reqid в данном случае игнорируется; minx..maxy определяют границы нового окна. Если границы не заданы, инструкция how укажет wm как правильно отобразить окно; это может быть place (выбираем удобную позицию и размеры окна сами), onscreen (масштабирует окно приложения, чтобы оно уместилось внутри окна, в котором запущен wm) или max (открывается окно с максимально возможными размерами, опять же внутри окна wm). Если wm запущен в полноэкранном режиме, то и размеры других приложений будут иметь соответствующие возможности.
- delete tag - закрывает окно с именем tag.
- raise - поверх других окон всплывают все окна, контекст которых удовлетворяет выбранному (судя по всему, речь идет об окнах, открытых одним родительским приложением).
- lower - сворачивает все окна, контекст которых удовлетворяет выбранному (аналогично предыдущему).
- !move tag reqid startx starty - позволяет интерактивно перетащить окно с именем tag. Reqid игнорируется. Startx и starty - начальная и конечная позиции курсора при перетаскивании.
- !size tag reqid - интерактивно масштабирует окно с именемtag.
- fixedorigin - по умолчанию, если окно перетащили, но не масштабировали, то wm не перерисовывает его содержимое (двигает как статическую картинку), в то время как fixedorigin заставляет wm каждый раз прорисовывать содержимое.
- kbdfocus [ in ] - если целое число in не равно нулю, то периодически опрашивается состояние клавиатуры для данного приложения, если не активна, то управление передается другому окну.
- Ко всему прочему, Wm генерирует управляющие сигналы еще и для того, чтобы сообщить приложению о произошедших изменениях графического контекста соответствующего окна:
- rect minx miny maxx maxy - размеры окна изменились. "minx..maxy" - размеры нового окна.
- haskbdfocus in - сообщает приложению о текущем состоянии клавиатуры в его окне. Данный сигнал генерируется в ответ на движения курсора, а также посигналу kbdfocus.
- exit - окно закрывается.
Главное приложение[]
Первое приложение, запущенное из-под wm получает возможность контролировать последующие приложения, запущенные в том же wm. Оно посылает управляющие сигналы, в ответ на который получает управляющие запросы (которые сам по себе wm не понимает) от других приложений и and information about applications starting and leaving. Wm допускает ряд управляющих сигналов, посылаемых главным приложением:
- ctl id msg - послать управляющий сигнал msg приложению с идентификатором id.
- endcontrol - отказ отстатуса главного приложения и передача статуса следующему по списку. Данная возможность используется, например, для передачи полномочий от logon(1) к toolbar(1) при запуске системы.
- На генерацию управляющих сигналов главным приложением, wm реагирует генерациейсопутствующих собственных сигналов:
- newclient id - новому процессуприсвоенидентификатор id.
- delclient id - процесс с идентификатором id завершен.
- request id msg - процесс с идентификатором id послал запрос wm, которое wm распознать не может. Эта функциональность используется, например, инструментарием toolbar(1) для task и untask запросов.
ФАЙЛ
/chan/wmrect - файл содержит размеры текущего окна приложения.
ИСХОДНИК
/appl/wm/wm.b
Смотри также
toolbar(1), logon(1), tkclient(2), wmclient(2)