Commit graph

18337 commits

Author SHA1 Message Date
Florian Müllner
2c66b1befd
Bump version to 45.7
Update NEWS.
2024-05-26 13:03:30 +02:00
Marco Trevisan (Treviño)
6b33e6fe6d
js: Use Shell.util_spawn_async functions to launch external processes
As explained in previous commits, it's not safe to use JS code in child
function callbacks, so let's use the safer version of it.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6698
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3293>
(cherry picked from commit 26e8fb90fb)
2024-05-26 12:53:45 +02:00
Marco Trevisan (Treviño)
c23dba8f41
shell-util: Add async-signal-safe wrappers for GLib.spawn_async implementations
In the shell code we often use GLib.spawn_async to launch processes
with a GSpawnChildSetupFunc implementation in JavaScript to reset the
mutter nofile rlimit in the new child process.

However, this is highly unsafe to do because this implies that the child
setup function code is executed in gjs where a lot of allocations are
done and even more not-async-signal-safe code is executed, in fact
leading to dead-locks as reported in the past.

To prevent this, declare a new functions that do the same of the GLib
counterpart but without providing a GSpawnChildSetupFunc that is instead
implemented in the C-side doing the cleanup that mutter requires without
allocations or async-signal-unsafe code.

Helps: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6698
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3293>
(cherry picked from commit 781010be66)
2024-05-26 12:53:38 +02:00
Marco Trevisan (Treviño)
4424db5a44
shell-app: Do not allocate memory during GSpawnChildSetupFunc
The child context setup function used as launch GSpawnChildSetupFunc
uses g_object_get that internally potentially allocates memory, making
it not async-signal-safe and so not something that is safe to use in
between fork and exec, so just use the simpler getter here.

Note that the current implementation of app_child_setup() is safe
already as sd_journal_stream_fd, dup2 and close are so.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3293>
(cherry picked from commit dcb5956dea)
2024-05-26 12:53:28 +02:00
Florian Müllner
85162f9af3
ci: Hook up release-module
In the future, the module will automate uploading the release
tarball. We already use the CI pipeline to generate the tarball,
so it's easy to hook up the module and provide some testing
before the module goes into production.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3340>
(cherry picked from commit 1fbfb93cbd)
2024-05-26 12:53:15 +02:00
Florian Müllner
5e063d3167
ci: Use meson introspect to generate artifact path
We currently assume that the `CI_COMMIT_TAG` variable matches the
version component of the generated dist tarball.

That is usually correct, but sometimes errors happen and a wrong
tag is pushed, and the real release uses something like "46.0-real".

Account for that by building the artifact path from `meson introspect`
and exporting it as environment variable.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3340>
(cherry picked from commit 27445a1c98)
2024-05-26 12:52:38 +02:00
Florian Müllner
e8679b5ed6
workspaceThumbnails: Update target scale when fully unexpanded
We currently only update the scale when fully expanded. In order
to fix the initial expand transition, also update the scale
when fully unexpanded.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3331>
(cherry picked from commit 6fa6dd6abb)
2024-05-22 16:39:04 +02:00
Florian Müllner
67a6c13d92
workspaceThumbnail: Don't rely on allocation to compute scale
We currently compute the target scale from the allocated height,
which means that it only becomes available after thumbnails have
been allocated at least once at their expanded height.

As the minimap is initially hidden, this only happens after it is
expanded for the first time, which means the corresponding transition
is not animated.

In order to allow for a fix, compute the target height ourselves
to allow the scale computation to work independently from the
expand factor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3331>
(cherry picked from commit 2694a64ebb)
2024-05-22 16:38:58 +02:00
Florian Müllner
6f4529e44d
authPrompt: Consume cancel key event
The auth prompt currently propagates all key presses, even the
Escape press that is used to cancel it.

On the lock screen that means that the same event that cancels
the prompt (and switches back to the clock) is *also* propagated
to the handler that activates the prompt on key press.

That handler doesn't do anything when the prompt is already visible,
which is the case when the transition to the clock is animated.

