2011-12-22 15:19:25 +00:00
|
|
|
|
Nitpicker is the low-level GUI server of Genode. For the general concepts,
|
|
|
|
|
please refer to the following document:
|
|
|
|
|
|
|
|
|
|
:A Nitpicker’s 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.
|
|
|
|
|
|
2013-09-06 15:34:16 +00:00
|
|
|
|
Tinting of clients in X-Ray mode
|
|
|
|
|
--------------------------------
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
2013-09-06 15:34:16 +00:00
|
|
|
|
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.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
2013-09-06 15:34:16 +00:00
|
|
|
|
! <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>
|
2014-06-17 07:59:51 +00:00
|
|
|
|
! <global-key name="KEY_SCROLLLOCK" operation="xray" />
|
|
|
|
|
! <global-key name="KEY_PRINT" operation="kill" />
|
2013-09-06 15:34:16 +00:00
|
|
|
|
! </config>
|
|
|
|
|
|
2014-06-17 07:59:51 +00:00
|
|
|
|
Each '<global-key>' node expresses a rule for a 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
|
2013-09-06 15:34:16 +00:00
|
|
|
|
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:
|
|
|
|
|
|
2014-06-17 07:59:51 +00:00
|
|
|
|
! <global-key name="KEY_F11" label="launchpad -> testnit" />
|
|
|
|
|
! <global-key name="KEY_F11" label="launchpad" />
|
2013-09-06 15:34:16 +00:00
|
|
|
|
|
|
|
|
|
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.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
2013-09-07 21:48:40 +00:00
|
|
|
|
Background color
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
The background color can be defined via the '<background>' config node:
|
|
|
|
|
|
|
|
|
|
! <background color="#112233" />
|
|
|
|
|
|