genode/os/src/server/nitpicker
Norman Feske 6525ec5951 Simplify Framebuffer::Session interface
This patch removes the 'Framebuffer::Session::release()' function from
the interface to make the mode-change protocol consistent with the way
the Rom_session interface handles ROM-module changes. That is, the
client acknowledges the release of its current dataspace by requesting a
new dataspace via the 'Framebuffer::Session::dataspace()' function.

Fixes #1057
2014-03-14 13:17:35 +01:00
..
README nitpicker: New signal handling, bg color config 2013-09-23 14:25:59 +02:00
background.h nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00
big_mouse.h nitpicker: Simplify internal file structure 2013-09-23 14:25:59 +02:00
canvas.h Generalization of nitpicker's graphics backend 2014-01-27 18:54:06 +01:00
chunky_menubar.h nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00
clip_guard.h Generalization of nitpicker's graphics backend 2014-01-27 18:54:06 +01:00
color.h Move nitpicker_gfx/color.h to util/color.h 2014-01-27 18:54:06 +01:00
default.tff nitpicker: Simplify internal file structure 2013-09-23 14:25:59 +02:00
draw_label.h Generalization of nitpicker's graphics backend 2014-01-27 18:54:06 +01:00
global_keys.cc nitpicker: Dynamic config of session policies 2013-09-23 14:25:59 +02:00
global_keys.h nitpicker: Simplify internal file structure 2013-09-23 14:25:59 +02:00
input.h nitpicker: Support for dynamic screen resizing 2014-02-25 14:58:06 +01:00
main.cc Simplify Framebuffer::Session interface 2014-03-14 13:17:35 +01:00
menubar.h nitpicker: Support for dynamic screen resizing 2014-02-25 14:58:06 +01:00
mode.h nitpicker: Simplify internal file structure 2013-09-23 14:25:59 +02:00
mouse_cursor.h nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00
session.h Generalization of nitpicker's graphics backend 2014-01-27 18:54:06 +01:00
target.mk Enable C++11 by default 2013-09-23 14:26:01 +02:00
user_state.cc nitpicker: Respond to session-local focus change 2014-02-28 10:11:51 +01:00
user_state.h nitpicker: Support for dynamic screen resizing 2014-02-25 14:58:06 +01:00
view.cc nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00
view.h nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00
view_stack.cc nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00
view_stack.h nitpicker: Parent-child relation between views 2014-02-28 10:11:50 +01:00

README

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Nitpicker is the low-level GUI server of Genode. For the general concepts,
please refer to the following document:

:A Nitpickers guide to a minimal-complexity secure GUI:

  [http://genode-labs.com/publications/nitpicker-secure-gui-2005.pdf]


Configuration
~~~~~~~~~~~~~

Nitpicker supports the following configuration options, supplied via
Genode's config mechanism.

Tinting of clients in X-Ray mode
--------------------------------

Nitpicker allows for assigning a color to single clients or a groups
of clients based on the client's label. The following configuration
tints all views of the launchpad subsystem in blue except for those
views that belong to the testnit child of launchpad.

! <config>
!   <policy label="launchpad"            color="#0000ff"/>
!   <policy label="launchpad -> testnit" color="#ff0000"/>
! </config>

Global key definitions
----------------------

Nitpicker has a few built-in function that can be activated via global
keyboard shortcuts, namely the X-ray mode and the kill mode. The keys
for toggling those functions can be defined as follows:

! <config>
!   <global-keys>
!     <key name="KEY_SCROLLLOCK" operation="xray" />
!     <key name="KEY_PRINT"      operation="kill" />
!   </global-keys>
! </config>

The '<global-keys>' node contains the policy for handling global keys. Each
'<key>' subnode expresses a rule for named key. The 'operation' attribute
refers nitpicker's built-in operations. In the example above, the X-ray
mode can be activated via the scroll-lock key and the kill mode can be
activated via the print key.

Alternatively to specifying an 'operation' attribute, a key node can contain
a 'label' attribute. If specified, all events regarding the key will be
reported to the client with the specified label. This enables clients to
handle global shortcuts. The client with the matching label will receive
all events until the number of concurrently pressed keys reaches zero.
This way, it is possible to handle chords of multiple keys starting with
the key specified in the '<key>' node. For the routing of global keys to
clients, the order of '<key>' nodes is important. If multiple nodes exists for
different labels, the first match will take effect. For example:

! <global-keys>
!   <key name="KEY_F11" label="launchpad -> testnit" />
!   <key name="KEY_F11" label="launchpad" />
! </global-keys>

The "launchpad" client will receive all key sequences starting with F11 unless
the "launchpad -> testnit" program is running. As soon as testnit gets started
by launchpad, testnit will receive the events. If the order was reversed,
launchpad would always receive the events.

Background color
----------------

The background color can be defined via the '<background>' config node:

! <background color="#112233" />