Commit Graph

27 Commits

Author SHA1 Message Date
Manuel Stoeckl
4a44c306e7 Remove unused fields in swaylock_surface 2023-01-27 12:19:32 +01:00
Manuel Stoeckl
10ab8b2740 Estimate buffer size in advance for render_frame
The size of the surface used to draw the indicator depends on
the extents of the text being drawn on and under the indicator.

This commit refactors the `render_frame` function so that the surface
size is computed before drawing; before, `render_frame` drew onto a
buffer, estimated the size the buffer should have had, and recursively
called itself to try again with the estimated size, if necessary. This
was done because Cairo's methods to estimate font and text size
require that a cairo_t context object and an associated cairo_surface
already have been set up. Since the surface size depends on the text
size, the natural way to use Cairo would have a circular dependency.

In order to compute sizes _before_ the buffer is created, this commit
adds a 1x1 surface and a matching `test_cairo` context which is set to
the same font and drawing parameters as the buffer that will be
created. Font/text extent measurements should give the same results as
for the final buffer.
2023-01-27 12:19:32 +01:00
Alexander Orzechowski
5c1b16b957 renderer: work with current buffer locally
No need to store this globally accessible struct member.
2022-11-14 21:06:41 +01:00
Robin Ebert
bdeb891378 Use mlock for password buffer 2022-06-15 10:49:32 +02:00
Johan Malm
11030b7350 Delete whole utf8 character on backspace
...rather than just the last byte of the password buffer.

Demostrate the need for this by taking the following steps:
- Apply the patch below (before this commit).
- Set keyboard layout to one where utf8 characters longer than one byte
  can be obtained, for example åäö using Swedish layout
  (XKB_DEFAULT_LAYOUT=se).
- Type "åäö" then press backspace and observe that it takes two
  backspaces to delete each character fully, and therefore six
  backspaces to fully clear the password buffer.

diff --git a/password.c b/password.c
index e1a1d9a..b640cd3 100644
--- a/password.c
+++ b/password.c
@@ -29,6 +29,7 @@ void clear_password_buffer(struct swaylock_password *pw) {
 static bool backspace(struct swaylock_password *pw) {
 	if (pw->len != 0) {
 		pw->buffer[--pw->len] = 0;
+		fprintf(stderr, "%s\n", pw->buffer);
 		return true;
 	}
 	return false;
2022-03-22 22:11:27 +01:00
Johan Malm
06d22a8dea Remove redundant function render_frames() 2022-03-20 22:54:39 +01:00
Johan Malm
03b75eaf44 cairo.h: remove redundant prototype
cairo_surface_t *cairo_image_surface_scale();
2022-03-20 22:54:39 +01:00
Simon Ser
2813756a19 Drop xdg-output requirement
Rely on wl_output v4 instead.
2022-03-10 10:31:51 +01:00
Simon Ser
1d1c75b631 Add support for ext-session-lock-v1
This is a new protocol to lock the session [1]. It should be more
reliable than layer-shell + input-inhibitor.

[1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/131
2022-02-02 15:30:45 +01:00
Martin Dørum
a99afe6a70
Implement key repeat 2020-06-19 23:02:23 +02:00
Matt Della
a7404e1096 Added option to adjust ring position via CLI arguments and the config file 2019-11-27 19:53:07 -05:00
Alexander Martin
666ae950bc Adds option to show indicator even if idle 2019-08-04 02:15:49 -04:00
Abdelhakim Qbaich
89b214612c Resizable buffer size for the subsurface 2019-06-22 22:36:53 +03:00
Peter Kasza
183d1bd549 Add fixed font-size option for indicator
This commit adds a new command line option called --font-size to
specify a fixed font size in the indicator. The default value for
font-size is 0, which means that the text will autoscale. Any other
positive value will result in a fixed text size.
2019-05-05 09:25:59 -06:00
bbgun7
86f4fea55e Added hide keyboard layout option 2019-04-22 10:34:19 -07:00
Anders Nylander
7d5a73b0a9 Decouple the drawing of the background from drawing the indicator.
* Render background only once in main wl_surface
* Render indicator on subsurface
2019-03-20 23:07:31 +02:00
Dominik Bendle
a052a56bc2 Display xkb layout while typing
Displays the current keyboard layout below the unlock indicator if more
than one xkb layout is configured or the show-keyboard-layout option is
given. The text is displayed with a background box.

Adds commandline options for text color, background color and border
color of the box as well.
2019-02-06 01:42:49 +01:00
Dominik Bendle
40e9098a74 Add option show-failed-attempts
Keeps track of unsuccessful authentication attempts via an int counter
in the state struct. Displays on the unlock indicator, but will be
replaced by the Caps Lock text if enabled.
2019-01-29 20:44:32 +01:00
Ian Fan
b87e2a4916 Remove references to pango 2019-01-23 12:20:24 +00:00
Connor E
648b0ccd64 Make setuid error clearer. 2019-01-18 13:52:17 +00:00
emersion
c77f0eb4ed
Check password without blocking 2019-01-17 12:42:13 +01:00
emersion
0c7932a3af
Move PAM into a child process 2019-01-17 09:53:23 +01:00
Brian Ashworth
dff6b63725 Remove list.c
This replaces all occurrences of `list_t` with `wl_list` to eliminate
the need for `list.c`
2019-01-15 09:26:18 +01:00
Brian Ashworth
e3935ad143 Implement logging and remove wlroots dependency
This implements a simpler version of the wlroots logger for swaylock.
With this logger, the dependency on wlroots can be dropped. This also
adds a debug flag and disables debugging output by default
2019-01-14 23:30:54 -05:00
Robinhuett
1e7696fceb Add caps lock state to indicator
This implements customization for the indicator as proposed in sway#2788 with comments from sway#3367 in mind.
The default behaviour does not change exept for the caps lock text color.
Since these changes seem to be lost in the split I've remade them.
2019-01-14 16:51:04 +01:00
Drew DeVault
0c9501e0b0 Remove unused functions in common code 2019-01-13 21:19:43 -05:00
Drew DeVault
b90637e2a6 Convert swaylock into standalone project 2019-01-13 21:16:47 -05:00