diff options
author | David Herrmann <dh.herrmann@googlemail.com> | 2012-12-09 13:18:56 +0100 |
---|---|---|
committer | David Herrmann <dh.herrmann@googlemail.com> | 2012-12-09 13:18:56 +0100 |
commit | b985e55d3a145aaa616fe3e2002b38365884e00f (patch) | |
tree | 56b127f942e90bfcfe128b18eb6d7dba656ab50f /docs | |
parent | b4fe3f74606a7a31ed842ac88cfdb5dff283c6c1 (diff) |
Add manpage infrastructure and kmscon.1 manpage
Add a very basic man-page infrastructure so we can easily add new
docbook-style manpages.
Also add kmscon.1 man-page with a basic overview.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Diffstat (limited to 'docs')
-rw-r--r-- | docs/man/kmscon.xml | 627 |
1 files changed, 627 insertions, 0 deletions
diff --git a/docs/man/kmscon.xml b/docs/man/kmscon.xml new file mode 100644 index 0000000..e49cd2c --- /dev/null +++ b/docs/man/kmscon.xml @@ -0,0 +1,627 @@ +<?xml version='1.0'?> <!--*-nxml-*--> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> + +<!-- + Written 2012 by David Herrmann <dh.herrmann@googlemail.com> + Dedicated to the Public Domain +--> + +<refentry id="kmscon"> + <refentryinfo> + <title>kmscon</title> + <productname>kmscon</productname> + <date>December 2012</date> + <authorgroup> + <author> + <contrib>Developer</contrib> + <firstname>David</firstname> + <surname>Herrmann</surname> + <email>dh.herrmann@googlemail.com</email> + </author> + </authorgroup> + </refentryinfo> + + <refmeta> + <refentrytitle>kmscon</refentrytitle> + <manvolnum>1</manvolnum> + </refmeta> + + <refnamediv> + <refname>kmscon</refname> + <refpurpose>KMS/DRM based System Console</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>kmscon <arg choice="opt" rep="repeat">OPTIONS</arg></command> + </cmdsynopsis> + <cmdsynopsis> + <command>kmscon -l <arg choice="opt" rep="repeat">OPTIONS</arg> -- /bin/login <arg choice="opt" rep="repeat">/bin/login-OPTIONS</arg></command> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + <para>kmscon is a KMS/DRM-based system console with an integrated terminal + emulator for linux operating systems. It was designed as a replacement + for the linux kernel console and virtual terminals.</para> + + <para>When run in default mode, kmscon allocates a virtual terminal and + provides a terminal emulator on it. It can thus be used as replacement + for the linux console and + <citerefentry><refentrytitle>agetty</refentrytitle><manvolnum>1</manvolnum></citerefentry> + on virtual terminals. + Compared to the linux console, kmscon provides a rich set of enhanced + features including full internationalized keyboard support, full UTF-8 + input/font support, hardware-accelerated rendering, multi-seat + support and more.</para> + + <para>When run in listener mode, kmscon watches the system for new seats and + automatically provides a system console on it.</para> + + <para>Default configuration directory is <filename>/etc/kmscon/</filename> + and the main configuration file is called + <filename>/etc/kmscon/kmscon.conf</filename>. You can provide an + additional configuration file for each seat via + <filename>/etc/kmscon/{seatname}.kmscon.conf</filename>. + Any command-line option that can be passed to kmscon can also be put + into those configuration files. Command-line options overwrite + configuration file options. And per-seat configuration files overwrite + the global configuration file.</para> + </refsect1> + + <refsect1> + <title>Options</title> + <para>Boolean options take no arguments. If the default value is true, then + you can disable the option by prefixing it with + <emphasis>no-</emphasis>.</para> + + <para>General Options:</para> + + <variablelist> + <varlistentry> + <term><option>-h</option></term> + <term><option>--help</option></term> + <listitem> + <para>Prints a short help text and exits. (default: off)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-v</option></term> + <term><option>--verbose</option></term> + <listitem> + <para>Be more verbose. (default: off)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--debug</option></term> + <listitem> + <para>Print debug messages. Works only if kmscon was compiled with + debug mode enabled. (default: off)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--silent</option></term> + <listitem> + <para>Suppress notices and warnings. (default: off)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--configdir {/path/to/config/dir/}</option></term> + <listitem> + <para>Specify path to config directory. (default: /etc/kmscon/)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--listen</option></term> + <listitem> + <para>Run kmscon in listen-mode. See section below for more + information. (default: off)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Seat Options:</para> + + <variablelist> + <varlistentry> + <term><option>--vt {/path/to/vt}</option></term> + <listitem> + <para>Use this VT. If not specified, kmscon tries to find a VT by + itself. On seats without VTs, kmscon simply activates itself + automatically without using any VT. Please note that you cannot + use this option if kmscon runs on multiple seats + (see <option>--seats</option>). To avoid this, specify this + option in a seat configuration + <filename>/etc/kmscon/{seat}.kmscon.conf</filename>.</para> + <para>You must not run multiple applications on a single VT, + otherwise, you might get an unresponsive system. Also note, by + default, kmscon tries to use it's controlling terminal as VT and + if that fails, it tries to allocate a new unused VT.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--switchvt</option></term> + <listitem> + <para>If kmscon is started on a VT that is currently not active, this + option makes kmscon activate this VT during startup. The same + way, during shutdown kmscon will reactivate the VT that was + previously active. (default: on)</para> + + <para>Note that this option is required on seats without virtual + terminals, as there is no way to notify kmscon to activate + later. + So disable this option only during debugging or on seats with + virtual terminals.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--seats {list,of,seats}</option></term> + <listitem> + <para>List of seats kmscon will run on. Use 'all' to make kmscon run + on all seats. Use 'all,' to make kmscon run on a seat called + 'all' (empty entries are ignored). (default: "seat0")</para> + + <para>If kmscon runs on multiple seats, all seats are independent of + each other. You can either run a different kmscon process on + ecah seat or make a single kmscon process run on multiple seats. + In the latter case, global state can be shared to reduce memory + consumption (like glyph-caches).</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Session Options:</para> + + <variablelist> + <varlistentry> + <term><option>--session-max {num}</option></term> + <listitem> + <para>Change the maximum number of sessions that are allowed on each + seat. Use '0' for no limit. (default: 50)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--session-control</option></term> + <listitem> + <para>Allow keyboard-shortcuts to control the session manager. This + allows the use to create new sessions, kill sessions and switch + sessions via keyboard input. (default: off)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--terminal-session</option></term> + <listitem> + <para>Start a terminal session after setup is done. + (default: on)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--cdev-session</option></term> + <listitem> + <para>Start cdev-VT-emulation session after setup is done. This is + limited to + <option>--listen</option> mode. (default: off)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Terminal Options:</para> + + <variablelist> + <varlistentry> + <term><option>-l</option></term> + <term><option>--login</option></term> + <listitem> + <para>Specify the application that is started on new terminal + sessions. This takes no argument but instead everything left + after all options have been parsed is used as argument to this + option. Note that nothing after two dashes <option>--</option> + is parsed as regular option by kmscon. + (default: /bin/login)</para> + + <para>This example starts '/bin/bash -i' on each new terminal session: + ./kmscon --login --debug --no-switchvt -- /bin/bash -i</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-t {term}</option></term> + <term><option>--term {term}</option></term> + <listitem> + <para>This changes the <varname>$TERM</varname> environment variable + that is set on new terminal sessions. + (default: xterm-256color)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--palette {name}</option></term> + <listitem> + <para>Change the default color-palette. This shouldn't be used + anymore. Dynamic color palettes should be implemented + instead.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--sb-size {size}</option></term> + <listitem> + <para>Maximum scrollback-buffer line count. (default: 1000)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Input Options:</para> + + <variablelist> + <varlistentry> + <term><option>--xkb-model {model}</option></term> + <listitem> + <para>Keyboard model. This should normally not be changed. + (default: {xkb default})</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--xkb-layout {layout}</option></term> + <listitem> + <para>Keyboard layout. (default: {xkb default})</para> + <para>German keyboard example: --xkb-layout=de</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--xkb-variant {variant}</option></term> + <listitem> + <para>Keyboard variant. (default: {xkb default})</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--xkb-options {options}</option></term> + <listitem> + <para>Keyboard options. (default: {xkb default})</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--xkb-repeat-delay {delay}</option></term> + <listitem> + <para>Delay after key was pressed until key-repeat starts (in + milliseconds). (default: 250)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--xkb-repeat-rate {rate}</option></term> + <listitem> + <para>Time between two key-repeats (in milliseconds). + (default: 50)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Grabs / Keyboard-Shortcuts:</para> + <para>All keyboard shortcuts (here: grabs) in kmscon can be modified with + these options. The argument to such an option is a list of + comma-separated + keyboard-shortcuts that should trigger the specified action. To + disable a shortcut, pass an empty argument (empty list). A keyboard + shortcut exists of a list of modifiers followed by a single key. All + modifiers must be down when the key is pressed for the shortcut to be + detected. A modifier is sorrounded by '<' and '>' (like + '<shift>'). A key is the name of a keysym (like 'a' or + 'Return'). Keysyms are case-sensitive and kmscon will suggest a keysym + name if you entered a wrong case. However, kmscon can not always guess + the right case as lower-case-only keysyms are ambiguous.</para> + + <para>If a key generates multiple keysyms in your keyboard layout, you can + match these keys by concatenating the keysyms with a '+' (like + 'H+E+L+L+O'). This does not mean that all the listed keys must be + pressed! It's rather a way to match multi-keysym keys.</para> + + <para>Valid modifiers are: Shift, Control/Ctrl, Alt, Logo (Windows/Apple + key)</para> + + <variablelist> + <varlistentry> + <term><option>--grab-scroll-up {grab}</option></term> + <listitem> + <para>Scroll up in scrollback buffer by one line. + (default: <Shift>Up)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-scroll-down {grab}</option></term> + <listitem> + <para>Scroll down in scrollback buffer by one line. + (default: <Shift>Down)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-page-up {grab}</option></term> + <listitem> + <para>Scroll up in scrollback buffer by one page. + (default: <Shift>Prior/PageUp)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-page-down {grab}</option></term> + <listitem> + <para>Scroll down in scrollback buffer by one page. + (default: <Shift>Next/PageDown)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-session-next {grab}</option></term> + <listitem> + <para>Switch to next session. + (default: <Ctrl><Logo>Right)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-session-prev {grab}</option></term> + <listitem> + <para>Switch to previous session. + (default: <Ctrl><Logo>Left)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-session-dummy {grab}</option></term> + <listitem> + <para>Switch to dummy session (black screen). + (default: <Ctrl><Logo>Escape)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-session-close {grab}</option></term> + <listitem> + <para>Close current session (press twice to kill it). + (default: <Ctrl><Logo>BackSpace)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--grab-terminal-new {grab}</option></term> + <listitem> + <para>Create new terminal session next to current session. + (default: <Ctrl><Logo>Return)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Video Options:</para> + + <variablelist> + <varlistentry> + <term><option>--drm</option></term> + <listitem> + <para>Use DRM devices as display devices, too. fbdev devices are + always used, but DRM devices are only used if this option is on. + (default: on)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--hwaccel</option></term> + <listitem> + <para>Use 3D hardware acceleration. Note that this should be used in + conjunction with <option>--drm</option>. On newer hardware, this + can speed up rendering by multiple orders of magnitude. However, + on older hardware this might even slow down rendering speed. + (default: off)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--gpus {all,aux,primary}</option></term> + <listitem> + <para>GPU selection algorithm. If 'all' then all found GPUs are used. + If 'aux' then primary and auxiliary GPUs are used. If 'primary' + then only primary GPUs are used. Primary GPUs are the default + GPU on a seat. There is always only one primary GPU on a seat. + Auxiliary GPUs are hotpluggable GPUs that provide additional + independent displays. (default: all)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--render-engine {engine}</option></term> + <listitem> + <para>Select console render engine. Available engines are 'bblit', + 'bbulk' and 'gltex'. (default: detect by GPU type)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--render-timing</option></term> + <listitem> + <para>Display timing information of the render engines. This should + only be used to debug render engines. (default: off)</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Font Options:</para> + + <variablelist> + <varlistentry> + <term><option>--font-engine {engine}</option></term> + <listitem> + <para>Select font-engine. Available engines are 'pango', 'freetype2', + 'unifont' and '8x16'. (default: pango)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--font-size {points}</option></term> + <listitem> + <para>Font size in points. (default: 15)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--font-name {name}</option></term> + <listitem> + <para>Font name. (default: monospace)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>--font-dpi {dpi}</option></term> + <listitem> + <para>DPI used for font-rendering. Per monitor DPI values overwrite + this global default. (default: 96)</para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Default Mode</title> + <para>In default mode, kmscon acts as a replacement for + <citerefentry><refentrytitle>agetty</refentrytitle><manvolnum>1</manvolnum></citerefentry>. + kmscon opens a virtual terminal and + provides a system console on it. It replaces the linux-console on this + VT. You can select the virtual terminal + via the <option>--vt</option> option. kmscon will seamlessly integrate + into existing setups so you can use X, Wayland or any other Graphics + Systems simultaneously. You can even use the linux-console on all the + other virtual terminals.</para> + + <para>By default, kmscon runs on + <emphasis>seat0</emphasis> but you can change the seat via the + <option>--seats</option> option. For seats without virtual terminals, + kmscon will automatically activate itself and run exclusively on that + seat. If the virtual terminal or the seat that kmscon + runs on is gone, kmscon will automatically exit. See the + <emphasis>Listener-Mode</emphasis> to avoid this.</para> + + <para>kmscon spawns + <citerefentry><refentrytitle>login</refentrytitle><manvolnum>1</manvolnum></citerefentry> + on each new terminal. After a session exits, kmscon automatically + respawns the next session. You can change the program that is spawned + with the <option>--login</option> option. To stop kmscon, send SIGTERM + to the kmscon process.</para> + + <para>Keyboard input is done by <emphasis>libxkbcommon</emphasis>. This + provides the same features as the X11 Keyboard System but without any + dependencies on X11 libraries. See the + <emphasis>--xkb-{option}</emphasis> options for ways to change the + keyboard layout, model, repeat rates and more. For instance + <option>--xkb-layout=de</option> changes the keyboard layout to + German.</para> + + <para>kmscon uses KMS/DRM to access graphics devices (like the X-Server + does). Compared to the linux console this allows kmscon to provide + much better font-rendering and enhanced monitor control. However, for + backwards compatibility, kmscon can also use fbdev devices. + Hotpluggable graphics devices are marked as auxiliary devices, primary + GPUs on a seat are marked as primary. Other GPUs stay unmarked. By + default kmscon uses all graphics devices but you can make it use only + primary or auxiliary devices with the <option>--gpus</option> + option.</para> + </refsect1> + + <refsect1> + <title>Listener Mode</title> + <para>If started in listen-mode (<option>--listen</option>) kmscon will run + as system daemon and provide a system console on each seat that shows + up if that seat does not have virtual terminals. On seats with virtual + terminals you should run kmscon in default mode.</para> + + <para>Several options are exclusively limited to listen-mode, other than + these, kmscon behaves the same way as in default-mode.</para> + </refsect1> + + <refsect1> + <title>Sessions</title> + <para>If kmscon is active on a seat, the internal session-manager is woken + up. At most times, only the terminal-session is active, but kmscon can + also support any other session type. You can switch between sessions + with keyboard-shortcuts and you can create/destroy sessions during + runtime.</para> + + <para>Dummy sessions simply show a black screen and are used if no other + session is available. Otherwise, dummy sessions are hidden from the + user so they cannot switch to it.</para> + + <para>Terminal sessions provide a terminal emulator. They are the main + session type and provide all the terminal-emulation + functionality.</para> + + <para>CDev sessions provide a way to hook-up external applications as kmscon + sessions. They provide fake virtual terminals on seats that don't have + them so you can switch between multiple graphics applications/servers + without needing VTs. See <emphasis>Virtual Terminals</emphasis> + below.</para> + </refsect1> + + <refsect1> + <title>Virtual Terminals</title> + <para>Historically, linux provides virtual terminals (VT) only on seat + <emphasis>seat0</emphasis>. This is because only one VT can be active + at a time but in multi-seat environments you want multiple active VTs, + one per seat. It is easy to run kmscon on seat0 on a VT, however, if + you want to run kmscon on another seat, there are no VTs. This means, + you can only run one application that uses graphics devices on these + seats. In most environments this is the X-Server. But if you want to + run kmscon together with the X-Server (or any other graphics server), + you need a mechanism to notify these servers when they are active. + This is done via VT APIs on seat0. But note that if the kernel is + compiled without CONFIG_VT (which controls whether VTs are available), + then even seat0 does not have VTs.</para> + + <para>On seats without VTs we need a replacement API. However, a new + API would require modifying every application that uses the VT API to + also support the new replacement if you want to run it on those seats. + Therefore, kmscon provides a backwards-compatible API. It uses the + linux CUSE API to create VTs for all seats that have no VTs. You need + to pass <option>--cdev-session</option> to kmscon to enable this. + kmscon will then create one cdev (<emphasis>c</emphasis>haracter + <emphasis>dev</emphasis>ice) for each seat and calls it + <filename>/dev/ttyF{seatname}</filename> ('F' for 'fake'). This + character device provides the same API as a VT so your X-Server (or + even kmscon in default-mode) can use it instead of a real VT.</para> + + <para>In contrast to real VTs, each application that opens this fake VT will + get a different VT assigned. So you can use multiple X-Servers all + opening <filename>/dev/ttyF{seatname}</filename> and they will each + show up as different kmscon session. But note that not all TTY ioctls + are available on fake VTs. kmscon only emulates the API that is + currently used by most VT users. If you want to run an application + that needs more functionality, please open a bug-report.</para> + + <para>Switching VTs is done by signaling the active process to go asleep and + signaling the new VT to wake up. If kmscon emulates VTs, it needs to + be able to send these signals to the processes running on fake VTs. In + most situations this means kmscon must have root priviledges.</para> + </refsect1> + + <refsect1> + <title>See Also</title> + <para> + <citerefentry><refentrytitle>kmscon.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, + <citerefentry><refentrytitle>console</refentrytitle><manvolnum>4</manvolnum></citerefentry> + </para> + </refsect1> +</refentry> |