Commit graph

2768 commits

Author SHA1 Message Date
Ray Strode
52e889e7d1 adsfasdf 2023-12-10 11:29:24 -05:00
nerdopolis
6293134438 ply-terminal-emulator: Handle incomplete Unicode characters with more resiliency 2023-12-10 11:11:01 -05:00
Ray Strode
3a94e21671 utils: Rework UTF-8 handling
ply_utf8_character_get_size currently has this odd argument at
the end that is often just set to PLY_UTF8_MAX_CHARACTER_SIZE
and also the function returns magic values for cases where it
can't figure out the size because the byte isn't a leading
byte or is otherwise not valid UTF-8.

That means that API has a nuance to it that makes the code hard
to follow at a light read.

This commit attempts to improve the situation by dropping the
extra argument, and adds a way to get the type separate from the
size for clarity.

At the same time, this commit updates all the callers to use the
new API. There are two cases where the callers are trying to
remove the last character from a UTF-8 string, so this commit
adds a new function to consolidate that logic as well.
2023-12-10 11:11:01 -05:00
Ray Strode
fb60af45ea buffer: Add APIs for editing bytes in buffer
This commit adds a few functions for getting at and
using the size, bytes, and capacity of a buffer.

This will make it easier to modify the string on the side and
and update the size afterward.
2023-12-10 11:11:00 -05:00
Ray Strode
9c33ac5e92 Merge branch 'improve-console-viewer-api' into 'main'
ply-console-viewer: Improve API

See merge request plymouth/plymouth!260
2023-12-07 20:07:12 +00:00
Ray Strode
27a612878c ply-console-viewer: Improve API
At the moment injecting data into a console viewer involves calling
ply_console_viewer_parse_lines.

This name isn't optimal, since the data getting injected might not
be a full line at all.

This commit renames it to ply_console_viewer_write, and also adds
a ply_console_viewer_print that adds a printf like function for
convenience.
2023-12-07 14:59:11 -05:00
n3rdopolis
e8f7ab99e3 Merge branch 'terminalwidth' into 'main'
ply-terminal-emulator: Take a maximum_column_count argument that is used in ply_rich_text.

See merge request plymouth/plymouth!256
2023-12-06 22:52:30 +00:00
nerdopolis
5af79f4ee6 ply-utils: rename ply_utf8_string_iterator_init to ply_utf8_string_iterator_initialize 2023-12-06 22:47:44 +00:00
nerdopolis
12435d8b86 ply-rich-text: Rename functions from ending in _init to _initialize 2023-12-06 22:47:44 +00:00
nerdopolis
fc0b133317 ply-terminal-emulator: Fix terminal emulator accuracy issues, don't pad with the active formatting 2023-12-06 22:47:44 +00:00
nerdopolis
149a1ce3e7 ply-terminal-emulator: Require a fixed upfront column count
Some commands really do need to know how wide the terminal is to operate correctly. Without
it long lines don't wrap right and other badness can happen.

This commit addresses the problem by changing the terminal to take both a `number_of_rows`
and `number_of_columns` argument at construct time instead of just a `maximum_line_count`.

In order to properly implement that change, this commit also adds new api to `ply_rich_text_t`
to specify which parts of a run of rich text is read-only and which parts of the run can be
modified.

Changes in this commit were made with assistance from Ray Strode
2023-12-06 22:47:44 +00:00
nerdopolis
18c582f0dd ply-terminal-emulator: Don't spam the debug logs with the two most-common commands 2023-12-06 22:47:44 +00:00
nerdopolis
13616729e6 ply-terminal-emulator: cleanup dead code 2023-12-06 22:47:44 +00:00
Ray Strode
a58e582c7c Merge branch 'add-redraw-debug' into 'main'
drm: Add new plymouth.set-mode-on-redraws debug option

