genode/repos/gems/run/launcher.run
Norman Feske d3d6b643f1 wm: shape report interception mechanism
This patch simplifies the propagation of pointer shapes from
window-manager clients to the pointer. The "shape" report is routed to
the wm server, which, in turn, reports it to the pointer. This way, the
pointer can easily correlate the label of the application's "shape"
report with the label of the application's Nitpicker session. The
formerly used manual rewriting of the "shape" label is not needed
anymore.

Since the wm server provides a "Report" service now, its <provides>
declaration must cover "Report" in addition to "Nitpicker" to avoid
runtime error messages. Vice versa, the wm is now expected to request
"shape" reports, which should be routed to the pointer (using the
'label_last' routing attribute).

Fixes #3165
2019-02-26 14:45:07 +01:00

307 lines
10 KiB
Plaintext

create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_interactive_pkg] \
[depot_user]/pkg/motif_wm \
[depot_user]/raw/genode_bg \
[depot_user]/pkg/fonts_fs \
[depot_user]/pkg/backdrop \
[depot_user]/src/demo \
[depot_user]/src/init \
[depot_user]/src/nitpicker \
[depot_user]/src/nit_fb \
[depot_user]/src/nit_fader \
[depot_user]/src/rom_filter \
[depot_user]/src/menu_view
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="CPU"/>
<service name="PD"/>
<service name="RM"/>
<service name="LOG"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="drivers" caps="1000">
<resource name="RAM" quantum="32M" constrain_phys="yes"/>
<binary name="init"/>
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides>
<service name="Input"/> <service name="Framebuffer"/>
</provides>
</start>
<start name="nitpicker" caps="100">
<resource name="RAM" quantum="1M"/>
<provides><service name="Nitpicker"/></provides>
<config>
<report hover="yes" focus="yes" />
<domain name="pointer" layer="1" content="client" label="no" origin="pointer" />
<domain name="panel" layer="2" content="client" label="no" hover="always" focus="transient" />
<domain name="default" layer="3" color="#ff0000" hover="always" focus="click" />
<domain name="decorator" layer="3" content="client" label="no" hover="always" focus="transient" />
<policy label_prefix="pointer" domain="pointer"/>
<policy label_prefix="wm -> launcher -> menu" domain="panel"/>
<policy label_prefix="wm -> decorator" domain="decorator"/>
<policy label_prefix="status_bar" domain="panel"/>
<default-policy domain="default"/>
<global-key name="KEY_SCROLLLOCK" label="global_keys_handler -> input" />
<global-key name="KEY_F1" label="global_keys_handler -> input" />
<global-key name="KEY_F2" label="global_keys_handler -> input" />
<global-key name="KEY_LEFTMETA" label="wm -> launcher" />
<global-key name="KEY_F3" label="wm -> launcher" />
</config>
<route>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="pointer">
<resource name="RAM" quantum="1M"/>
<route>
<service name="Nitpicker"> <child name="nitpicker" /> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="global_keys_handler">
<resource name="RAM" quantum="1M"/>
<config>
<bool name="xray" initial="no"/>
<press name="KEY_SCROLLLOCK" bool="xray" change="toggle"/>
<press name="KEY_F1" bool="xray" change="on"/>
<release name="KEY_F1" bool="xray" change="off"/>
<press name="KEY_F2" bool="xray" change="toggle"/>
<report name="xray" delay_ms="125">
<hovered domain="panel"/>
<hovered domain="decorator"/>
<bool name="xray"/>
</report>
</config>
<route>
<service name="ROM" label="hover"> <child name="report_rom"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="Nitpicker"> <child name="nitpicker"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="status_bar">
<resource name="RAM" quantum="1M"/>
<route>
<service name="ROM" label="focus"> <child name="report_rom"/> </service>
<service name="Nitpicker"> <child name="nitpicker"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="report_rom">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="no">
<policy label="decorator_config -> xray" report="global_keys_handler -> xray"/>
<policy label="layouter -> window_list" report="wm -> window_list"/>
<policy label="layouter -> focus_request" report="wm -> focus_request" />
<policy label="decorator -> window_layout" report="layouter -> window_layout"/>
<policy label="wm -> resize_request" report="layouter -> resize_request"/>
<policy label="decorator -> pointer" report="wm -> pointer"/>
<policy label="layouter -> hover" report="decorator -> hover"/>
<policy label="wm -> focus" report="layouter -> focus"/>
<policy label="status_bar -> focus" report="nitpicker -> focus"/>
<policy label="launcher -> focus" report="nitpicker -> focus"/>
<policy label="global_keys_handler -> hover" report="nitpicker -> hover"/>
<policy label="layouter -> decorator_margins" report="decorator -> decorator_margins"/>
<policy label="layouter -> rules" report="layouter -> rules"/>
</config>
</start>
<start name="wm" caps="200">
<resource name="RAM" quantum="6M"/>
<provides>
<service name="Nitpicker"/> <service name="Report"/>
</provides>
<config>
<policy label_prefix="decorator" role="decorator"/>
<policy label_prefix="layouter" role="layouter"/>
<policy label_prefix="launcher -> menu" role="direct"/>
<policy label_prefix="launcher -> testnit" role="direct"/>
<default-policy/>
</config>
<route>
<service name="ROM" label="focus"> <child name="report_rom"/> </service>
<service name="ROM" label="resize_request"> <child name="report_rom"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<any-service>
<child name="nitpicker"/> <parent/> <any-child/>
</any-service>
</route>
</start>
<start name="layouter">
<binary name="window_layouter"/>
<resource name="RAM" quantum="4M"/>
<config rules="rom">
<report rules="yes"/>
<rules>
<screen name="screen"/>
<assign label_prefix="" target="screen" xpos="any" ypos="any"/>
</rules>
</config>
<route>
<service name="ROM" label="window_list"> <child name="report_rom"/> </service>
<service name="ROM" label="focus_request"> <child name="report_rom"/> </service>
<service name="ROM" label="hover"> <child name="report_rom"/> </service>
<service name="ROM" label="decorator_margins"> <child name="report_rom"/> </service>
<service name="ROM" label="rules"> <child name="report_rom"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<any-service>
<child name="wm"/> <parent/> <any-child/>
</any-service>
</route>
</start>
<start name="decorator">
<binary name="decorator"/>
<resource name="RAM" quantum="8M"/>
<config>
<default-policy/>
</config>
<route>
<service name="ROM" label="config">
<child name="decorator_config"/> </service>
<service name="ROM" label="window_layout">
<child name="report_rom"/> </service>
<service name="ROM" label="pointer">
<child name="report_rom"/> </service>
<any-service>
<child name="wm"/> <parent/> <any-child/>
</any-service>
</route>
</start>
<start name="decorator_config">
<binary name="rom_filter"/>
<resource name="RAM" quantum="4M"/>
<provides><service name="ROM"/></provides>
<config verbose="yes">
<input name="xray_enabled" rom="xray" node="xray">
<attribute name="enabled" />
</input>
<output node="config">
<inline>
<controls>
<title/> <minimizer/> <maximizer/> <closer/>
</controls>
</inline>
<if>
<has_value input="xray_enabled" value="yes" />
<then>
<inline>
<default-policy color="#ff0000" gradient="75" />
</inline>
</then>
</if>
</output>
</config>
<route>
<service name="ROM" label="xray"> <child name="report_rom"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="fonts_fs" caps="300">
<resource name="RAM" quantum="8M"/>
<binary name="vfs"/>
<route>
<service name="ROM" label="config"> <parent label="fonts_fs.config"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides> <service name="File_system"/> </provides>
</start>
<start name="launcher" caps="10000">
<resource name="RAM" quantum="60M" />
<config focus_prefix="wm -> launcher -> ">
<subsystem name="scout" title="Scout" caps="200">
<resource name="RAM" quantum="20M" />
<binary name="scout" />
</subsystem>
<subsystem name="testnit1" title="Nitpicker Test" caps="100">
<resource name="RAM" quantum="2M" />
<binary name="testnit" />
</subsystem>
<subsystem name="testnit2" title="Nitpicker Test 2" caps="100">
<resource name="RAM" quantum="2M" />
<binary name="testnit" />
</subsystem>
<subsystem name="testnit3" title="Nitpicker Test 3" caps="100">
<resource name="RAM" quantum="2M" />
<binary name="testnit" />
</subsystem>
<subsystem name="scout2" title="Scoutx" caps="200">
<resource name="RAM" quantum="20M" />
<binary name="scout" />
</subsystem>
<subsystem name="testnit4" title="Nitpicker Testx" caps="100">
<resource name="RAM" quantum="2M" />
<binary name="testnit" />
</subsystem>
<subsystem name="testnit5" title="Nitpicker Test5" caps="100">
<resource name="RAM" quantum="2M" />
<binary name="testnit" />
</subsystem>
<subsystem name="backdrop" title="Backdrop" caps="100">
<resource name="RAM" quantum="8M"/>
<binary name="backdrop" />
<config>
<libc>
<vfs>
</vfs>
</libc>
<fill color="#224433" />
</config>
</subsystem>
</config>
<route>
<service name="ROM" label="focus"> <child name="report_rom" /> </service>
<service name="File_system" label="fonts"> <child name="fonts_fs"/> </service>
<any-service> <child name="wm"/> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}
build { app/launcher test/nitpicker app/status_bar app/global_keys_handler }
build_boot_image { testnit launcher global_keys_handler status_bar }
run_genode_until forever