Ray Strode [Fri, 5 May 2023 20:22:11 +0000 (16:22 -0400)]
wip! Add ply-terminal-buffer object
We're going to need to do at least basic parsing of terminal text
so we can show the console to the user in color when they hit
escape and VTs are disabled.
This commit adds the start of a class to do this basic parsing.
The way it works is the terminal text is inject into the object
and all escape sequences are filtered out. When a color control
sequence is found, the current color is noted, along with which
characters it applies to. A list of the text spans and their
color attributes is then iteratable using a an api.
Timo Teräs [Wed, 22 Mar 2023 11:49:47 +0000 (13:49 +0200)]
script: fix deletion of sprites after full refresh
The node pointer is reused in the if (data->full_refresh) block
causing the following sprite list walking to fail. Fix this by
moving the sprite list first node getting next to the while loop
where it belongs.
n3rdopolis [Mon, 2 Jan 2023 16:57:21 +0000 (11:57 -0500)]
ply-input-device: Ensure that the LED state is updated on the keyboard of which the lock key was pressed on
When a lock modifier is pressed, plymouth goes through some gymnastics
to ensure the LEDs on all attached keyboards are appropriately updated.
Unfortunately, an optimization in the code used to avoid redundant
updates of keyboards that already have the correct state is actually
preventing the initiating keyboard from getting its LEDs turned on.
This is because the initiating keyboard gets its state updated at
key press time before the LED handling code runs, thus making it
seem like that run is redundant.
This commit introduces a new state variable `leds_state_invalid`
on the input device to mark this situation and updates the optimization
check to also check the new variable.
Ray Strode [Wed, 30 Nov 2022 14:51:17 +0000 (09:51 -0500)]
device-manager: Actually fall back to reading from tty if no xkb layout specified
Commit 7fcfcdf2d63025151a160f7948ee7406f0f16843 tried to fall back to
reading from a tty if no xkb layout was specified, but neglected to
actually check if no xkb layout was specified and force fall back to
reading from a tty in that case.
This commit changes device manager to actually disable reading from
/dev/input if the user doesn't specify a layout to use in vconsole.conf.
Ray Strode [Wed, 30 Nov 2022 14:51:17 +0000 (09:51 -0500)]
device-manager: Fall back to reading from tty if no xkb layout specified
At the moment if a user doesn't specify a xkb layout in vconsole.conf we
just fall back to assuming a us qwerty layout.
This isn't really optimal, since it might not match the keyboard.
Furthermore, the tty does have a usable layout, so it makes more sense
to fall back to it.
This commit changes device manager to disable reading from /dev/input
if the user doesn't specify a layout to use in vconsole.conf.
Close https://gitlab.freedesktop.org/plymouth/plymouth/-/issues/199
Ray Strode [Tue, 29 Nov 2022 19:46:08 +0000 (14:46 -0500)]
ci: Fix check-format
In commit bb6580212d45f9ab0a459a9335aec2ff20818a6e we tried to stop
running check-format on debian. We did this by moving the check-format
details to its own map and then adding a "<<" merge key to only pull
it in on Fedora.
The Fedora map already has a "<<" merge key however for doing the actual
build.
It's not allowed for their to be two, and gitlab's ci just ignores
the second one.
Ray Strode [Tue, 29 Nov 2022 18:08:59 +0000 (13:08 -0500)]
input-device: Only allow one renderer to consume input at a time
Right now if there are two graphics cards, there ends up with two
renderers active at the same time. Both process keyboard inputs
and both end up sending those events to plymouthd, resulting in
duplicate input.
This commit changes the input handlers so the first one wins, and
the rest don't get input.
Ray Strode [Fri, 21 Oct 2022 15:33:41 +0000 (11:33 -0400)]
src: Hide console text when splash is requested
plymouthd may not be able to show the splash screen as soon as the
boot process wants it shown (if e.g. the driver isn't fully loaded
yet)
In that case, we sit tight and wait. Unfortunately, we aren't
logging boot messages while waiting.
This commit sets KD_GRAPHICS mode early to hide text from hitting
the console, but still tells systemd to print messages. This way
we get boot logging but don't display the text while we wait on
the splash.
Ray Strode [Fri, 25 Nov 2022 16:27:24 +0000 (11:27 -0500)]
device-manager: Only wait for device timeout for framebuffer devices
At the moment we ignore any udev events that come in before the
device timeout that are not drm devices.
That is because we don't want to use framebuffer devices as anything
but a last resort fallback option.
In the near future we're going to be handling input events from udev
as well. Those will obviously need to be handled right away, just like
drm devices.
This commit makes the check only defer framebuffer devices and not
anything that isn't a drm device.
Ray Strode [Fri, 25 Nov 2022 16:25:37 +0000 (11:25 -0500)]
ply-device-manager: Add != 0 to strcmp calls
strcmp is kind of a confusing function in that it returns
non-zero when the strings are not equal. That is
especially counterintuitive when this non-zero value is
treated as a TRUE boolean.
This commit just adds some != 0's to a couple of strcmp
calls for clarity.
Ray Strode [Sat, 26 Nov 2022 16:15:59 +0000 (11:15 -0500)]
buffer: Support length == 0 for ply_buffer_append_bytes
Right now callers of ply_buffer_append_bytes have to be
very careful to make sure the data they're appending is
non-zero in length. This is kind of inconvenient, since
it's not unusual for data to come in that's zero bytes
long.
For simplicity, this commit just makes
ply_buffer_append_bytes support that use case.
Ray Strode [Thu, 17 Nov 2022 15:01:34 +0000 (10:01 -0500)]
terminal: Add API for flushing input buffer
In the future we're going to start reading keyboard input from
/dev/input instead of the tty. When that happens, input will
still be sent by the kernel to the tty.
This input would eventually back up and overflow.
To address that problem before it exists, this commit adds a new
API, ply_terminal_flush_input, that will drain the input buffer
on demand.
We can later use that API to keep the tty from backing up.
Ray Strode [Wed, 16 Nov 2022 18:57:56 +0000 (13:57 -0500)]
trigger: Add the ability to trigger data with an associated instance
Right now triggers can only fire off handlers that have one piece
of data associated with them, but sometimes it's useful to have
an object associated with the data too.
This commit adds new api for adding "instance handlers" that have
an additional parameter and a new method `ply_trigger_set_instance`
that allows an object to be associated with the trigger and get
used for the additional parameter of the instance handlers.
n3rdopolis [Tue, 18 Oct 2022 17:06:28 +0000 (13:06 -0400)]
device-manager: Support kernels with CONFIG_VT=n
At the moment, plymouth requires VT support be enabled in the kernel
to show graphical splashes.
This is because:
1. it relies on the tty to show details
2. when VT support is disabled the kernel will use ttyS0 as the default
console which makes plymouth disable graphical splashes since it assumes
the machine is a server with a serial console.
This commit addresses the first problem by disabling the
escape-to-toggle-details feature and addresses the second problem by
introducing a new kernel parameter plymouth.graphical that is like
the "splash" option and "plymouth.ignore-serial-consoles" option
combined.