See merge request plymouth/plymouth!258
2023-12-05 21:28:00 +00:00
Ray Strode
282f66f675 drm: Add new plymouth.set-mode-on-redraws debug option
This option forces a modeset every frame
2023-12-05 16:27:37 -05:00
Ray Strode
677c69a653 Merge branch 'fixmodifierrepeat' into 'main'
ply-input-device: Handle better when a keyboard sends key-repeat events for held modifier keys

Closes #225

See merge request plymouth/plymouth!255
2023-12-04 23:39:47 +00:00
nerdopolis
4ee7056ff8 ply-input-device: Handle modifiers better
At the moment, holding down the shift key sends
key repeat events that lead to the output not
getting properly shifted.

This commit avoids updating modifier state when
the modifer key is held down.
2023-12-04 18:37:06 -05:00
Ray Strode
6b5bd35a0e Merge branch 'input-device-debug' into 'main'
ply-input-device: Handle SYN events

See merge request plymouth/plymouth!253
2023-12-04 23:11:52 +00:00
Ray Strode
c2decd9fcf ply-input-device: Add new plymouth.debug-input-devices kernel option
Right now we don't have a lot of debugging information when processing
keyboard events.  I mean we don't want passwords to show up in logs
after all.

Still, it would be useful to have a way to turn the valve on to the
firehose.

This commit adds a plymouth.debug-input-devices kernel option.
2023-12-04 23:11:05 +00:00
Ray Strode
2693bf9ec0 ply-input-device: Handle SYN events
If the kernel falls behind a stream of input events, we currently
drop them on the floor.

It seems unlikely that this could ever happen theorhetically since we only
process keyboard events (versus, say, a high frequency stream of pointer
events, or a complex stylus device with inter-related events coming in,
in batches). Nonetheless, there is a report that suggests key events
may be getting dropped.

This commit adds support for handling the backlogged event case, and
hopefully address the bug report.
2023-12-04 23:11:05 +00:00
Ray Strode
ceb5576650 Merge branch 'config-h-fix' into 'main'
Include config.h automatically

See merge request plymouth/plymouth!254
2023-12-04 19:06:19 +00:00
Ray Strode
54fb7e1d56 Include config.h automatically
There are a few files missing #include <config.h>.

That is bad since it means those files don't get debug tracing.

This commit eliminates the pitfall by making sure the file is
included implicitly
2023-12-04 14:04:01 -05:00
Ray Strode
1b43dd504f Merge branch 'make-random-numbers-random' into 'main'
ply-utils: Add function for getting random number

See merge request plymouth/plymouth!251
2023-12-04 13:02:00 +00:00
Ray Strode
c86563b0c0 two-step: Use new ply_get_random_number function 2023-12-04 07:49:31 -05:00
Ray Strode
54b390e35c space-flares: Use new ply_get_random_number function 2023-12-04 07:49:31 -05:00
Ray Strode
75d371edef script: Use new ply_get_random_number function 2023-12-04 07:49:31 -05:00
Ray Strode
0628f3b6e2 fade-throbber: Use new ply_get_random_number function 2023-12-04 05:48:06 -05:00
Ray Strode
67204063f9 ply-utils: Add function for getting random number
rand() and srand() are we use now and it's not working out too well
because we're seeding correctly in a number of places.

This commit adds one function to do it better.

Problem spotted by @emperor06
2023-12-04 05:48:06 -05:00
Ray Strode
2c4578a1d8 Merge branch 'fixplythrobbercrash' into 'main'
ply-throbber: Only set the loop when there is none. Be more flexable if...

See merge request plymouth/plymouth!252
2023-12-04 03:01:11 +00:00
nerdopolis
78cdadc260 ply-throbber: fully stop the throbber ply_throbber_start () is called after the throbber is stopped with an end animation 2023-12-04 02:59:53 +00:00
Ray Strode
f51aea2ad1 Merge branch 'betterxkblogging' into 'main'
ply-device-manager: Better logging of what vconsole variables are read

