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>
This commit is contained in:
parent
b4fe3f7460
commit
b985e55d3a
4
.gitignore
vendored
4
.gitignore
vendored
@ -38,3 +38,7 @@ docs/reference/*.stamp
|
||||
docs/reference/version.xml
|
||||
docs/reference/*/
|
||||
wlterm
|
||||
docs/man/*.1
|
||||
docs/man/*.3
|
||||
docs/man/*.5
|
||||
docs/man/*.7
|
||||
|
46
Makefile.am
46
Makefile.am
@ -14,6 +14,8 @@ EXTRA_DIST = \
|
||||
CLEANFILES =
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA =
|
||||
MANPAGES =
|
||||
MANPAGES_ALIASES =
|
||||
|
||||
bin_PROGRAMS =
|
||||
check_PROGRAMS =
|
||||
@ -424,6 +426,7 @@ kmscon_SOURCES += \
|
||||
nodist_kmscon_SOURCES += src/static_shaders.c
|
||||
kmscon_CPPFLAGS += $(GLES2_CFLAGS)
|
||||
kmscon_LDADD += $(GLES2_LIBS)
|
||||
MANPAGES += docs/man/kmscon.1
|
||||
endif
|
||||
|
||||
#
|
||||
@ -519,3 +522,46 @@ test_key_CPPFLAGS = \
|
||||
$(test_cflags)
|
||||
test_key_LDADD = \
|
||||
$(test_libs)
|
||||
|
||||
#
|
||||
# Manpages
|
||||
#
|
||||
|
||||
MAN_XML_FILES = ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,$(MANPAGES)}}}}
|
||||
man_MANS =
|
||||
|
||||
if BUILD_HAVE_XSLTPROC
|
||||
if BUILD_HAVE_MANPAGES_STYLESHEET
|
||||
|
||||
CLEANFILES += $(MANPAGES) $(MANPAGES_ALIASES)
|
||||
EXTRA_DIST += $(MANPAGES) $(MANPAGES_ALIASES) $(XML_FILES)
|
||||
man_MANS += $(MANPAGES) $(MANPAGES_ALIASES) man_fixup_aliases
|
||||
|
||||
XSLTPROC_FLAGS = \
|
||||
--stringparam man.authors.section.enabled 0 \
|
||||
--stringparam man.copyright.section.enabled 0 \
|
||||
--stringparam funcsynopsis.style ansi \
|
||||
--stringparam man.output.quietly 1 \
|
||||
--nonet
|
||||
|
||||
XSLTPROC_PROCESS_MAN = \
|
||||
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
|
||||
$(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(BUILD_MANPAGES_STYLESHEET) $<
|
||||
|
||||
man_fixup_aliases: $(MANPAGES) $(MANPAGES_ALIASES)
|
||||
$(AM_V_GEN)if test -n "$(MANPAGES_ALIASES)" ; then $(SED) -i -e 's/^\.so \([a-z_]\+\)\.\([0-9]\)$$/\.so man\2\/\1\.\2/' $(MANPAGES_ALIASES) ; fi
|
||||
|
||||
docs/man/%.1: docs/man/%.xml
|
||||
$(XSLTPROC_PROCESS_MAN)
|
||||
|
||||
docs/man/%.3: docs/man/%.xml
|
||||
$(XSLTPROC_PROCESS_MAN)
|
||||
|
||||
docs/man/%.5: docs/man/%.xml
|
||||
$(XSLTPROC_PROCESS_MAN)
|
||||
|
||||
docs/man/%.7: docs/man/%.xml
|
||||
$(XSLTPROC_PROCESS_MAN)
|
||||
|
||||
endif # BUILD_HAVE_MANPAGES_STYLESHEET
|
||||
endif # BUILD_HAVE_XSLTPROC
|
||||
|
21
configure.ac
21
configure.ac
@ -12,7 +12,7 @@ AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
AM_INIT_AUTOMAKE([foreign 1.11 subdir-objects dist-bzip2 no-dist-gzip tar-pax -Wall -Werror])
|
||||
AM_INIT_AUTOMAKE([foreign 1.11 subdir-objects dist-bzip2 no-dist-gzip tar-pax -Wall -Werror -Wno-portability])
|
||||
AM_SILENT_RULES([yes])
|
||||
|
||||
#
|
||||
@ -1066,6 +1066,25 @@ if test x$have_gbm = xyes ; then
|
||||
LDFLAGS="$save_LDFLAGS"
|
||||
fi
|
||||
|
||||
# check for xsltproc
|
||||
AC_PATH_PROG(XSLTPROC, xsltproc)
|
||||
AM_CONDITIONAL([BUILD_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
|
||||
|
||||
# check for offline man-pages stylesheet
|
||||
AC_MSG_CHECKING([for docbook manpages stylesheet])
|
||||
BUILD_MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
|
||||
AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
|
||||
AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$BUILD_MANPAGES_STYLESHEET" > /dev/null 2>&1`],
|
||||
[BUILD_HAVE_MANPAGES_STYLESHEET=yes]))
|
||||
if test "x$BUILD_HAVE_MANPAGES_STYLESHEET" = "xyes"; then
|
||||
AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], true)
|
||||
AC_SUBST(BUILD_MANPAGES_STYLESHEET)
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], false)
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
#
|
||||
# Makefile vars
|
||||
# After everything is configured, we correctly substitute the values for the
|
||||
|
627
docs/man/kmscon.xml
Normal file
627
docs/man/kmscon.xml
Normal file
@ -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>
|
Loading…
x
Reference in New Issue
Block a user