summaryrefslogtreecommitdiff
path: root/Source/SaWMan/README
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SaWMan/README')
-rwxr-xr-xSource/SaWMan/README73
1 files changed, 73 insertions, 0 deletions
diff --git a/Source/SaWMan/README b/Source/SaWMan/README
new file mode 100755
index 0000000..24ff610
--- /dev/null
+++ b/Source/SaWMan/README
@@ -0,0 +1,73 @@
+SaWMan
+-------
+
+DirectFB proudly presents SaWMan, the Shared application and Window Manager,
+as a co-development of Royal Philips and Denis Oliver Kropp.
+
+SaWMan is a new window manager module for use with DirectFB. Its main difference
+to the default module is that it allows one process to be an application and window
+manager, implementing all kinds of diversity, while SaWMan is only the working horse.
+
+On its own, SaWMan will behave similar to the default window manager, but as soon as
+there's an application manager, SaWMan will do synchronous RPCs to that application in
+relevant functions of the window manager module. That means it switches to the process
+and continues after it has completed the requested call and returned a result. The data
+which those calls operate on is already in shared memory, e.g. a window configuration.
+
+The application manager can hook itself into several operations with this, e.g. it can
+forbid or modify requested window configurations right before they're actually applied
+by SaWMan.
+
+For non-desktop and especially non-pointer environments like TVs, it is important to
+provide a simple and convenient layout and focus management. The layout of all windows
+can be completely overridden by the application manager, e.g. to implement a screen
+tiling mode.
+
+The integration of application management allows easy definition and handling of
+application specific constraints. The manager has a list of applications identified
+by their name. Launching applications is usually initiated by the application manager
+itself, e.g. based on global keys grabbed by an input only window. However, the public
+SaWMan interfaces provide a way to send launch/shutdown requests from any application
+to the application manager.
+
+While the key grabbing only provides asynchronous notification about keys which are
+then handled in the manager's main loop, SaWMan provides a hook to let the manager
+basically filter every single input event in a synchronous way, similar to the window
+configuration. Critical operations like layout and focus switching are best done in
+this callback.
+
+[...]
+
+For more information you can check the more or less documented header files in the
+include/ directory, or have a look at 'testman' - a minimal example of a manager
+implementation in the samples/ directory. You'll also find a small test program
+called 'testrun' which demonstrates launching of applications from another application.
+
+
+Running testman
+----------------
+
+Once you have a session running after setting the option "wm = sawman" you'll notice
+that there's nothing new, except the old window manager hacks (builtin keys) are gone.
+
+However, if you start 'testman' from the samples/ directory, you'll see windows being
+tiled on the screen, unless these windows have the DWCAPS_NODECORATION flag, e.g. LiTE
+and XDirectFB use that.
+
+You can try running "df_andi --dfb:force-windowed" or even simply run df_window.
+
+Hitting F9 cycles the focus through managed windows.
+F10 would switch layout modes, but there's only one implemented in the test code.
+F11 switches between "smooth software" or "standard (hw/sw)" scaling (for windows only).
+
+The smooth scaling algorithms have also been developed in the scope of this project.
+
+
+Using testrun
+--------------
+
+The command "testrun <name>" will start/stop an application.
+
+Available in the test code are:
+ Penguins df_andi --dfb:mode=640x480,force-windowed
+ Windows df_windows