Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
5f21a45
Update Readme.md after moving back to github/kmscon/kmscon
Nov 27, 2025
71b3d88
Remove render-timing option from man pages and help
Nov 28, 2025
9a0b5f1
Fix typo in README.md
Nov 28, 2025
d8aced5
Remove release github workflow
Nov 28, 2025
7d46650
Bump to version 9.2.1
Dec 3, 2025
8a9cb88
Substitute shell variable from env when starting login
Dec 3, 2025
bbd427c
kmscon systemd services: specify TERM for agetty
Dec 3, 2025
4336f67
Remove bashism in kmscon-launch-gui.sh
aruhier Dec 5, 2025
9a7e140
Add a .clang-format to have consistent formating
Dec 3, 2025
c19a9ad
Format code with clang-format
Dec 3, 2025
12526c7
format tests with clang-format
Dec 3, 2025
dc29970
github-ci: Check sources format with clang-format
Dec 3, 2025
a01e072
Portable kmscon-launch-gui.sh
Vladimir-csp Dec 5, 2025
1568f36
fix tty0 reading, use var
Vladimir-csp Dec 5, 2025
c752cc8
inotifywait, shfmt, case
Vladimir-csp Dec 5, 2025
12423f4
single quotes
Vladimir-csp Dec 5, 2025
5cec231
Remove unused get_buffers function
Dec 3, 2025
7a27594
Remove unused segfault callback
Dec 3, 2025
78cf5b4
Remove unused uterm_display_fake_blend()
Dec 3, 2025
3396748
Move vblank timer to fbdev, as it's the only user.
Dec 4, 2025
2408d4e
Move display modes to shared drm.
Dec 4, 2025
9d7ce5a
shared_drm: use the DRM_MODE_TYPE_PREFERRED
Dec 5, 2025
6964db1
Merge all kmscon_pty_set_xxx() into kmscon_pty_set_conf()
Dec 9, 2025
0d6d85a
Convert backspace delete to a runtime option, and enable it.
Dec 9, 2025
d97a43c
drm2d: use libdrm functions for dumb buffers
Nov 27, 2025
e7f569c
drm3d: Use drmModeAddFB2()
Dec 5, 2025
7487e2c
Enable mouse support by default
Dec 12, 2025
4399b32
Add --grab-reboot option to trigger system reboot via keyboard shortcut
jtollet Dec 13, 2025
9f9a8ec
fix: apply clang-format-20 formatting
jtollet Dec 14, 2025
b99b3bc
Forward mouse wheel events to applications in mouse tracking mode
jtollet Dec 14, 2025
78e48a1
Don't print function/file for log_notice
Dec 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
BasedOnStyle: LLVM
IndentWidth: 8
UseTab: Always
BreakBeforeBraces: Linux
AllowShortIfStatementsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
IndentCaseLabels: false
ColumnLimit: 100
ContinuationIndentWidth: 8
IncludeCategories:
- Regex: '<.*>'
Priority: -1
SortPriority: -1
- Regex: '".*'
Priority: 0
SortPriority: 0

11 changes: 10 additions & 1 deletion .github/workflows/meson.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ on:
branches: [ main ]

