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
Aleksei Bavshin
1225e75be0
Ensure that ext_session_lock_v1.unlock_and_destroy is processed.
...
Use wl_display_roundtrip to ensure that the unlock request is received
and processed by the server. The protocol requires[1] this to avoid
possible races.
[1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/161
2022-11-12 10:40:19 +01:00
Alexander Orzechowski
cc2779330f
meson: Clean up client_protocols
2022-09-26 19:58:53 +02:00
Simon Ser
b5cfd43deb
shadow: make the result of crypt() const
...
This should not be free'd.
2022-09-26 19:58:04 +02:00
Daniel De Graaf
dafbef3ade
Unlock the screen on SIGUSR1
...
When the screen is locked using ext_session_lock, killing swaylock will
leave the session locked. This is normally desirable if the kill is due
to the OOM killer or swaylock crashing, but can be undesirable if an
unlock is desired. This adds a signal handler for SIGUSR1 if using
ext_session_lock.
2022-09-24 12:15:53 +02:00
John Lindgren
605859cdd4
Fix loss of clarity with odd-sized centered image
2022-09-10 20:04:31 +02:00
Robin Ebert
bdeb891378
Use mlock for password buffer
2022-06-15 10:49:32 +02:00
Rick van Schijndel
fad5bc2f61
wayland-scanner: use native version to support cross-compilation
...
Cross-compilation support was broken in 55c018a350
because wayland-scanner from the host system is used with that change.
This patch changes it back to use wayland-scanner from the build system.
For normal (non-cross) compilation this shouldn't change anything.
Meson also uses the build machine wayland-scanner binary:
- c649a2b8c5/mesonbuild/modules/unstable_wayland.py (L48-L53)
2022-04-26 05:41:28 +02:00
Oğuz Ersen
55394afe8f
bash-completion: localize variables
2022-03-27 11:28:13 +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
tiosgz
92de4d2e31
Do not crash on connecting new output
...
The problem here was that a commit in reaction to wl_output::geometry
was made before the surface was configured, which is a protocol error.
See 65552.531 in the following log.
[ 65537.378] wl_registry@2.global(37, "wl_output", 4)
[ 65537.534] -> wl_registry@2.bind(37, "wl_output", 3, new id [unknown]@21)
[ 65537.679] -> wl_compositor@5.create_surface(new id wl_surface@19)
[ 65537.744] -> wl_compositor@5.create_surface(new id wl_surface@23)
[ 65537.822] -> wl_subcompositor@6.get_subsurface(new id wl_subsurface@24, wl_surface@23, wl_surface@19)
[ 65537.934] -> wl_subsurface@24.set_sync()
[ 65537.973] -> ext_session_lock_v1@3.get_lock_surface(new id ext_session_lock_surface_v1@25, wl_surface@19, wl_output@21)
[ 65538.086] -> wl_compositor@5.create_region(new id wl_region@26)
[ 65538.148] -> wl_region@26.add(0, 0, 2147483647, 2147483647)
[ 65538.275] -> wl_surface@19.set_opaque_region(wl_region@26)
[ 65538.325] -> wl_region@26.destroy()
[ 65538.383] -> wl_display@1.sync(new id wl_callback@27)
[ 65551.781] wl_display@1.delete_id(26)
[ 65551.924] wl_display@1.delete_id(27)
[ 65551.971] wl_pointer@13.enter(839, wl_surface@15, 558.01562500, 785.66796875)
[ 65552.093] -> wl_pointer@13.set_cursor(839, nil, 0, 0)
[ 65552.231] wl_output@21.geometry(0, 0, 440, 300, 0, "Samsung Electric Company", "SyncMaster", 0)
[ 65552.453] -> wl_surface@19.frame(new id wl_callback@26)
[ 65552.531] -> wl_surface@19.commit()
[ 65552.568] wl_output@21.mode(1, 1680, 1050, 59883)
[ 65552.685] wl_output@21.scale(1)
[ 65552.762] wl_output@21.done()
[ 65552.796] ext_session_lock_surface_v1@25.configure(840, 1680, 1050)
[ 65552.893] -> ext_session_lock_surface_v1@25.ack_configure(840)
[ 65553.044] -> wl_shm@4.create_pool(new id wl_shm_pool@28, fd 7, 7056000)
[ 65553.156] -> wl_shm_pool@28.create_buffer(new id wl_buffer@29, 0, 1680, 1050, 6720, 0)
[ 65553.224] -> wl_shm_pool@28.destroy()
[ 65558.903] -> wl_surface@19.set_buffer_scale(1)
[ 65558.953] -> wl_surface@19.attach(wl_buffer@29, 0, 0)
[ 65558.981] -> wl_surface@19.damage_buffer(0, 0, 2147483647, 2147483647)
[ 65559.013] -> wl_surface@19.commit()
[ 65559.026] -> wl_subsurface@24.set_position(842, 465)
[ 65559.063] -> wl_surface@23.attach(nil, 0, 0)
[ 65559.088] -> wl_surface@23.commit()
[ 65559.110] -> wl_subsurface@24.set_position(782, 465)
[ 65559.186] -> wl_shm@4.create_pool(new id wl_shm_pool@30, fd 8, 58564)
[ 65559.220] -> wl_shm_pool@30.create_buffer(new id wl_buffer@31, 0, 121, 121, 484, 0)
[ 65559.266] -> wl_shm_pool@30.destroy()
[ 65559.287] -> wl_surface@23.attach(nil, 0, 0)
[ 65559.316] -> wl_surface@23.commit()
[ 65559.385] -> wl_surface@23.set_buffer_scale(1)
[ 65559.402] -> wl_surface@23.attach(wl_buffer@31, 0, 0)
[ 65559.427] -> wl_surface@23.damage_buffer(0, 0, 2147483647, 2147483647)
[ 65559.458] -> wl_surface@23.commit()
[ 65559.467] -> wl_surface@19.commit()
[ 65559.478] wl_callback@27.done(840)
[ 65559.740] wl_display@1.error(ext_session_lock_surface_v1@25, 0, "session lock surface has never been configured")
ext_session_lock_surface_v1@25: error 0: session lock surface has never been configured
2022-02-10 09:54:57 +01:00
tiosgz
cdc057f09a
seat: NULL-check on keyboard.modifiers event
...
It can be sent before keyboard.keymap (for example
when running swaylock from a different tty), in
which case the xkb state isn't initialized yet.
2022-02-10 09:40:06 +01:00
Simon Ser
2f2173808a
readme: drop xdg-shell mention
...
We don't actually require xdg-shell support.
2022-02-02 16:45:35 +01:00
Simon Ser
65d48df182
readme: drop paragraph about creating packages
...
Mostly irrelevant today.
2022-02-02 15:53:53 +01:00
Simon Ser
2d24b11b28
readme: improve formatting a bit
2022-02-02 15:53:24 +01:00
Simon Ser
8283db2911
readme: update protocol deps
2022-02-02 15:52:17 +01:00
Simon Ser
c8795a8d23
readme: update release signature fingerprint
2022-02-02 15:48:45 +01:00
Simon Ser
c80733a06a
build: stop using sh to generate man pages
2022-02-02 15:44:41 +01:00
Simon Ser
55c018a350
build: lookup wayland-scanner dep, require 1.15
2022-02-02 15:42:29 +01:00
Simon Ser
c74a129246
build: stop aligning assignments
...
More consistent with our code style.
2022-02-02 15:35:52 +01:00
Simon Ser
2107830b1e
build: explicitly set check arg for run_command
...
References: https://github.com/mesonbuild/meson/issues/9300
2022-02-02 15:34:13 +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
Simon Ser
978ce49894
build: add Meson subproject fallback for wayland-protocols
...
This allows building swaylock with a local wayland-protocols.
2022-02-02 15:30:45 +01:00
Simon Ser
386f8f4241
build: bump Meson min version to 0.58
...
The next commit will need that version. Adjust the build to not
trigger deprecation warnings.
2022-02-02 15:30:45 +01:00
Jason Nader
5150d3869c
Add editorconfig
2021-11-19 09:20:25 +01:00
Simon Ser
2bf76009e1
Check for poll errors
2021-07-29 09:08:39 +02:00
grumpey
366db56553
Call fclose vice free, fixes #198
2021-07-11 19:52:55 +02:00
Michael Swiger
7ac62ebda1
Prevent attaching and committing the surface twice
2021-07-05 22:56:20 +02:00
Michael Swiger
4088033ff6
Fix indicator buffer not resizing after display powers off
2021-07-05 22:56:20 +02:00
Simon Plakolb
9754241080
Ensure buffer size is multiple of buffer scale
...
An odd value of fe.height lead to the indicator disappearing. This was
due to the buffer size no longer being a multiple of the buffer scale.
This commit fixes the issue by checking both height and width to be a
multiple of scale.
This is done early to avoid excessive re-calls of create_buffer if the
buffer_height != new_height in render.c line 314 (now 318).
2021-07-05 14:43:26 +02:00
loserMcloser
bac71d9c8d
Draw ring and inner fill separately
2021-06-22 19:30:11 +02:00
Elyes HAOUAS
baa1ae99df
Fix some typos
...
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2021-04-12 21:28:59 +02:00
Simon Ser
9d3da72a39
Use wl_surface.damage_buffer
...
We incorrectly used the buffer size instead of the surface size.
Let's not bother and just damage the maximum region.
2021-02-17 16:50:38 +01:00
Simon Ser
05325b1197
Initialize indicator size to zero
...
Initializing to 1 is incorrect when the surface scale is > 1.
2021-02-17 16:50:38 +01:00
Simon Ser
691415bf95
pool-buffer: handle zero-sized buffers
...
mako does something similar.
2021-02-17 16:50:38 +01:00
Martin Dørum
235b925df7
Fix a potential use-after-free
2020-10-15 15:17:41 +02:00
Yaroslav
c46a5197a2
refresh pam credentials after successful authentication
2020-07-13 15:49:10 +02:00
Martin Dørum
a99afe6a70
Implement key repeat
2020-06-19 23:02:23 +02:00
Nils
a6b3a0956b
Use xkb_keymap_new_from_buffer instead of xkb_keymap_new_from_string
...
xkb_keymap_new_from_string just calls xkb_keymap_new_from_buffer with size as `strlen(string)`.
0f1cae0cc4/src/keymap.c (L164)
According to the [spec](https://gitlab.freedesktop.org/wayland/wayland/-/blob/master/protocol/wayland.xml#L2182 ), MAP_PRIVATE should be used.
2020-03-29 21:00:33 +02:00
Jakub Profota
73754703c5
Added --indicator-x/y-position
2020-03-06 15:21:24 +01:00
Jakub Profota
1620d98411
Added --indicator-x\y-position
2020-03-06 15:21:24 +01:00
Jakub Profota
18e2a70ddb
Added --indicator-x/y-position
2020-03-06 15:21:24 +01:00
Jakub Profota
6015f4450d
Added --indicator-x/y-position
2020-03-06 15:21:24 +01:00
Michael Vetter
5da2b1d861
Set version to 1.6
...
It seems this gets forgotten before doing a release.
Like last time: https://github.com/swaywm/swaylock/pull/84
So this time I will try differently and set it to the (probably)
next version number :-)
2020-01-23 07:30:27 -07:00
Eli Schwartz
89f1ede511
fish-completion: use the correct fallback directory
...
fish completions should never be installed to share/fish/completions/ as
that directory is reserved exclusively for completions shipped as part
of the fish source code.
Use the same vendor_completions.d/ directory which the default fish
configuration uses.
2020-01-22 09:19:47 -07:00
Eli Schwartz
3baa500c5e
completion: use pkg-config to get install location for bash/fish
...
Both shells provide pkg-config files which declare their designated
completionsdir. Use this as the primary source of truth.
2020-01-22 09:19:47 -07:00
Namkhai B
dee002155b
Remove FreeBSD-specific PAM configuration
...
Something in FreeBSD's PAM modules changed, and
now using the "passwd" configuration file fails to unlock
2020-01-06 13:18:25 -07:00