Inferno OS Wiki
Advertisement

НАЗВАНИЕ

Wm - менеджер окон.

ВВОД

wm/wm [command [arg ...]]

ОПИСАНИЕ

Wm - менеджер окон в Inferno, позволяющий пользователю размещать окна приложений в нужном порядке и в нужном месте экрана, а также активно ими (приложениями) пользоваться. После запуска wm исполняет ряд команд, указанных пользователем, как это показано выше (по умолчанию это: wm/toolbar, см toolbar(1)). Тем не менее, сам по себе, wm не является утилитой запуска приложений - для этого имеются специальные программы, например, тот же wm/toolbar.

Note wm

ФУНКЦИИ


Управление приложениями[]

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)

Advertisement