Before starting a pty on a terminal, we now perform a hard-reset to avoid
any left-overs from the previous pty.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
When enabling the printf() logic for the logging subsystem, several
warnings were produced about missing or wrong specifiers. This fixes all
those occurrences.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This makes the pty layer independent of kmscon global state. This allows
us to use it in other applications bundled with kmscon. There is still
some work to do to make it fully independent so we can integrate it into
TSM. But that's not really needed, yet.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of accessing global state, we now set the TERM value via a helper
function. This is needed to make the pty layer independent of kmscon.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We now create an eloop object internally to avoid requiring public eloop
headers. Functionality is still the same but now hidden in the library.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of accessing kmscon-state we now add a helper to select the
palette and make the terminal-subsystem use it on initialization.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This pushes the whole VTE layer into TSM and performs the huge rename
which turned out to be quite easy to accomplish.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Use the new timer_drain() helper to reset the timer after waking up.
Otherwise, we get spurious warnings that the CPU is too slow.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of accessing kmscon state from TSM, we now introduce options to
control the behavior of TSM-screens. Apart from logging, TSM is now
independent of any kmscon state/code.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We need to avoid logging to stderr directly in TSM so introduce the
tsm_log_t object similar to eloop.h.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
All TSM files use the "tsm_*" prefix and the object is now named "screen"
so rename the files to resemble this.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This is part of the TSM library creation. We also rename "console" to
"screen" as this layer actually manages the screen.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This adds a new option to force a global PPI for all fonts. This overrides
per monitor PPI values.
This is useful if monitors do not provide correct PPI values and we want
the same behavior as all other X11 apps (which is 96 PPI forced).
Internally we speak of "Pixels per Inch" as this is more correct. However,
to not confuse users we use the more common term "Dots per Inch".
This also changes the default PPI value from 72 to 96. 96 is the de-facto
default value on linux so we should use it, too.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This moves the timers to SHL and removes the old static_misc header and
source. They are no longer needed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Shl (Static helper library) is the new name of all static helpers in
kmscon that might be shared between different applications.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We need a copy of xkbcommon-keysyms.h as long as xkbcommon is not included
in all major distributions. We _need_ this build-time dependency,
otherwise, we cannot build the other keyboard backends.
However, requiring xkbcommon as build-time dependency is not a solution as
no major distribution includes it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Remove the last reference to uterm structures so we can put the vte layer
into a separate library without any dependency to rendering
infrastructure.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We finally want to get rid of any dependencies in the vte/console layer so
we can split it out into a separate library.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This adds command line options to make all currently available keyboard
shortcuts of the terminal layer configurable on the command-line and
config-file.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
If the CPU is too slow to render the console in a decent speed and we have
to skip frames, then we should print warnings if debug mode is on.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This option allows changing the console renderer during runtime. This is
only useful for debugging. The default choice should be best for all
situations.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
These messages should have never been committed, oops. Remove them as they
are really not needed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of redrawing on change, we now use a framerate-timer which
redraws the screen. This timer stays active for 1s after the last redraw
so we do not enable/disable the timer while the console is under heavy
work-load. This still needs to be benchmarked but it seems to work nicely.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Similar to the UI subsystem, we also need to be aware of our current state
inside of the terminal subsystem. We can now avoid rendering graphics when
not awake. This suppresses odd warnings that occured when keeping an
application active and printing in the terminal while the terminal was in
background.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This implements Shift+UP/DOWN and Shift+PageUp/PageDown as scrolling keys
for terminals. This will later be made configurable so other
keyboard-shortcuts can be used.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The new sb-size option specifies the size of the scrollback buffer. Use 0
to disable the scrollback-buffer.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This adds two options --font-size and --font-name that can be used to
configure which font is used.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The main configuration is now limited to kmscon and thus should not use
the conf_* prefix. Move all code to use the new name and introduce the new
main.h header mainly for kmscon.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We used to have a global video object for each terminal. However, this has
all been moved to the UI subsystem which can deal with multiple video
objects simultaneously. Hence, we can remove this as it is no longer used.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We need to check for errors, otherwise, the text-renderer may be invalid
and we will never be able to render on it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
If the uterm backend supports OpenGL, then we should use the "gltex"
renderer as the "bblit" renderer performs pretty badly on OpenGL displays.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This reworks the text renderer system to make it easier to write backends.
We also allow returning errors during rendering now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This fixes the console and terminal layer to use the new text renderer
instead of the old one.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We now schedule the terminal redraw from the UI to avoid having the
terminal using uterm-video directly.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Move display-removal from terinal subsystem to UI subsystem to avoid
needing video-callback in the terminal subsystem.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This new function allows external subsystems to remove displays from the
terminal objects. It is required to make the terminal subsystem
independent of the uterm-video subsystem to allow different displays from
different video-objects to be part of a terminal.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
When adding displays, we know print errors if we cannot allocate buffers
or other resources. This helps debugging video problems where the device
is ready but the terminal is not printed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
There is no explicit call to reopen the underlying pty so we simply
force-close it before (re)-opening it. This will allow the UI to reopen a
pty when the child died.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This helps us moving opengl dependencies into a single source file so we
can easily disable it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The drm video backend does automatically blit the framebuffer on wake-up,
however, the fbdev backend does not. Hence, we automatically redraw on
wake-up in the terminal backend now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>