:''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.''

−

''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.''

+

== Features ==

−

−

== Requirements ==

−

Despite its name, KMS is not a hard requirement for kmscon. Kmscon supports the following video backends: fbdev (Linux fbdev video backend), drm2d (Linux DRM software-rendering backend), drm3d (Linux DRM hardware-rendering backend). Make sure one of them is available on your system.

−

== Features ==

Kmscon can function as a drop-in replacement for the in-kernel linux-console. Features include:

Kmscon can function as a drop-in replacement for the in-kernel linux-console. Features include:

Line 24:

Line 21:

* Multi-seat capability.

* Multi-seat capability.

−

== Installation ==

+

{{Note|In order to be able to log into a kmscon console as root, you have to disable the {{ic|pam_securetty}} module by removing or commenting out the corresponding line in {{ic|/etc/pam.d/login}}. }}

−

Install {{pkg|kmscon}} from one of the [[official repositories]]. Alternatively, you can install {{AUR|kmscon-git}} from the [[Arch User Repository]].

+

+

== Install ==

+

+

Despite its name, KMS is not a hard requirement for kmscon. Kmscon supports the following video backends: fbdev (Linux fbdev video backend), drm2d (Linux DRM software-rendering backend), drm3d (Linux DRM hardware-rendering backend). Make sure one of them is available on your system.

+

+

Install {{Pkg|kmscon}} from one of the [[official repositories]]. Alternatively, you can install {{AUR|kmscon-git}} from the [[AUR]].

+

+

To enable it for the TTY1 run:

+

{{bc|

+

# rm /etc/systemd/system/getty.target.wants/getty@tty1.service

+

# systemctl enable kmsconvt@tty1.service

+

}}

+

+

== Replacing Getty (agetty) ==

−

== Replacing linux-console ==

−

{{Note|1=Make sure you are using kmscon>=7, which contains an improved version of kmscon@.service. Alternatively, you can use the git version.}}

This will make {{pkg|systemd}} start kmscon instead of agetty on each VT. If for whatever reason kmscon failed to start, then agetty will be started instead (for kmscon>=7).

+

}}

−

For {{AUR|kmscon-git}} from the [[Arch User Repository]], you need to replace kmscon@.service with kmsconvt@.service in above commands.

+

This will make {{pkg|systemd}} start KMSCON instead of agetty on each VT. Or more precisely, this will make systemd-logind use kmsconvt@.service instead of getty@.service for new VTs. In fact, all other units/scripts/... that use getty@.service will not be affected by this change.

+

+

If KMSCON cannot start for whatever reason, this unit will cause getty@.service to be started instead. So you will always have a safe fallback. Furthermore, if no VTs are available, this unit will not start anything.

+

+

== CJK support ==

−

== CJK Support ==

−

{{Note|1=Make sure you are using kmscon>=7 as kmscon<=6 does not render multi-cell glyphs correctly. Alternatively, you can use the git version}}

Kmscon supports rendering CJK characters through the default font engine {{pkg|pango}}. However, {{pkg|fontconfig}} has to be globally configured to map the monospace font alias to proper CJK fonts. For Chinese users, the following template is provided and proved to result in satisfactory Chinese characters rendering:

Kmscon supports rendering CJK characters through the default font engine {{pkg|pango}}. However, {{pkg|fontconfig}} has to be globally configured to map the monospace font alias to proper CJK fonts. For Chinese users, the following template is provided and proved to result in satisfactory Chinese characters rendering:

{{hc|/etc/fonts/conf.d/99-kmscon.conf|<nowiki>

{{hc|/etc/fonts/conf.d/99-kmscon.conf|<nowiki>

Line 52:

Line 62:

</fontconfig>

</fontconfig>

</nowiki>}}

</nowiki>}}

−

You need to have {{pkg|ttf-dejavu}} and {{pkg|wqy-microhei}}, both available from the [[official repositories]], installed.

+

You need to have {{Pkg|ttf-dejavu}} and {{Pkg|wqy-microhei}}, both available from the official repositories, installed.

+

+

== Troubleshooting ==

+

+

* You may want to add {{ic|--hwaccel --drm}} to ExecStart if you have problems with switching between [[Xorg]] and kmscon.

Contents

Features

Kmscon can function as a drop-in replacement for the in-kernel linux-console. Features include:

Full vt220 to vt510 implementation.

Full internationalization support:

Kmscon supports printing full Unicode glyphs, including the CJK ones.

Kmscon provides internationalized keyboard handling through libxkbcommon, thus allowing it to use the full range of keyboard layouts supported in X keyboard.

Hardware accelerated rendering.

Multi-seat capability.

Note: In order to be able to log into a kmscon console as root, you have to disable the pam_securetty module by removing or commenting out the corresponding line in /etc/pam.d/login.

Install

Despite its name, KMS is not a hard requirement for kmscon. Kmscon supports the following video backends: fbdev (Linux fbdev video backend), drm2d (Linux DRM software-rendering backend), drm3d (Linux DRM hardware-rendering backend). Make sure one of them is available on your system.

Replacing Getty (agetty)

This will make systemd start KMSCON instead of agetty on each VT. Or more precisely, this will make systemd-logind use kmsconvt@.service instead of getty@.service for new VTs. In fact, all other units/scripts/... that use getty@.service will not be affected by this change.

If KMSCON cannot start for whatever reason, this unit will cause getty@.service to be started instead. So you will always have a safe fallback. Furthermore, if no VTs are available, this unit will not start anything.

CJK support

Kmscon supports rendering CJK characters through the default font engine pango. However, fontconfig has to be globally configured to map the monospace font alias to proper CJK fonts. For Chinese users, the following template is provided and proved to result in satisfactory Chinese characters rendering: