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
|
= 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:
- libdrm: accessing the kernel graphics layer
- mesa: providing an OpenGL implementation (must be compiled with EGL, gbm
and GL libraries)
- udev: providing input, video, etc. hotplug support
- xproto (build time dependency): definition of keysymbols (TODO: remove it)
- libxkbcommon: keyboard handling (optional but strongly recommended)
Without libxkbcommon, basic US-ASCII input is provided.
- glib: only for Unicode handling (TODO: remove it)
- One of:
- freetype2: drawing generic text
- pango: drawing text with pango (use --enable-pango)
Pango requires: glib, cairo, pangocairo, pango and freetype2
== Install ==
To compile the kmscon binary, run the standard autotools commands:
$ ./configure [--enable-debug] [--enable-pango]
$ make
$ make install (TODO: this is currently not supported)
To compile the test applications, run:
$ make check
== Running ==
To get usage information, run:
$ ./kmscon --help
You can then run kmscon with:
$ ./kmscon [options] --switchvt
The --switchvt option will make your machine switch the active VT directly to
kmscon after starting it.
== License ==
This software is licensed under the terms of the MIT license. Please see
./COPYING for further information.
== FAQ ==
=== Why didn't you use libvte or similar terminal emulators? ===
All existing terminal emulators I found highly depend on X. Also, their code
base often is a horrible mess. I haven't had the time to convert them to use
other drawing functions than Xlib, yet.
If you feel like doing this work, please notify me. I would be glad to adjust
my code to work with other terminal emulators.
== 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.
|