From c6fd0055b152c66ab18ba1f1d9ab57f01da88a23 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 16 Nov 2018 15:41:58 +0100 Subject: [PATCH] sculpt: split window manager into multiple pkgs This commit moves the window layouter and window decorator into dedicated packages that can now be combined with the "wm" server at runtime and restarted/reconfigured/swapped-out independently. To use the window manager, one must start the 'wm', 'window_layouter', and one of the 'motif_decorator' or 'themed_decorator' subsystems. Fixes #3024 --- repos/gems/recipes/pkg/motif_decorator/README | 3 + .../gems/recipes/pkg/motif_decorator/archives | 1 + repos/gems/recipes/pkg/motif_decorator/hash | 1 + .../gems/recipes/pkg/motif_decorator/runtime | 14 +++ repos/gems/recipes/pkg/motif_wm/archives | 2 +- .../recipes/pkg/sculpt-installation/archives | 5 +- repos/gems/recipes/pkg/sculpt/README | 26 +++++- .../gems/recipes/pkg/themed_decorator/README | 3 + .../recipes/pkg/themed_decorator/archives | 5 + repos/gems/recipes/pkg/themed_decorator/hash | 1 + .../gems/recipes/pkg/themed_decorator/runtime | 21 +++++ repos/gems/recipes/pkg/window_layouter/README | 3 + .../gems/recipes/pkg/window_layouter/archives | 2 + repos/gems/recipes/pkg/window_layouter/hash | 1 + .../gems/recipes/pkg/window_layouter/runtime | 11 +++ repos/gems/recipes/pkg/wm/README | 19 ++++ repos/gems/recipes/pkg/wm/archives | 4 + repos/gems/recipes/pkg/wm/hash | 1 + repos/gems/recipes/pkg/wm/runtime | 15 +++ repos/gems/recipes/raw/motif_wm/content.mk | 4 + .../{wm => motif_wm}/decorator_init.config | 0 repos/gems/recipes/raw/motif_wm/hash | 1 + .../raw/{wm => motif_wm}/layouter.config | 0 repos/gems/recipes/raw/motif_wm/wm.config | 93 +++++++++++++++++++ .../recipes/raw/window_layouter/content.mk | 4 + repos/gems/recipes/raw/window_layouter/hash | 1 + .../window_layouter/window_layouter.config | 25 +++++ repos/gems/recipes/raw/wm/content.mk | 4 +- repos/gems/recipes/raw/wm/wm.config | 85 ++++++++--------- repos/gems/run/depot_deploy.run | 34 ++++++- .../gems/run/sculpt/launcher/motif_decorator | 8 ++ .../gems/run/sculpt/launcher/themed_decorator | 8 ++ .../gems/run/sculpt/launcher/window_layouter | 11 +++ repos/gems/run/sculpt/launcher/wm | 2 +- 34 files changed, 359 insertions(+), 59 deletions(-) create mode 100644 repos/gems/recipes/pkg/motif_decorator/README create mode 100644 repos/gems/recipes/pkg/motif_decorator/archives create mode 100644 repos/gems/recipes/pkg/motif_decorator/hash create mode 100644 repos/gems/recipes/pkg/motif_decorator/runtime create mode 100644 repos/gems/recipes/pkg/themed_decorator/README create mode 100644 repos/gems/recipes/pkg/themed_decorator/archives create mode 100644 repos/gems/recipes/pkg/themed_decorator/hash create mode 100644 repos/gems/recipes/pkg/themed_decorator/runtime create mode 100644 repos/gems/recipes/pkg/window_layouter/README create mode 100644 repos/gems/recipes/pkg/window_layouter/archives create mode 100644 repos/gems/recipes/pkg/window_layouter/hash create mode 100644 repos/gems/recipes/pkg/window_layouter/runtime create mode 100644 repos/gems/recipes/pkg/wm/README create mode 100644 repos/gems/recipes/pkg/wm/archives create mode 100644 repos/gems/recipes/pkg/wm/hash create mode 100644 repos/gems/recipes/pkg/wm/runtime create mode 100644 repos/gems/recipes/raw/motif_wm/content.mk rename repos/gems/recipes/raw/{wm => motif_wm}/decorator_init.config (100%) create mode 100644 repos/gems/recipes/raw/motif_wm/hash rename repos/gems/recipes/raw/{wm => motif_wm}/layouter.config (100%) create mode 100644 repos/gems/recipes/raw/motif_wm/wm.config create mode 100644 repos/gems/recipes/raw/window_layouter/content.mk create mode 100644 repos/gems/recipes/raw/window_layouter/hash create mode 100644 repos/gems/recipes/raw/window_layouter/window_layouter.config create mode 100644 repos/gems/run/sculpt/launcher/motif_decorator create mode 100644 repos/gems/run/sculpt/launcher/themed_decorator create mode 100644 repos/gems/run/sculpt/launcher/window_layouter diff --git a/repos/gems/recipes/pkg/motif_decorator/README b/repos/gems/recipes/pkg/motif_decorator/README new file mode 100644 index 0000000000..3e14d80de4 --- /dev/null +++ b/repos/gems/recipes/pkg/motif_decorator/README @@ -0,0 +1,3 @@ + + Motif-inspired window decorator + diff --git a/repos/gems/recipes/pkg/motif_decorator/archives b/repos/gems/recipes/pkg/motif_decorator/archives new file mode 100644 index 0000000000..87c9ceda2e --- /dev/null +++ b/repos/gems/recipes/pkg/motif_decorator/archives @@ -0,0 +1 @@ +_/src/decorator diff --git a/repos/gems/recipes/pkg/motif_decorator/hash b/repos/gems/recipes/pkg/motif_decorator/hash new file mode 100644 index 0000000000..fc90286c78 --- /dev/null +++ b/repos/gems/recipes/pkg/motif_decorator/hash @@ -0,0 +1 @@ +2018-11-14 d6ad522370b694b39ef1d6100108619504987461 diff --git a/repos/gems/recipes/pkg/motif_decorator/runtime b/repos/gems/recipes/pkg/motif_decorator/runtime new file mode 100644 index 0000000000..c5563dcc0b --- /dev/null +++ b/repos/gems/recipes/pkg/motif_decorator/runtime @@ -0,0 +1,14 @@ + + + + + + </controls> + </config> + + <content> + <rom label="ld.lib.so"/> + <rom label="decorator"/> + </content> + +</runtime> diff --git a/repos/gems/recipes/pkg/motif_wm/archives b/repos/gems/recipes/pkg/motif_wm/archives index e52aacc360..07466c666a 100644 --- a/repos/gems/recipes/pkg/motif_wm/archives +++ b/repos/gems/recipes/pkg/motif_wm/archives @@ -1,4 +1,4 @@ -_/raw/wm +_/raw/motif_wm _/src/wm _/src/report_rom _/src/decorator diff --git a/repos/gems/recipes/pkg/sculpt-installation/archives b/repos/gems/recipes/pkg/sculpt-installation/archives index 5ec9b15b95..5b99b57649 100644 --- a/repos/gems/recipes/pkg/sculpt-installation/archives +++ b/repos/gems/recipes/pkg/sculpt-installation/archives @@ -7,7 +7,10 @@ _/pkg/rom_filter _/pkg/rom_reporter _/pkg/nic_router-nat _/pkg/vbox5-nova-sculpt -_/pkg/themed_wm +_/pkg/wm +_/pkg/themed_decorator +_/pkg/motif_decorator +_/pkg/window_layouter _/pkg/sticks_blue_backdrop _/pkg/nano3d _/pkg/fonts_fs diff --git a/repos/gems/recipes/pkg/sculpt/README b/repos/gems/recipes/pkg/sculpt/README index 9015153a35..b31219284a 100644 --- a/repos/gems/recipes/pkg/sculpt/README +++ b/repos/gems/recipes/pkg/sculpt/README @@ -156,9 +156,13 @@ relationships. On the right, diagnostic messages are presented. # Try adding additional components by selecting items in the "+" context menu of the runtime view. Most components expect the presence of a - window manager. Hence, you should first select "wm". Please pay attention - to diagnostic messages given in the runtime dialog on the left. Whenever - a component depends on another one, a corresponding message appears. + window manager. Hence, you should first select the "wm", "window_layouter", + and "motif_decorator" components to make the window-management functionality + available. The distinct roles of the three components are described below. + + Please pay attention to diagnostic messages given in the runtime dialog on + the left. Whenever a component depends on another one, a corresponding + message appears. # You may click on any component in the runtime view to reveal additional information such as its memory usage. For components that you started @@ -175,8 +179,20 @@ The following example subsystems are available from the "+" menu: is used by the graphical terminal of the noux subsystem and the 'top_view' application. -:'wm': A window manager that displays clients in windows that can be arranged - with the mouse. +:'wm': A component that allows for the creation of windowed graphical + user interfaces. It must be combined with a window layouter and a window + decorator (see below). + +:'window_layouter': A component that defines the behavior and layout policy + of the window manager's windows. By default, each application is hosted in a + floating window that can be moved, resized, and re-stacked with the mouse. + +:'motif_decorator': A window decorator component that defines how window + decorations look. It is inspired by the simplistic look of traditional + Motif-based graphical user interfaces. + +:'themed_decorator: A modern looking window layouter that can be used as + an alternative to the 'motif_decorator'. :'backdrop': A wallpaper that adjusts itself to any screen size. diff --git a/repos/gems/recipes/pkg/themed_decorator/README b/repos/gems/recipes/pkg/themed_decorator/README new file mode 100644 index 0000000000..e8adcbaf48 --- /dev/null +++ b/repos/gems/recipes/pkg/themed_decorator/README @@ -0,0 +1,3 @@ + + Window decorator + diff --git a/repos/gems/recipes/pkg/themed_decorator/archives b/repos/gems/recipes/pkg/themed_decorator/archives new file mode 100644 index 0000000000..6c247f0b06 --- /dev/null +++ b/repos/gems/recipes/pkg/themed_decorator/archives @@ -0,0 +1,5 @@ +_/src/themed_decorator +_/src/libc +_/src/libpng +_/src/vfs +_/src/zlib diff --git a/repos/gems/recipes/pkg/themed_decorator/hash b/repos/gems/recipes/pkg/themed_decorator/hash new file mode 100644 index 0000000000..fc90286c78 --- /dev/null +++ b/repos/gems/recipes/pkg/themed_decorator/hash @@ -0,0 +1 @@ +2018-11-14 d6ad522370b694b39ef1d6100108619504987461 diff --git a/repos/gems/recipes/pkg/themed_decorator/runtime b/repos/gems/recipes/pkg/themed_decorator/runtime new file mode 100644 index 0000000000..0c5672c501 --- /dev/null +++ b/repos/gems/recipes/pkg/themed_decorator/runtime @@ -0,0 +1,21 @@ +<runtime ram="8M" caps="400" binary="themed_decorator"> + + <requires> <nitpicker/> <timer/> </requires> + + <config> + <libc/> + <vfs> <tar name="plain_decorator_theme.tar"/> </vfs> + </config> + + <content> + <rom label="ld.lib.so"/> + <rom label="libc.lib.so"/> + <rom label="libm.lib.so"/> + <rom label="libpng.lib.so"/> + <rom label="vfs.lib.so"/> + <rom label="zlib.lib.so"/> + <rom label="themed_decorator"/> + <rom label="plain_decorator_theme.tar"/> + </content> + +</runtime> diff --git a/repos/gems/recipes/pkg/window_layouter/README b/repos/gems/recipes/pkg/window_layouter/README new file mode 100644 index 0000000000..9aacf5e87b --- /dev/null +++ b/repos/gems/recipes/pkg/window_layouter/README @@ -0,0 +1,3 @@ + + Default window layouter + diff --git a/repos/gems/recipes/pkg/window_layouter/archives b/repos/gems/recipes/pkg/window_layouter/archives new file mode 100644 index 0000000000..3f25d3083c --- /dev/null +++ b/repos/gems/recipes/pkg/window_layouter/archives @@ -0,0 +1,2 @@ +_/raw/window_layouter +_/src/window_layouter diff --git a/repos/gems/recipes/pkg/window_layouter/hash b/repos/gems/recipes/pkg/window_layouter/hash new file mode 100644 index 0000000000..fc90286c78 --- /dev/null +++ b/repos/gems/recipes/pkg/window_layouter/hash @@ -0,0 +1 @@ +2018-11-14 d6ad522370b694b39ef1d6100108619504987461 diff --git a/repos/gems/recipes/pkg/window_layouter/runtime b/repos/gems/recipes/pkg/window_layouter/runtime new file mode 100644 index 0000000000..2c9a1132f4 --- /dev/null +++ b/repos/gems/recipes/pkg/window_layouter/runtime @@ -0,0 +1,11 @@ +<runtime ram="4M" caps="200" binary="window_layouter" config="window_layouter.config"> + + <requires> <nitpicker/> <timer/> </requires> + + <content> + <rom label="ld.lib.so"/> + <rom label="window_layouter"/> + <rom label="window_layouter.config"/> + </content> + +</runtime> diff --git a/repos/gems/recipes/pkg/wm/README b/repos/gems/recipes/pkg/wm/README new file mode 100644 index 0000000000..3477acf5ff --- /dev/null +++ b/repos/gems/recipes/pkg/wm/README @@ -0,0 +1,19 @@ + + Window manager + +This package provides the central part of Genode's componentized GUI stack +via a custom implementation of the nitpicker session interface. +It must be complemented by a window layouter and a window decorator, each of +which is a separate client component. Whereas the window decorator defines how +windows look, the window layouter defines how they behave. + +The window manager, decorator, and layouter propagate their respective state +(like the window layout or the decoration margins) via reports and ROMs. The +window-manager package manages the flow of information between those parties +by providing a report and ROM service to the external layouter and decorator. + +The special roles of the layouter and decorator among the window-manager +clients are identified according to their names (labels), which are suffixed +with "layouter" and "decorator" respectively. All other clients are expected +to be regular windowed applications. + diff --git a/repos/gems/recipes/pkg/wm/archives b/repos/gems/recipes/pkg/wm/archives new file mode 100644 index 0000000000..85ddfe6df8 --- /dev/null +++ b/repos/gems/recipes/pkg/wm/archives @@ -0,0 +1,4 @@ +_/raw/wm +_/src/wm +_/src/report_rom +_/src/init diff --git a/repos/gems/recipes/pkg/wm/hash b/repos/gems/recipes/pkg/wm/hash new file mode 100644 index 0000000000..fc90286c78 --- /dev/null +++ b/repos/gems/recipes/pkg/wm/hash @@ -0,0 +1 @@ +2018-11-14 d6ad522370b694b39ef1d6100108619504987461 diff --git a/repos/gems/recipes/pkg/wm/runtime b/repos/gems/recipes/pkg/wm/runtime new file mode 100644 index 0000000000..1eb01af526 --- /dev/null +++ b/repos/gems/recipes/pkg/wm/runtime @@ -0,0 +1,15 @@ +<runtime ram="16M" caps="500" binary="init" config="wm.config"> + + <requires> <nitpicker/> <timer/> </requires> + + <provides> <nitpicker/> <rom/> <report/> </provides> + + <content> + <rom label="ld.lib.so"/> + <rom label="report_rom"/> + <rom label="wm"/> + <rom label="init"/> + <rom label="wm.config"/> + </content> + +</runtime> diff --git a/repos/gems/recipes/raw/motif_wm/content.mk b/repos/gems/recipes/raw/motif_wm/content.mk new file mode 100644 index 0000000000..2fe6520312 --- /dev/null +++ b/repos/gems/recipes/raw/motif_wm/content.mk @@ -0,0 +1,4 @@ +content: wm.config decorator_init.config layouter.config + +wm.config decorator_init.config layouter.config: + cp $(REP_DIR)/recipes/raw/motif_wm/$@ $@ diff --git a/repos/gems/recipes/raw/wm/decorator_init.config b/repos/gems/recipes/raw/motif_wm/decorator_init.config similarity index 100% rename from repos/gems/recipes/raw/wm/decorator_init.config rename to repos/gems/recipes/raw/motif_wm/decorator_init.config diff --git a/repos/gems/recipes/raw/motif_wm/hash b/repos/gems/recipes/raw/motif_wm/hash new file mode 100644 index 0000000000..5344980046 --- /dev/null +++ b/repos/gems/recipes/raw/motif_wm/hash @@ -0,0 +1 @@ +2018-11-14 fac14f087bce046d503af93da5d0a4bba32e6ec1 diff --git a/repos/gems/recipes/raw/wm/layouter.config b/repos/gems/recipes/raw/motif_wm/layouter.config similarity index 100% rename from repos/gems/recipes/raw/wm/layouter.config rename to repos/gems/recipes/raw/motif_wm/layouter.config diff --git a/repos/gems/recipes/raw/motif_wm/wm.config b/repos/gems/recipes/raw/motif_wm/wm.config new file mode 100644 index 0000000000..cd558c071d --- /dev/null +++ b/repos/gems/recipes/raw/motif_wm/wm.config @@ -0,0 +1,93 @@ +<config> + <parent-provides> + <service name="ROM"/> + <service name="PD"/> + <service name="CPU"/> + <service name="LOG"/> + <service name="Nitpicker"/> + <service name="Timer"/> + </parent-provides> + + <default-route> + <any-service> <parent/> <any-child/> </any-service> + </default-route> + + <default caps="100"/> + + <service name="Nitpicker"> + <default-policy> <child name="wm"/> </default-policy> + </service> + + <start name="report_rom"> + <resource name="RAM" quantum="4M"/> + <provides> + <service name="Report"/> + <service name="ROM"/> + </provides> + <config> + <policy label="layouter -> window_list" report="wm -> window_list"/> + <policy label="layouter -> focus_request" report="wm -> focus_request"/> + <policy label="layouter -> rules" report="layouter -> rules"/> + <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="layouter -> decorator_margins" report="decorator -> decorator_margins"/> + <policy label="wm -> focus" report="layouter -> focus"/> + </config> + </start> + + <start name="wm" caps="250"> + <resource name="RAM" quantum="6M"/> + <provides> + <service name="Nitpicker"/> + </provides> + <config> + <policy label_prefix="decorator" role="decorator"/> + <policy label_prefix="layouter" role="layouter"/> + </config> + <route> + <service name="ROM" label="resize_request"> <child name="report_rom"/> </service> + <service name="ROM" label="focus"> <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"/> + <route> + <service name="ROM" label="config"> <parent label="layouter.config"/> </service> + <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" caps="350"> + <binary name="init"/> + <resource name="RAM" quantum="12M"/> + <route> + <service name="ROM" label="config"> + <parent label="decorator_init.config"/> </service> + + <service name="ROM" label="window_layout"> <child name="report_rom"/> </service> + <service name="ROM" label="pointer"> <child name="report_rom"/> </service> + <service name="Report" label="decorator_margins"> <child name="report_rom"/> </service> + <service name="Report" label="hover"> <child name="report_rom"/> </service> + + <any-service> + <child name="wm"/> <parent/> <any-child/> + </any-service> + </route> + </start> +</config> diff --git a/repos/gems/recipes/raw/window_layouter/content.mk b/repos/gems/recipes/raw/window_layouter/content.mk new file mode 100644 index 0000000000..9a015b7849 --- /dev/null +++ b/repos/gems/recipes/raw/window_layouter/content.mk @@ -0,0 +1,4 @@ +content: window_layouter.config + +window_layouter.config: + cp $(REP_DIR)/recipes/raw/window_layouter/$@ $@ diff --git a/repos/gems/recipes/raw/window_layouter/hash b/repos/gems/recipes/raw/window_layouter/hash new file mode 100644 index 0000000000..5344980046 --- /dev/null +++ b/repos/gems/recipes/raw/window_layouter/hash @@ -0,0 +1 @@ +2018-11-14 fac14f087bce046d503af93da5d0a4bba32e6ec1 diff --git a/repos/gems/recipes/raw/window_layouter/window_layouter.config b/repos/gems/recipes/raw/window_layouter/window_layouter.config new file mode 100644 index 0000000000..06aaf9ae3f --- /dev/null +++ b/repos/gems/recipes/raw/window_layouter/window_layouter.config @@ -0,0 +1,25 @@ +<config rules="rom"> + <report rules="yes"/> + + <rules> + <screen name="screen"/> + <assign label_prefix="" target="screen" xpos="any" ypos="any"/> + </rules> + + <press key="KEY_SCREEN"> + <press key="KEY_TAB" action="next_window"> + <release key="KEY_TAB"> + <release key="KEY_SCREEN" action="raise_window"/> + </release> + <release key="KEY_SCREEN" action="raise_window"/> + </press> + <press key="KEY_LEFTSHIFT"> + <press key="KEY_TAB" action="prev_window"> + <release key="KEY_TAB"> + <release key="KEY_SCREEN" action="raise_window"/> + </release> + </press> + </press> + <press key="KEY_ENTER" action="toggle_fullscreen"/> + </press> +</config> diff --git a/repos/gems/recipes/raw/wm/content.mk b/repos/gems/recipes/raw/wm/content.mk index 1f8d131556..91bd30892d 100644 --- a/repos/gems/recipes/raw/wm/content.mk +++ b/repos/gems/recipes/raw/wm/content.mk @@ -1,4 +1,4 @@ -content: wm.config decorator_init.config layouter.config +content: wm.config -wm.config decorator_init.config layouter.config: +wm.config: cp $(REP_DIR)/recipes/raw/wm/$@ $@ diff --git a/repos/gems/recipes/raw/wm/wm.config b/repos/gems/recipes/raw/wm/wm.config index cd558c071d..548d7c923a 100644 --- a/repos/gems/recipes/raw/wm/wm.config +++ b/repos/gems/recipes/raw/wm/wm.config @@ -18,6 +18,38 @@ <default-policy> <child name="wm"/> </default-policy> </service> + <service name="ROM"> + <policy label_suffix="layouter -> window_list"> + <child name="report_rom" label="layouter -> window_list"/> </policy> + <policy label_suffix="layouter -> focus_request"> + <child name="report_rom" label="layouter -> focus_request"/> </policy> + <policy label_suffix="layouter -> hover"> + <child name="report_rom" label="layouter -> hover"/> </policy> + <policy label_suffix="layouter -> decorator_margins"> + <child name="report_rom" label="layouter -> decorator_margins"/> </policy> + <policy label_suffix="layouter -> rules"> + <child name="report_rom" label="layouter -> rules"/> </policy> + <policy label_suffix="decorator -> window_layout"> + <child name="report_rom" label="decorator -> window_layout"/> </policy> + <policy label_suffix="decorator -> pointer"> + <child name="report_rom" label="decorator -> pointer"/> </policy> + </service> + + <service name="Report"> + <policy label_suffix="layouter -> window_layout"> + <child name="report_rom" label="layouter -> window_layout"/> </policy> + <policy label_suffix="layouter -> resize_request"> + <child name="report_rom" label="layouter -> resize_request"/> </policy> + <policy label_suffix="layouter -> focus"> + <child name="report_rom" label="layouter -> focus"/> </policy> + <policy label_suffix="layouter -> rules"> + <child name="report_rom" label="layouter -> rules"/> </policy> + <policy label_suffix="decorator -> hover"> + <child name="report_rom" label="decorator -> hover"/> </policy> + <policy label_suffix="decorator -> decorator_margins"> + <child name="report_rom" label="decorator -> decorator_margins"/> </policy> + </service> + <start name="report_rom"> <resource name="RAM" quantum="4M"/> <provides> @@ -27,67 +59,30 @@ <config> <policy label="layouter -> window_list" report="wm -> window_list"/> <policy label="layouter -> focus_request" report="wm -> focus_request"/> - <policy label="layouter -> rules" report="layouter -> rules"/> - <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="layouter -> decorator_margins" report="decorator -> decorator_margins"/> + <policy label="layouter -> rules" report="layouter -> rules"/> + <policy label="decorator -> window_layout" report="layouter -> window_layout"/> + <policy label="decorator -> pointer" report="wm -> pointer"/> + <policy label="wm -> resize_request" report="layouter -> resize_request"/> <policy label="wm -> focus" report="layouter -> focus"/> </config> </start> <start name="wm" caps="250"> - <resource name="RAM" quantum="6M"/> + <resource name="RAM" quantum="8M"/> <provides> <service name="Nitpicker"/> </provides> <config> - <policy label_prefix="decorator" role="decorator"/> - <policy label_prefix="layouter" role="layouter"/> + <policy label_suffix="decorator -> " role="decorator"/> + <policy label_suffix="layouter -> " role="layouter"/> </config> <route> <service name="ROM" label="resize_request"> <child name="report_rom"/> </service> <service name="ROM" label="focus"> <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"/> - <route> - <service name="ROM" label="config"> <parent label="layouter.config"/> </service> - <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" caps="350"> - <binary name="init"/> - <resource name="RAM" quantum="12M"/> - <route> - <service name="ROM" label="config"> - <parent label="decorator_init.config"/> </service> - - <service name="ROM" label="window_layout"> <child name="report_rom"/> </service> - <service name="ROM" label="pointer"> <child name="report_rom"/> </service> - <service name="Report" label="decorator_margins"> <child name="report_rom"/> </service> - <service name="Report" label="hover"> <child name="report_rom"/> </service> - - <any-service> - <child name="wm"/> <parent/> <any-child/> - </any-service> + <any-service> <parent/> </any-service> </route> </start> </config> diff --git a/repos/gems/run/depot_deploy.run b/repos/gems/run/depot_deploy.run index 763b0053dc..3bb67af53a 100644 --- a/repos/gems/run/depot_deploy.run +++ b/repos/gems/run/depot_deploy.run @@ -16,7 +16,11 @@ import_from_depot [depot_user]/src/[base_src] \ create_tar_from_depot_binaries [run_dir]/genode/depot.tar \ [depot_user]/pkg/sculpt-installation \ - [depot_user]/pkg/themed_wm \ + [depot_user]/pkg/wm \ + [depot_user]/pkg/nano3d \ + [depot_user]/pkg/window_layouter \ + [depot_user]/pkg/motif_decorator \ + [depot_user]/pkg/themed_decorator \ [depot_user]/pkg/sticks_blue_backdrop proc current_pkg { pkg } { return $pkg/[_current_depot_archive_version pkg $pkg] } @@ -151,12 +155,34 @@ install_config { <service name="Timer"> <parent/> </service> </common_routes> - <start name="wm" pkg="} [depot_user]/pkg/[current_pkg themed_wm] {"> + <start name="wm" pkg="} [depot_user]/pkg/[current_pkg wm] {"> <route> <service name="Nitpicker"> <parent/> </service> </route> </start> + <start name="window_layouter" pkg="} [depot_user]/pkg/[current_pkg window_layouter] {"> + <route> + <service name="ROM" label="window_list"> <child name="wm"/> </service> + <service name="ROM" label="focus_request"> <child name="wm"/> </service> + <service name="ROM" label="hover"> <child name="wm"/> </service> + <service name="ROM" label="decorator_margins"> <child name="wm"/> </service> + <service name="ROM" label="rules"> <child name="wm"/> </service> + <service name="Report"> <child name="wm"/> </service> + <service name="Nitpicker"> <child name="wm"/> </service> + </route> + </start> + + <start name="themed_decorator" pkg="} [depot_user]/pkg/[current_pkg themed_decorator] {"> + <route> + <service name="ROM" label="window_layout"> <child name="wm"/> </service> + <service name="ROM" label="pointer"> <child name="wm"/> </service> + <service name="Report"> <child name="wm"/> </service> + <service name="Nitpicker"> <child name="wm"/> </service> + </route> + </start> + + <start name="backdrop" pkg="} [depot_user]/pkg/[current_pkg sticks_blue_backdrop] {"> <route> <service name="Nitpicker"> <parent label="backdrop"/> </service> @@ -171,15 +197,14 @@ install_config { </start> --> -<!-- <start name="nano3d" pkg="} [depot_user]/pkg/[current_pkg nano3d] {"> <route> <service name="Nitpicker"> <child name="wm"/> </service> </route> <config shape="cube"/> </start> - --> +<!-- <start name="fonts_fs" pkg="} [depot_user]/pkg/[current_pkg fonts_fs] {"> <route> <service name="ROM" label="config"> <parent label="fonts.config"/> </service> @@ -193,6 +218,7 @@ install_config { <service name="File_system"> <parent/> </service> </route> </start> + --> <!-- vbox, nic_router, acpica --> diff --git a/repos/gems/run/sculpt/launcher/motif_decorator b/repos/gems/run/sculpt/launcher/motif_decorator new file mode 100644 index 0000000000..ca5dc85d44 --- /dev/null +++ b/repos/gems/run/sculpt/launcher/motif_decorator @@ -0,0 +1,8 @@ +<launcher pkg="motif_decorator"> + <route> + <service name="ROM" label="window_layout"> <child name="wm"/> </service> + <service name="ROM" label="pointer"> <child name="wm"/> </service> + <service name="Report"> <child name="wm"/> </service> + <service name="Nitpicker"> <child name="wm"/> </service> + </route> +</launcher> diff --git a/repos/gems/run/sculpt/launcher/themed_decorator b/repos/gems/run/sculpt/launcher/themed_decorator new file mode 100644 index 0000000000..a9fe9c0936 --- /dev/null +++ b/repos/gems/run/sculpt/launcher/themed_decorator @@ -0,0 +1,8 @@ +<launcher pkg="themed_decorator"> + <route> + <service name="ROM" label="window_layout"> <child name="wm"/> </service> + <service name="ROM" label="pointer"> <child name="wm"/> </service> + <service name="Report"> <child name="wm"/> </service> + <service name="Nitpicker"> <child name="wm"/> </service> + </route> +</launcher> diff --git a/repos/gems/run/sculpt/launcher/window_layouter b/repos/gems/run/sculpt/launcher/window_layouter new file mode 100644 index 0000000000..ebfda90815 --- /dev/null +++ b/repos/gems/run/sculpt/launcher/window_layouter @@ -0,0 +1,11 @@ +<launcher pkg="window_layouter"> + <route> + <service name="ROM" label="window_list"> <child name="wm"/> </service> + <service name="ROM" label="focus_request"> <child name="wm"/> </service> + <service name="ROM" label="hover"> <child name="wm"/> </service> + <service name="ROM" label="decorator_margins"> <child name="wm"/> </service> + <service name="ROM" label="rules"> <child name="wm"/> </service> + <service name="Report"> <child name="wm"/> </service> + <service name="Nitpicker"> <child name="wm"/> </service> + </route> +</launcher> diff --git a/repos/gems/run/sculpt/launcher/wm b/repos/gems/run/sculpt/launcher/wm index a48fdf651e..9973164ca5 100644 --- a/repos/gems/run/sculpt/launcher/wm +++ b/repos/gems/run/sculpt/launcher/wm @@ -1,4 +1,4 @@ -<launcher pkg="themed_wm"> +<launcher pkg="wm"> <route> <service name="Nitpicker" label="wm -> "> <parent label="focus"/> </service> <service name="Nitpicker"> <parent/> </service>