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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -27,67 +59,30 @@
-
-
-
-
+
+
+
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
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 {
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -171,15 +197,14 @@ install_config {
-->
-
+
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 @@
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
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 @@
-
+