jobs:
check-format:
name: Clang-format check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install clang-format
run: sudo apt-get update && sudo apt-get install -y clang-format-20
- name: Check format
run: clang-format-20 -n --Werror src/*c src/*.h tests/*.c tests/*.h
build:
name: Ubuntu tests
runs-on: ubuntu-latest
Expand All @@ -23,7 +32,7 @@ jobs:
- name: Compile and install libtsm
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
LIBTSM: "https://api.github.com/repos/Aetf/libtsm/releases/latest"
LIBTSM: "https://api.github.com/repos/kmscon/libtsm/releases/latest"
run: |
tar_url=$(curl -s --request GET --header "Authorization: Bearer $GH_TOKEN" --url $LIBTSM | jq -r .tarball_url)
curl --request GET -s -L -o libtsm.tar.gz --header "Authorization: Bearer $GH_TOKEN" --url $tar_url
Expand Down
57 changes: 0 additions & 57 deletions .github/workflows/release.yml

This file was deleted.

47 changes: 47 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,5 +1,52 @@
= KMSCON Release News =

## CHANGES WITH 9.2.1
* Bug fixes:
- Remove release github workflow @kdj0c in https://github.com/kmscon/kmscon/pull/155
- Fix kmscon version @kdj0c in https://github.com/kmscon/kmscon/pull/158

## CHANGES WITH 9.2.0
* New features!
- Add kmscon-launch-gui to start gui from kmscon @kdj0c in https://github.com/Aetf/kmscon/pull/118
- Add retry count and retry time to login program by @michael-oberpriller in https://github.com/Aetf/kmscon/pull/134
- Add rotation support by @kdj0c in https://github.com/Aetf/kmscon/pull/147
- Add mouse support by @kdj0c in https://github.com/Aetf/kmscon/pull/149
- Double width overflow support by @michael-oberpriller in https://github.com/Aetf/kmscon/pull/135

* Bug fixes
- Fix build of conf.c with xkbcommon by @kdj0c in https://github.com/Aetf/kmscon/pull/116
- Add basic CI for all pull request by @kdj0c in https://github.com/Aetf/kmscon/pull/117
- github-ci: update package list before installing by @kdj0c in https://github.com/Aetf/kmscon/pull/119
- Hide hardware cursor on vt switching by @michael-oberpriller in https://github.com/Aetf/kmscon/pull/123
- Fix github CI, after renaming develop to main by @kdj0c in https://github.com/Aetf/kmscon/pull/127
- Make sure the main thread gets SIGCHLD by @Vogtinator in https://github.com/Aetf/kmscon/pull/106
- Revert hup workaround by @kdj0c in https://github.com/Aetf/kmscon/pull/126
- Readme: add systemd-dev requirement on debian systems by @kdj0c in https://github.com/Aetf/kmscon/pull/128
- Remove custom SELinux module by @Vogtinator in https://github.com/Aetf/kmscon/pull/130
- Add a man-page for the kmscon.conf file. by @kdj0c in https://github.com/Aetf/kmscon/pull/131
- Disable session-control when running with real VTs by @michael-oberpriller in https://github.com/Aetf/kmscon/pull/137
- Pango: use font cache to check if the font overflows by @kdj0c in https://github.com/Aetf/kmscon/pull/141
- Pango: align stride to 4 bytes by @kdj0c in https://github.com/Aetf/kmscon/pull/142
- Update CI as libtsm has switched to meson by @kdj0c in https://github.com/Aetf/kmscon/pull/144
- Fix character overflow with JetBrainsMono Nerd Font Mono by @kdj0c in https://github.com/Aetf/kmscon/pull/146
- kmscon-launch-gui: don't use eval by @martinetd in https://github.com/Aetf/kmscon/pull/156
- Add a default kmscon.conf in /etc by @kdj0c in https://github.com/Aetf/kmscon/pull/154
- Build video_drm3d as a module by @kdj0c in https://github.com/Aetf/kmscon/pull/153
- Fix kmscon using 100% CPU when trying to read systemd seats configuration by @kdj0c in https://github.com/Aetf/kmscon/pull/157
- Set env variable KMS_START_SCRIPT and TERM_SESSION_TYPE by @kdj0c in https://github.com/Aetf/kmscon/pull/160
- print backends by @kdj0c in https://github.com/Aetf/kmscon/pull/165
- Remove the pixman renderer by @kdj0c in https://github.com/Aetf/kmscon/pull/163
- Remove bblit renderer, and make bbulk built-ins by @kdj0c in https://github.com/Aetf/kmscon/pull/166
- Update Readme.md after moving back to github/kmscon/kmscon by @kdj0c https://github.com/kmscon/kmscon/pull/152
- Remove render timing by @kdj0c https://github.com/kmscon/kmscon/pull/153
- Fix typo in README.md by @kdj0c https://github.com/kmscon/kmscon/pull/154

## New Contributors
- @martinetd made their first contribution in https://github.com/Aetf/kmscon/pull/156

**Full Changelog**: https://github.com/kmscon/kmscon/compare/v9.1.0...v9.2.0


CHANGES WITH 9.1.0:
* New features!
- Add selinux permissions (#109)
Expand Down
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# KMSCON

![Build Status](https://github.com/kmscon/kmscon/actions/workflows/meson.yml/badge.svg?branch=main)

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:
- [libtsm](https://github.com/Aetf/libtsm): terminal emulator state machine
- [libtsm](https://github.com/kmscon/libtsm): terminal emulator state machine
- [libudev](https://www.freedesktop.org/software/systemd/man/libudev.html): providing input, video, etc. device hotplug support (>=v172)
- [libxkbcommon](https://xkbcommon.org/): providing internationalized keyboard handling
- [libdrm](https://gitlab.freedesktop.org/mesa/drm): graphics access to DRM/KMS subsystem
Expand Down Expand Up @@ -35,7 +37,7 @@ sudo apt install systemd-dev

## Download

Released tarballs can be found at: https://github.com/Aetf/kmscon/releases
Released tarballs can be found at: https://github.com/kmscon/kmscon/releases

## Install

Expand Down Expand Up @@ -91,7 +93,7 @@ See `man kmscon` for more information.
### Config file

The default configuration file is `/etc/kmscon/kmscon.conf`. Any command line option can be put in the config file in
its long form without the leading `--` (double dash). See `man kmscon` for more information.
its long form without the leading `--` (double dash). See `man kmscon` for more information or look at [kmscon.conf](scripts/etc/kmscon.conf)

## License

Expand All @@ -100,5 +102,4 @@ This software is licensed under the terms of an MIT-like license. Please see

## History

This is a personal fork from https://www.freedesktop.org/wiki/Software/kmscon, which hasn't been updated since 2014.

This project was maintained in [Aetf's](https://github.com/Aetf/kmscon) fork for 11 years, before coming back here in 2025
28 changes: 19 additions & 9 deletions docs/man/kmscon.1.xml.in
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,14 @@
</listitem>
</varlistentry>

<varlistentry>
<term><option>--backspace-delete</option></term>
<listitem>
<para>Send delete character when backspace is pressed.
(default: on)</para>
</listitem>
</varlistentry>

<varlistentry>
<term><option>--sb-size {size}</option></term>
<listitem>
Expand Down Expand Up @@ -331,7 +339,7 @@
<varlistentry>
<term><option>--mouse</option></term>
<listitem>
<para>Enable mouse/touchpad/trackpoint in kmscon (default: off).
<para>Enable mouse/touchpad/trackpoint in kmscon (default: on).
It allows to select, and copy/paste text with a pointing device,
and also to scroll with the mouse wheel.
It's still experimental, and may not work with specific devices.
Expand Down Expand Up @@ -467,6 +475,16 @@
(default: &lt;Logo&gt;Minus)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--grab-reboot {grab}</option></term>
<listitem>
<para>Reboot the system when this keyboard shortcut is pressed.
This option is disabled by default (no default key binding).
Use with caution as the reboot is immediate without confirmation.
Example: --grab-reboot=&lt;Ctrl&gt;&lt;Alt&gt;Delete
(default: disabled)</para>
</listitem>
</varlistentry>
</variablelist>

<para>Video Options:</para>
Expand Down Expand Up @@ -516,14 +534,6 @@
</listitem>
</varlistentry>

<varlistentry>
<term><option>--render-timing</option></term>
<listitem>
<para>Display timing information of the render engines. This should
only be used to debug render engines. (default: off)</para>
</listitem>
</varlistentry>

<varlistentry>
<term><option>--use-original-mode</option></term>
<listitem>
Expand Down
27 changes: 19 additions & 8 deletions docs/man/kmscon.conf.1.xml.in
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,13 @@ font-name=Ubuntu Mono
</listitem>
</varlistentry>

<varlistentry>
<term><option>backspace-delete</option></term>
<listitem>
<para>Send delete character when backspace is pressed. (default: on)</para>
</listitem>
</varlistentry>

<varlistentry>
<term><option>palette</option></term>
<listitem>
Expand Down Expand Up @@ -266,7 +273,7 @@ font-name=Ubuntu Mono
<varlistentry>
<term><option>--mouse</option></term>
<listitem>
<para>Enable mouse/touchpad/trackpoint in kmscon (default: off).
<para>Enable mouse/touchpad/trackpoint in kmscon (default: on).
It allows to select, and copy/paste text with a pointing device,
and also to scroll with the mouse wheel.
It's still experimental, and may not work with specific devices.
Expand Down Expand Up @@ -366,6 +373,17 @@ font-name=Ubuntu Mono
</listitem>
</varlistentry>

<varlistentry>
<term><option>grab-reboot</option></term>
<listitem>
<para>Reboot the system when this keyboard shortcut is pressed.
This option is disabled by default.
Use with caution as the reboot is immediate.
Example: grab-reboot=&lt;Ctrl&gt;&lt;Alt&gt;Delete
(default: disabled)</para>
</listitem>
</varlistentry>

<para><emphasis>### Video Options ###</emphasis></para>
<varlistentry>
<term><option>drm</option></term>
Expand Down Expand Up @@ -395,13 +413,6 @@ font-name=Ubuntu Mono
</listitem>
</varlistentry>

<varlistentry>
<term><option>render-timing</option></term>
<listitem>
<para>Print renderer timing information. (default: off)</para>
</listitem>
</varlistentry>

<varlistentry>
<term><option>use-original-mode</option></term>
<listitem>
Expand Down
4 changes: 1 addition & 3 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# SPDX-License-Identifier: MIT

project('kmscon', 'c',
version: '9.1.0',
version: '9.2.1',
license: 'MIT',
# meson 0.58: f-string
# meson 0.62: dependency libdl
Expand Down Expand Up @@ -121,7 +121,6 @@ endforeach
config.set('BUILD_ENABLE_DEBUG', get_option('extra_debug'))
config.set_quoted('BUILD_MODULE_DIR', prefix / moduledir)
config.set_quoted('BUILD_CONFIG_DIR', prefix / sysconfdir)
config.set10('BUILD_BACKSPACE_SENDS_DELETE', get_option('backspace_sends_delete'))

# Make all files include "config.h" by default. This shouldn't cause any
# problems and we cannot forget to include it anymore.
Expand Down Expand Up @@ -161,7 +160,6 @@ summary({
'extra_debug': get_option('extra_debug'),
'tests': get_option('tests'),
'docs': enable_docs,
'backspace_sends_delete': get_option('backspace_sends_delete'),
}, section: 'Miscellaneous')

#
Expand Down
4 changes: 0 additions & 4 deletions meson.options
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,3 @@ option('session_dummy', type: 'feature', value: 'auto',
description: 'dummy session')
option('session_terminal', type: 'feature', value: 'auto',
description: 'terminal session')

# terminal options
option('backspace_sends_delete', type: 'boolean', value: false,
description: 'backspace sends ASCII delete (0177) instead of ASCII backspace (010)')
6 changes: 6 additions & 0 deletions scripts/etc/kmscon.conf
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@
## value of the $TERM variable
#term=kmscon

## Reset environment [on]
#reset-env

## Send delete when backspace is pressed [on]
#backspace-delete

## Scrollback buffer size, in lines
#sb-size=10000

Expand Down
Loading