Make xkbcommon mandatory
[platform/upstream/kmscon.git] / README
1 = KMSCON =
2
3 Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS).
4 It is an attempt to replace the in-kernel VT implementation with a userspace
5 console.
6
7 == Requirements ==
8
9   Kmscon requires the following software:
10     - libudev: providing input, video, etc. device hotplug support
11     - libxkbcommon: providing internationalized keyboard handling
12       libxkbcommon has no public release, yet, but is available on freedesktop.org.
13       Building libxkbcommon from Git without root:
14        - You can fetch it from Git using: git clone git://anongit.freedesktop.org/xorg/lib/libxkbcommon
15        - You can then ``./autogen.sh && make`` in its directory
16        - You configure kmscon using:
17            PKG_CONFIG_PATH="libxkbcommon/" ./configure --enable-debug
18          assuming you cloned it into a subfolder of kmscon called libxkbcommon.
19
20   Everything else is optional:
21
22     For video output at least one of the following is required:
23       - fbdev: For framebuffer video output the kernel headers must be installed
24                and located in the default include path.
25       - DRM: For unaccelerated drm output the "libdrm" library must be installed
26              and accessible via pkg-config.
27       - OpenGLES2: For accelerated video output via OpenGLESv2 the following must
28                    be installed: libdrm, libgbm, egl, glesv2 (i.e., mesa)
29
30     For font handling the following is required:
31       - 8x16: The 8x16 font is a static built-in font which does not require
32               external dependencies.
33       - freetype2: The freetype2 font uses libfreetype2 and libfontconfig to
34                    provide a very basic font backend.
35       - pango: drawing text with pango
36                Pango requires: glib, pango, fontconfig, freetype2 and more
37
38     For multi-seat support you need the following packages:
39       - systemd: Actually only the systemd-logind daemon and library is required.
40
41 == Install ==
42
43   To compile the kmscon binary, run the standard autotools commands:
44     $ ./autogen.sh (you need this only when building from git directly)
45     $ ./configure [--enable-debug] (debug-mode is strongly recommended)
46     $ make
47     $ make install (TODO: this is currently not supported)
48   To compile the test applications, run:
49     $ make check
50
51   If you want only a very basic kmscon program without any major dependencies,
52   use:
53     $ ./configure --disable-debug --disable-drm --disable-xkbcommon --disable-systemd --disable-pango --disable-freetype2
54   However, you will loose a lot of functionality by dropping all dependencies.
55
56   The following configure options are available. If build-time dependencies
57   cannot be satisfied, an option is automatically turned off, except if you
58   explicitely enable it via command line:
59     --enable-systemd: This requires the systemd-logind library to provide
60                       multi-seat support for kmscon. [default: on]
61     --enable-udev: This requires libudev for hotplugging support. This is
62                    currently mandatory and cannot be disabled. [default: on]
63     --enable-fbdev: This adds fbdev video output support. [default: on]
64     --enable-drm: This adds DRM video output support. [default: on]
65     --enable-gles2: This adds OpenGL hardware accelerated font rendering
66                     [default: on]
67     --enable-f8x16: The 8x16 font is a static built-in fallback font
68                     [default: on]
69     --enable-freetype2: Uses freetype2 and fontconfig as font-backend.
70                         [default: on]
71     --enable-pango: Uses pango as font-backend. [default: on]
72     --enable-bblit: Use simply 2D bit-blitting as renderering fallback
73                     [default: on]
74     --enable-debug: Enable debug mode [default: off]
75     --enable-optimizations: Use GCC code optimizations [default: on]
76
77 == Running ==
78
79   To get usage information, run:
80     $ ./kmscon --help
81   You can then run kmscon with:
82     $ ./kmscon [options]
83
84   For debug output use "--debug". For verbose output use "--verbose". If you
85   didn't compile DRM support then you can use "--fbdev" to make kmscon select
86   available framebuffer devices.
87
88   With "--xkb-layout=<lang>" you can switch the keyboard layout.
89
90 == License ==
91
92   This software is licensed under the terms of the MIT license. Please see
93   ./COPYING for further information.
94
95 == FAQ ==
96
97   Please see http://github.com/dvdhrm/kmscon/wiki
98
99 == Contact ==
100
101   This software is maintained by:
102     David Herrmann <dh.herrmann@googlemail.com>
103   If you have any questions, do not hesitate to contact one of the maintainers.
104
105 == Code Base ==
106
107   The kmscon code is split into several independent subsystems:
108     - uterm:
109       This code manages the KMS/DRI output and provides OpenGL framebuffers.
110     - console:
111       This draws the text on the screen and provides an API for any terminal
112       emulator to visualize its contents.
113     - eloop:
114       Main loop implementation.
115     - log:
116       Log file handling.
117     - unicode:
118       Provides basic Unicode handling.
119     - font:
120       Font loading, caching and drawing operations.
121     - input:
122       All linux input events are captured here and converted to Unicode
123       characters for input handling.
124     - vt:
125       The linux VT subsystem integration. This allows to run the application in
126       a classic linux VT like X does.
127     - vte:
128       The terminal emulator library.
129     - terminal:
130       Connects the console, output, input and vte handling into a real terminal.
131     - main:
132       This connects all subsystems into a usable console application.