= KMSCON =

Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS).
It is an attempt to replace the in-kernel VT implementation with a userspace
console. See kmscon(1) man-page for usage information.

== Requirements ==

  Kmscon requires the following software:
    - libudev: providing input, video, etc. device hotplug support (>=v172)
    - libxkbcommon: providing internationalized keyboard handling

  Everything else is optional:

    For video output at least one of the following is required:
      - fbdev: For framebuffer video output the kernel headers must be installed
               and located in the default include path.
      - DRM: For unaccelerated drm output the "libdrm" library must be installed
             and accessible via pkg-config.
      - OpenGLES2: For accelerated video output via OpenGLESv2 the following must
                   be installed: libdrm, libgbm, egl, glesv2 (i.e., mesa)

    For font handling the following is required:
      - 8x16: The 8x16 font is a static built-in font which does not require
              external dependencies.
      - freetype2: The freetype2 font uses libfreetype2 and libfontconfig to
                   provide a very basic font backend.
      - pango: drawing text with pango
               Pango requires: glib, pango, fontconfig, freetype2 and more

    For multi-seat support you need the following packages:
      - systemd: Actually only the systemd-logind daemon and library is required.

== Install ==

  To compile the kmscon binary, run the standard autotools commands:
    $ ./autogen.sh (you need this only when building from git directly)
    $ ./configure --prefix=/usr
    $ make
    $ make install
  To compile the test applications, run:
    $ make check

  If you want only a very basic kmscon program without any major dependencies,
  use:
    $ ./configure --disable-debug --with-video=fbdev --disable-multi-seat --with-fonts=8x16 --disable-pciaccess --with-sessions=dummy,terminal
  However, you will loose a lot of functionality by dropping all dependencies.

  The following configure options are available. If build-time dependencies
  cannot be satisfied, an option is automatically turned off, except if you
  explicitly enable it via command line:
    --enable-multi-seat: This requires the systemd-logind library to provide
                         multi-seat support for kmscon. [default: on]
    --enable-hotplug: This requires libudev for hotplugging support. This is
                      currently mandatory and cannot be disabled. [default: on]
    --enable-pciaccess: Enable GPU detection via pciaccess [default: on]
    --enable-debug: Enable debug mode/messages [default: on]
    --enable-optimizations: Enable code optimizations [default: on]
    --enable-eloop-dbus: Build dbus extension for eloop library [default: off]

  Backends for several subsystems in kmscon can be selected with the following
  options (all of them take a comma-separated list of backend names):
    --with-video: Video backens. Available backends are:
       - fbdev: Linux fbdev video backend
       - dumb: Linux DRM dumb-buffer backend
       - drm: Linux DRM backend
       Default is: fbdev,dumb,drm
    --with-fonts: Font renderers. Available backends are:
       - 8x16: Static built-in non-scalable 8x16 font (ASCII only)
       - unifont: Static built-in non-scalable font (Unicode Unifont)
                  Takes very long to compile
       - freetype2: Freetype2+fontconfig based scalable font renderer
       - pango: Pango based scalable font renderer
       Default is: 8x16,freetype2,pango
    --with-renderers: Console rendering backends. Available are:
       - bblit: Simply 2D blitting engine
       - bbulk: Same as bblit but with bulk-requests
       - gltex: OpenGLESv2 accelerated renderer
    --with-sessions: Built in sessions. Available sessions are:
       - dummy: Dummy fallback session
       - terminal: Terminal-emulator sessions

  The following options select which applications are built. If
  dependency-checks fail, they are disabled by default unless explicitly enabled
  on the command line:
    --enable-kmscon: Build kmscon application [default: on]
    --enable-wlterm: Build wlterm Wayland terminal [default: on]
    --enable-eloop: Build eloop event loop library [default: on]
    --enable-tsm: Build TSM terminal state-machine library [default: on]
    --enable-uterm: Build uterm library [default: on]

== Running ==

  To get usage information, run:
    $ ./kmscon --help
  You can then run kmscon with:
    $ ./kmscon [options]

  For debug output use "--debug". For verbose output use "--verbose".
  With "--xkb-layout=<lang>" you can switch the keyboard layout.
  See "man kmscon" / kmscon(1) for more information.

== License ==

  This software is licensed under the terms of an MIT-like license. Please see
  ./COPYING for further information.

== FAQ ==

  Please see http://github.com/dvdhrm/kmscon/wiki

== Contact ==

  This software is maintained by:
    David Herrmann <dh.herrmann@googlemail.com>
  If you have any questions, do not hesitate to contact one of the maintainers.