However when animations are disabled, canceling the prompt will
result in a new prompt getting created immediately, and the login
screen is stuck on the prompt.

Fix this by not propagating key events that are used to cancel
the prompt.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3317>
(cherry picked from commit e7dc0de75e)
2024-05-22 16:38:35 +02:00
Florian Müllner
bdf981b171
authPrompt: Use signal handler instead of vfunc
The prompt itself may get destroyed when canceled, in which
case it is no longer possible to chain up in the vfunc.

This is usually not an issue as the prompt is only destroyed
at the end of a transition, but it results in a warning if
animations are disabled.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3317>
(cherry picked from commit dac4f2cb86)
2024-05-22 16:38:30 +02:00
segfault
89e15061a0
automountManager: Fix password not re-asked for TCRYPT devices
Since commit

  f881092bbc

released in cryptsetup 2.5.0, cryptsetup returns EPERM instead of EINVAL
when the TCRYPT header can't be decrypted with the provided
password and parameters.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7631
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3300>
(cherry picked from commit 9e6552a20d)
2024-05-22 16:38:14 +02:00
Sebastian Wick
6ba5a847aa
tests: Make sure XDG_CURRENT_DESKTOP is set to an empty string
gsettings overrides can be in affect when XDG_CURRENT_DESKTOP is set. We
need predictable default values for predictable tests in mutter and thus
mutter will start asserting that GSETTINGS_BACKEND='memory' and
XDG_CURRENT_DESKTOP=''.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3329>
(cherry picked from commit beb3f120dd)
2024-05-22 16:38:09 +02:00
Florian Müllner
dd7fb0cd1f
croco: Remove unused and dodgy function
The function creates a parser object that is never used nor
freed, then always returns NULL.

Luckily it's unused, so just remove it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3321>
(cherry picked from commit 3220005eea)
2024-05-22 16:37:39 +02:00
Sebastian Keller
9c0873ee0e
status/keyboard: Use '+' to separate variant when launching tecla
The code was not changed when switching from gkbd-keyboard-display which
was using tab to separate layout and variant. Tecla uses '+' instead.

This fix was suggested by Neil Mayhew.

