summaryrefslogtreecommitdiff
path: root/README
blob: a57a786a6fb470adfa393fdd53755733da04f26f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
= 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.

== Requirements ==

  Kmscon requires the following software:
    - libudev: providing input, video, etc. device hotplug support

  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)

    By default a very limited built-in keyboard handling is used. To get other
    keyboard layouts working, the following is required:
      - libxkbcommon: keyboard handling (optional but strongly recommended)
                      Without libxkbcommon, basic US-ASCII input is provided.
    libxkbcommon has no public release, yet, but is available on freedesktop.org.
    Use "--disable-xkbcommon" if you have problems due to compile-errors.

    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 [--enable-debug] (debug-mode is strongly recommended)
    $ make
    $ make install (TODO: this is currently not supported)
  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 --disable-drm --disable-xkbcommon --disable-systemd --disable-pango --disable-freetype2
  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
  explicitely enable it via command line:
    --enable-systemd: This requires the systemd-logind library to provide
                      multi-seat support for kmscon. [default: on]
    --enable-udev: This requires libudev for hotplugging support. This is
                   currently mandatory and cannot be disabled. [default: on]
    --enable-fbdev: This adds fbdev video output support. [default: on]
    --enable-drm: This adds DRM video output support. [default: on]
    --enable-gles2: This adds OpenGL hardware accelerated font rendering
                    [default: on]
    --enable-xkbcommon: Use xkbcommon for internationalized keyboard handling.
                        [default: on]
    --enable-f8x16: The 8x16 font is a static built-in fallback font
                    [default: on]
    --enable-freetype2: Uses freetype2 and fontconfig as font-backend.
                        [default: on]
    --enable-pango: Uses pango as font-backend. [default: on]
    --enable-bblit: Use simply 2D bit-blitting as renderering fallback
                    [default: on]
    --enable-debug: Enable debug mode [default: off]
    --enable-optimizations: Use GCC code optimizations [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". If you
  didn't compile DRM support then you can use "--fbdev" to make kmscon select
  available framebuffer devices.

  With "--xkb-layout=<lang>" you can switch the keyboard layout.

== License ==

  This software is licensed under the terms of the MIT 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.

== Code Base ==

  The kmscon code is split into several independent subsystems:
    - uterm:
      This code manages the KMS/DRI output and provides OpenGL framebuffers.
    - console:
      This draws the text on the screen and provides an API for any terminal
      emulator to visualize its contents.
    - eloop:
      Main loop implementation.
    - log:
      Log file handling.
    - unicode:
      Provides basic Unicode handling.
    - font:
      Font loading, caching and drawing operations.
    - input:
      All linux input events are captured here and converted to Unicode
      characters for input handling.
    - vt:
      The linux VT subsystem integration. This allows to run the application in
      a classic linux VT like X does.
    - vte:
      The terminal emulator library.
    - terminal:
      Connects the console, output, input and vte handling into a real terminal.
    - main:
      This connects all subsystems into a usable console application.