See merge request plymouth/plymouth!248
2023-12-04 00:37:33 +00:00
nerdopolis
309398a56b ply-device-manager: Better logging of what vconsole variables are read 2023-12-04 00:36:09 +00:00
Ray Strode
add6f415d5 Merge branch 'dynamickeymapicon' into 'main'
ply-keymap-icon: Create dynamic text for the keymap name if it is not in the pre-rendered file

See merge request plymouth/plymouth!250
2023-12-04 00:24:34 +00:00
nerdopolis
9dd2116255 ply-keymap-icon: Create dynamic text for the keymap name if it is not in the pre-rendered file 2023-12-03 18:46:37 -05:00
Ray Strode
44a2c8e452 Merge branch 'parsekmsg' into 'main'
Support for displaying logs from /dev/kmsg and the console on the screen, instead of relying on the text on the VT

See merge request plymouth/plymouth!224
2023-12-02 23:33:26 +00:00
n3rdopolis
d3d0c9d650 space-flares: Get the messages from the console and ply-kmsg-reader, and use ply-terminal-emulator and ply-console-viewer to the display messages 2023-12-02 18:19:33 -05:00
n3rdopolis
d80237fad5 fade-throbber: Get the messages from the console and ply-kmsg-reader, and use ply-terminal-emulator and ply-console-viewer to the display messages 2023-12-02 18:19:33 -05:00
n3rdopolis
32b2bffd9d two-step: Get the messages from the console and ply-kmsg-reader, and use ply-terminal-emulator and ply-console-viewer to the display messages 2023-12-02 18:19:33 -05:00
n3rdopolis
f995183bd8 libply-splash-graphics: Introduce new ply-console-viewer control 2023-12-02 18:19:33 -05:00
n3rdopolis
21cdb5541a main: start ply-kmsg-reader, and fix handling ESC key when there are no VTs 2023-12-02 18:19:33 -05:00
n3rdopolis
a3cd4f9c08 Introduce ply-kmsg-reader to read kernel log messages from /dev/kmsg 2023-12-02 18:19:33 -05:00
Ray Strode
20b019a489 ply-utils: Add function for getting current kmsg log levels
We need to know two things:

1. What log level threshold to follow when showing kernel messages to
   the console

2. What log level to use if a message comes in without a log level

This commit adds a new function `ply_get_kmsg_log_levels` that
returns those two values.
2023-12-02 18:19:33 -05:00
Ray Strode
8fd5f9f249 label-freetype: Add basic support for rich text
Now that the ply-label interface supports rich text, we need to
implement it in the plugins.

This commit changes the freetype plugin to process
rich text in a rudimentary way that picks up colors, but not other
style attributes.

Based on initial work from nerdopolis
2023-12-02 18:19:33 -05:00
Ray Strode
e190f3b952 label-freetype: Handle utf-8 characters better
The plugin currently assumes all characters are 7 byte ascii.

This commit just adds a mbrtowc call around the text to
handle UTF-8 text somewhat better.
2023-12-02 18:15:38 -05:00
n3rdopolis
cc5e07c6d0 label-freetype: Support monospaced fonts 2023-12-02 18:14:42 -05:00
nerdopolis
8af62d1284 label-freetype: Allow the label size to be set and calculated even when hidden 2023-12-02 18:14:42 -05:00
nerdopolis
42f6b8513e label-pango: Add support for set_rich_text
Now that the ply-label interface supports rich text, we need to
implement it in the plugins.

This commit implements it for the pango plugin.
2023-12-02 18:14:42 -05:00
nerdopolis
06cd316a34 label-pango: Replace characters not supported by fonts with a replacement character
Using a replacement character prevents hexboxes from appearing, which can mess up alignment of monospace fonts
2023-12-02 18:14:42 -05:00
Ray Strode
d4560c71e7 ply-label: Set font before sizing label
This commit makes sure the right font is loaded before sizing the
label, so the size comes out correctly.
2023-12-02 18:14:42 -05:00
n3rdopolis
328a61cf51 ply-label: Add ply_label_set_hex_color () based off of ply_pixel_buffer_fill_with_hex_color for configuration of label text colors 2023-12-02 18:14:42 -05:00