Fixes: 04aaa4b67 ("keyboard: Spawn "tecla" to show keyboard map")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7638
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3324>
(cherry picked from commit 658beda9a9)
2024-05-22 16:37:02 +02:00
Simon McVittie
b55368b22d
screencast: Correct expected bus name for streams
Previously, this only worked because GDBusConnection was not filtering
signals by their sender correctly (GNOME/glib#3268).

Thanks: Alicia Boya García
Signed-off-by: Simon McVittie <smcv@debian.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3303>
(cherry picked from commit 50a011a19d)
2024-05-07 20:22:42 +02:00
Jonas Ådahl
d40d4153bd
ci: Run tests with the timeout multiplier set to 5
Sometimes the test runners are saturated with other work. Bump the test
timeouts by a multiplier of 5 with the hope that they now will be much
more likely to have time to finish in time.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3299>
(cherry picked from commit f31099cd85)
2024-05-07 20:22:19 +02:00
Marco Trevisan (Treviño)
e525255163
na-tray-child: Use absolute icon position as root event coordinates
Currently we're using relative positioning when sending click events to
tray icon clients, and this leads to some apps (especially Qt ones) to
try to open the menus at such absolute coordinate under X11.

To prevent this to happen, let's get the root coordinate from the xembed
and let's use it to compute the synthetic event root x/y.

We could have even used the actual event position for this, but getting
it from the xembed makes this more consistent.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3283>
(cherry picked from commit 794acd65a8)
2024-05-07 20:22:06 +02:00
pesader
3a79934cef
unlockDialog: Also center the time in 12h format
Since the time string uses a space to pad single-digit numbers, the
centered label looks off-center. Fix this by applying the trim()
function to get rid of whitespaces.

The drawback of this approach is that the label will change position
slightly when the time changes, but for the lockscreen that's okay.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6193
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3290>
(cherry picked from commit ccdd46c0d9)
2024-05-07 20:21:42 +02:00
Marco Trevisan (Treviño)
f838c15871
workspaceAnimation: Do not create clones for override redirect windows
Override redirect windows manage their own positioning and size alone
and are always sticky, so we're not covering them either with the
animation MonitorsGroup, and thus there's no need to clone them or we'd
end up having two windows painted.

This was causing the shell tray icon window actors (that have no opacity
by default but that are override redirect) to show up during the
animation as their clone animation is not 0.

The other option would be hide them during the animation phase, but
there's no need for this.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3285>
(cherry picked from commit 3a34c16eca)
2024-05-07 20:21:35 +02:00
Sebastian Keller
70a141ae0f
portalHelper: Fix handling of invalid TLS certificates
WebKitGTK 6.0 moved allow_tls_certificate_for_host() from WebContext to
NetworkSession. This was not adjusted here when the portal helper was
switched from 4.0 to 6.0.

2d1b53b211

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7597
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3284>
(cherry picked from commit b7079b8f2f)
2024-05-07 20:21:25 +02:00
Sebastian Wick
c085170aac
shell-util: Only use systemd if gnome-shell is managed by systemd
Simply looking at the return value of sd_pid_get_user_unit can be used
to determine if the process is in a systemd unit, but it doesn't say if
gnome-shell is managed by systemd.

For example, running toolbx on a host with systemd creates a libpod
unit, even if the gnome-shell that gets started in the toolbx is itself
not managed by systemd.

We can make sure that gnome-shell is managed by systemd simply by
checking if the unit we're running starts with org.gnome.Shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3267>
(cherry picked from commit b3580919e3)
2024-05-07 20:20:47 +02:00
Florian Müllner
0bacf38337
Bump version to 45.6
Update NEWS.
2024-04-21 14:32:39 +02:00
Florian Müllner
1b410b52af
cleanup: Replace deprecated String.prototype.substr()
The method is documented as deprecated:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr

Switch to the non-deprecated substring() method.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3234>
(cherry picked from commit df50c2dfc6)
2024-04-21 14:30:55 +02:00
Florian Müllner
8d32c4eac3
cleanup: Don't use substring to check prefix
String.prototype.startsWith() is more idiomatic in that case.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3234>
(cherry picked from commit 193b6c129e)
2024-04-21 14:30:54 +02:00
Florian Müllner
97fa46130b
Bump version to 45.5
Update NEWS.
2024-03-16 14:58:22 +01:00
Jonas Dreßler
f8bd39fbcc
subprojects/gvc: Bump gvc submodule to newest commit
A few fixes have landed in gvc recently that should fix a crash,
so bump the submodule to include those.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3233>
(cherry picked from commit de754db469)
2024-03-15 18:23:02 +01:00
Jonas Dreßler
d74e33638c
Revert "main: Only restore key focus on pop when modal actor is still focused"
This one caused a regression and now keys appear to get stuck while raising
the screenShield, so revert it. Hopefully we can fix the original problem in
a better way next cycle by tracking key focus changes internally in
ClutterGrab.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7446

This reverts commit 4d544d7b56.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3231>
(cherry picked from commit a64424864b)
2024-03-15 18:22:44 +01:00
Florian Müllner
61985169a2
shell: Remove left-over function declaration
The function itself was removed in commit 4b80cbe1cd back
in 2016.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3206>
(cherry picked from commit a1dd5d5e1e)
2024-03-15 18:17:00 +01:00
Florian Müllner
29c51d098f
notificationDaemon: Fix auto-closing FDO notifications
We auto-close FDO notifications when the sender leaves the bus,
given that the protocol was created without persistency in mind
and any action will become invalid.

However that broke when moving the public-facing implementation
into a separate service, as we now track the (always running)
service instead of the original sender.

Fix that by forwarding the sender to the internal implementation
via a private hint, just like we already do for the PID.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3204>
(cherry picked from commit 9af81e44bc)
2024-03-15 18:16:44 +01:00
Florian Müllner
8b07e8e187
notificationDaemon: Namespace private sender-pid hint
The hint is a private implementation detail between the public
and internal services, not something anybody else should set
(*cough* libnotify *cough*).

Prefix the name to hopefully make that clearer.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3204>
(cherry picked from commit f0b1cf5f8d)
2024-03-15 18:16:37 +01:00
Florian Müllner
197b925952
extensions-app: Fix service activation mix-up
Starting the D-Bus service should not pop-up a window by itself,
it should just register and wait for an explicit call to Activate().

The .desktop file on the other hand should fully activate the
app when using the Exec line.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7423

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3202>
(cherry picked from commit 3504a6a8a9)
2024-03-15 18:16:02 +01:00
Ray Strode
5682dfe22c
authPrompt: Disregard smartcard status changes if VERIFICATION_IN_PROGRESS
commit c8bb45b41c introduced a new
verification state, VERIFICATION_IN_PROGRESS, to detect when the user
has already interacted with the authentication prompt, so the
prompt can rate limit the number of times the user can cancel
authentication attempts with the escape key (without also rate limiting
the number of times they can hit escape to go back to the clock without
interacting with the prompt).

That means there are now two states that represent the user actively
undergoing verification: VERIFYING and VERIFICATION_IN_PROGRESS.

It's inappropriate to reset the smartcard service if the user is
actively conversing with it. We try to check for that by looking at the
original verification state, VERIFYING, but we unfortunately, neglect
to account for the new VERIFICATION_IN_PROGRESS state.

The result is that if a user types their smartcard pin at the clock,
and then inserts their smartcard, the pin will get cleared instead of
used, and they have to retype it again.

This commit fixes the oversight, and allows users to again pre-type
their smartcard pin at the clock before inserting their smartcard.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2765>
(cherry picked from commit 3dd5dcd9bb)
2024-03-15 18:15:41 +01:00
Paul Hollinsky
bcef6a15cd
tools/toolbox: Explicitly use /bin/bash
The script uses bash-specific language extensions which cause syntax
errors when run with /bin/sh -> /bin/dash.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3186>
(cherry picked from commit 8e7d235513)
2024-03-15 18:12:48 +01:00
Bilal Elmoussaoui
603790e667
layout: Stop using deprecated display property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3178>
(cherry picked from commit 9c7e1f1180)
2024-03-15 18:12:05 +01:00
Florian Müllner
d21538fa52
layout: Don't use supports_extended_barriers()
The method was deprecated in favor of backend capabilities,
so query those instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3176>
(cherry picked from commit b09eced160)
2024-03-15 18:11:15 +01:00
Florian Müllner
7406ed51ed
layout: Don't use get_feedback_group_for_display()
The global method was deprecated in favor of a corresponding
method on Meta.Compositor, use that instead.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3176>
(cherry picked from commit 02c85fbb64)
2024-03-15 18:07:18 +01:00
Florian Müllner
58522920b5 Bump version to 45.4
Update NEWS.
2024-02-11 17:54:51 +01:00
Julian Sparber
506368e610 st/button: Fix small mistake in st_button_toggle_mode docs
When the toggle mode is enabled the checked state will be changed not
the active state.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3172>
(cherry picked from commit 7b5da30f21)
2024-02-09 14:12:25 +01:00
Carlos Garnacho
6b37c34f31 osk: Add missing shift level to Georgian OSK layout
This layout initially snapshot from CLDR data is missing the
Shift level. Add one based on user feedback, and essentially
mirroring the keymap for physical keyboards.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6744
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3145>
(cherry picked from commit 2ab5a5d7de)
2024-02-09 14:12:02 +01:00
Keyu Tao
451b4fbcf0 windowManager: Add "opacity: 0" to minimize ease animation
Extensions like dash-to-dock use set_icon_geometry() to window.
This changes the dest and scale of ease animation of minimize and
makes it looks very strange. By setting dest opacity to 0 the animation
could be more natural.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2968>
(cherry picked from commit 5d1a0cc525)
2024-02-09 14:10:27 +01:00
Florian Müllner
addee680a5 dbusService: Don't double-wrap remote errors
Returning a GLib.Error from a method invocation will encode the
error when sent over the wire. In case the error itself is already
an encoded remote error, just passing it on will result in double
wrapping.

Avoid that by stripping any remote error information before
returning it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3159>
(cherry picked from commit a5d33026f0)
2024-02-09 14:05:49 +01:00
Florian Müllner
56660cf878 ci: Do not create pipelines for branches with open MRs
Pipelines for non-protected branches are set to 'manual', and
thus cheap. However they may still get picked by `@marge-bot`,
meaning that the bot waits for the completion of a pipeline that
never starts.

Avoid that by not creating pipelines for branches with open
merge requests.

Credit to Jordan, who came up with this for gst.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3153>
(cherry picked from commit d3e96a36ce)
2024-02-09 14:05:22 +01:00
Suryashankar Das
e0cf6b3176 overview: Hide search results while leaving overview
There is currently no proper transition from search results
to the session: Only the top bar fades, but the rest of the
screen just changes abruptly at the end of the transition.

Fix this by hiding search results before leaving the overview,
so the regular transition can take place.

Close https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3821

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3152>
(cherry picked from commit 3cb1fb7428)
2024-02-09 14:04:52 +01:00
Florian Müllner
c8ac35235a unlockDialog: Only show switch-user button for multiple users
We don't offer "Switch user" on single-user systems when unlocked,
so it is a bit weird to include it while locked.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2475>
(cherry picked from commit 756f212d66)
2024-02-09 14:04:38 +01:00
Jonas Dreßler
7585ae6962 main: Only restore key focus on pop when modal actor is still focused
If something grabs the key focus while a modal is pushed, keeping
key-focus on that actor seems like the smarter thing to do than setting
it back to the last focus after the modal gets popped again. So check if
the key focus actor that we set when pushing the modal got changed when
popping that modal, and if it got changed, simply don't touch key focus.

This fixes a bug with the close dialog, where key focus isn't correctly
set to the dialog after alt-tabbing to a window showing a close dialog.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/786>
(cherry picked from commit 4d544d7b56)
2024-02-09 14:04:26 +01:00
Jonas Dreßler
5ab26d669d closeDialog: Actually set key focus to button when grabbing key focus
When setting the key focus to `this._dialog`, the default button is not
automatically focused and no button has key focus.

Use the `initialKeyFocus` property of the dialog instead, and set focus
to the default button if the dialog is not already focused.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/786>
(cherry picked from commit de834fe307)
2024-02-09 14:04:18 +01:00
Florian Müllner
e87681dbd9 boxpointer: Clamp alignments to expected range
The values are expected to be between 0 (start) and 1 (end),
enforce that with appropriate clamp() calls.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3150>
(cherry picked from commit d0b2351036)
2024-02-09 14:04:01 +01:00
Florian Müllner
05df19b048 boxpointer: Swap arrow alignment on RTL
The current code uses the arrow alignment to align the menu between
the top/left (0) and bottom/right(1), regardless of the text direction.

Instead of adjusting code everywhere, reinterpret the parameter
to refer to start/end instead, and swap the alignment with an
RTL text direction.

Credit to Sebastian Keller for spotting the cause of the issue.

Close https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5261
Close https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7356

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3150>
(cherry picked from commit 4e70315fbb)
2024-02-09 14:03:53 +01:00
Florian Müllner
d21e3485c9 windowManager: Keep dim effect in overview
Removing the effect dates back to the time when we didn't show
attached dialogs in the overview. Since we do show attached
dialogs as such nowadays, it makes sense to keep the effect.

Close https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6265

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3151>
(cherry picked from commit 7b4054564e)
2024-02-09 14:03:05 +01:00
Florian Müllner
628ad639a4 iconGrid: Don't recreate StIcons on icon theme changes
Now that StIcon updates its texture automatically on icon theme
changes, we only have to recreate icon actors that aren't StIcons.

(This probably only applies to the folder icon in the app grid
where the sub-icons do use St.Icon, but making that assumption
feels dodgy with an API as generic as `createIcon()`)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3141>
(cherry picked from commit 8a1f44f10a)
2024-02-09 14:01:56 +01:00