genode/repos/gems/run/depot_deploy.run
Norman Feske c6fd0055b1 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
2018-11-27 11:36:35 +01:00

267 lines
8.8 KiB
Plaintext

create_boot_directory
proc depot_user {} { return nfeske }
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_interactive_pkg] \
[depot_user]/src/report_rom \
[depot_user]/src/fs_rom \
[depot_user]/src/ram_fs \
[depot_user]/src/vfs \
[depot_user]/src/nitpicker \
[depot_user]/src/init \
[depot_user]/src/vfs_ttf \
[depot_user]/src/libc \
[depot_user]/raw/ttf-bitstream-vera-minimal
create_tar_from_depot_binaries [run_dir]/genode/depot.tar \
[depot_user]/pkg/sculpt-installation \
[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] }
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
</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">
<resource name="RAM" quantum="4M"/>
<provides><service name="Nitpicker"/></provides>
<config focus="rom">
<background color="#123456"/>
<domain name="pointer" layer="1" content="client" label="no" origin="pointer" />
<domain name="default" layer="3" content="client" label="no" hover="always" />
<policy label_prefix="pointer" domain="pointer"/>
<default-policy domain="default"/>
</config>
</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="report_rom">
<binary name="report_rom"/>
<resource name="RAM" quantum="1M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="yes">
<policy label="depot_deploy -> blueprint" report="depot_query -> blueprint"/>
<policy label="depot_query -> query" report="depot_deploy -> query"/>
<policy label="dynamic -> config" report="depot_deploy -> init.config"/>
</config>
</start>
<start name="vfs">
<resource name="RAM" quantum="4M"/>
<provides> <service name="File_system"/> </provides>
<config>
<vfs> <tar name="depot.tar"/> </vfs>
<policy label="depot_query -> depot" root="/" />
<policy label="fs_rom -> " root="/" />
</config>
</start>
<start name="fs_rom">
<resource name="RAM" quantum="50M"/>
<provides> <service name="ROM"/> </provides>
<route>
<service name="File_system"> <child name="vfs"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="depot_query">
<resource name="RAM" quantum="1M"/>
<config query="rom">
<vfs> <dir name="depot"> <fs label="depot"/> </dir> </vfs>
</config>
<route>
<service name="ROM" label="query"> <child name="report_rom"/> </service>
<service name="File_system"> <child name="vfs"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="ram_fs">
<resource name="RAM" quantum="8M"/>
<provides> <service name="File_system"/> </provides>
<config>
<default-policy root="/" writeable="yes"/>
</config>
</start>
<start name="depot_deploy">
<resource name="RAM" quantum="1M"/>
<config arch="} [depot_spec] {">
<static>
<parent-provides>
<service name="ROM"/>
<service name="CPU"/>
<service name="PD"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Nitpicker"/>
<service name="File_system"/>
</parent-provides>
</static>
<common_routes>
<service name="ROM" label_last="ld.lib.so"> <parent/> </service>
<service name="ROM" label_last="init"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</common_routes>
<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>
</route>
</start>
<!--
<start name="slides" pkg="} [depot_user]/pkg/[current_pkg pdf_view] {">
<route>
<service name="Nitpicker"> <child name="wm"/> </service>
</route>
</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>
</route>
</start>
<start name="noux" pkg="} [depot_user]/pkg/[current_pkg noux-system] {">
<route>
<service name="Nitpicker"> <child name="wm"/> </service>
<service name="File_system" label="fonts"> <child name="fonts_fs"/> </service>
<service name="File_system"> <parent/> </service>
</route>
</start>
-->
<!-- vbox, nic_router, acpica -->
</config>
<route>
<service name="ROM" label="blueprint"> <child name="report_rom"/> </service>
<service name="Report" label="query"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="dynamic" caps="8000">
<resource name="RAM" quantum="160M"/>
<binary name="init"/>
<route>
<service name="ROM" label_last="ld.lib.so"> <parent/> </service>
<service name="ROM" label_last="init"> <parent/> </service>
<service name="ROM" label="config"> <child name="report_rom"/> </service>
<service name="ROM" label_last="fonts.config"> <parent/> </service>
<service name="ROM"> <child name="fs_rom"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Nitpicker" label_last="backdrop">
<child name="nitpicker" label="backdrop"/> </service>
<service name="File_system"> <child name="ram_fs"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>}
build { app/depot_query app/depot_deploy }
file copy -force [genode_dir]/repos/gems/run/sculpt/fonts.config [run_dir]/genode/
#
# Pin the nitpicker focus to the window manager by providing a static focus ROM
#
set fd [open [run_dir]/genode/focus w]
puts $fd "<focus label=\"dynamic -> wm -> wm -> \"/>"
close $fd
build_boot_image { depot_query depot_deploy }
run_genode_until forever