Commit graph

14642 commits

Author SHA1 Message Date
Gustavo Noronha Silva
be8a1dcbfc calendar-server: Fix double-free detection abort
app_notify_events_added uses an intermediate builder to construct an
array that is then added to the main variant using g_variant_builder_add
which should clear the intermediate, but doesn't due to the way it is
passed: by value, rather than as a pointer.

This was debugged with the help of Eduardo Habkost, who believes it
works on x86 due to big structs being passed as pointers.

Fixed: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3440
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1848>


(cherry picked from commit 404ca91941)
2021-05-31 18:41:56 +02:00
Florian Müllner
8c19cd528a messageTray: Don't play sound when banners are disabled
When support for notification sounds was added, it made some sense
to keep the 'enable-sound' setting independent from 'show-banners'.

However that changed when 'show-banners' was rebranded in the UI as
"Do Not Disturb", as sounds are at least as disturbing as the banners.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1814>
2021-04-16 12:30:30 +03:00
Hugo Carvalho
21d291b6a7 Update Portuguese translation 2021-04-14 12:50:17 +00:00
Marco Trevisan (Treviño)
9f33c00454 gdm: Don't try to retry authenticating when the service is unavailable
In the case a service is not available (as it can be in the fingereprint
case when a supported reader is available but has not enrolled prints)
we were trying indefinitely to restart it.

However, in such cases the PAM services are expected to return a
PAM_AUTHINFO_UNAVAIL and gdm to handle it, emitting service-unavailable
signal.

So connect to ::service-unavailable and keep track of the unavailable
services so that we can avoid retrying with them.
In case such service is not the foreground one, we can just silently
ignore the error, without bothering failing the whole verification.

In case we got a valid error message on service-unavailable, we also
show it, this is normally not happening unless GDM isn't redirecting
here other kind of problems (such as MAXTRIES) which are supposed to
stop the authentication stopping any further retry.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3734
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 17:16:24 +02:00
Marco Trevisan (Treviño)
e88b7c3564 gdm: Always show fingerprint error messages
When the login/lock screen is shown the error messages for background
services are always ignored.

However, in case the service is the fingerprint authentication method
we still want to be able to show error messages to inform the user
about what failed, and eventually that the max retries (that may be
different from the login screen configuration) has been reached.

This handles partially the design issue [1] related to the login/lock
screen fingerprint authentication.

Eventually we want to use pam extensions to use clearer and parse-able
messages, however in the case of the fingerprint service we can be sure
that the fprint PAM module will only send errors on auth failures.

[1] https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/56

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 17:16:23 +02:00
Marco Trevisan (Treviño)
4585acdf25 ShellUserVerifier: Add method to check if the service name is fingerprint
We have multiple places where we check if we're handling a fingerprint
event, so let's add a common public function so that it can be used also
by the authPrompt.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 17:16:23 +02:00
Marco Trevisan (Treviño)
13a441d0ee gdm: Ensure we cancel all the previously running services on auth retry
When retrying the authentication we should make sure that all the
previously initiated services are stopped in order to begin a new
authentication session with all the configured services.

Unfortunately at the current state we only dispose the currently used
user verifier, but we don't make it to stop all the relative gdm workers
and then they'll stay around potentially blocking any further usage of
them (as it happens with the fingerprint one, that has unique access to
the device).

So, cancel the currently running authentication before starting a new
one if we're explicitly retrying.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 17:16:23 +02:00
Marco Trevisan (Treviño)
7143d321a0 gdm: Do not fail the whole authentication if a background service failed
In case a background service such as the fingerprint authentication
fails to start we'd just mark the whole authentication process as
failed.

Currently this may happen by just putting a wrong password when an user
has some fingerprints enrolled, the fingerprint gdm authentication
worker may take some time to restart leading to a failure and this is
currently also making the password authentication to fail:

    JS ERROR: Failed to start gdm-fingerprint for u: Gio.DBusError:
        GDBus.Error:org.freedesktop.DBus.Error.Spawn.Failed:
            Could not create authentication helper process
        _promisify/proto[asyncFunc]/</<@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:435:45
        ### Promise created here: ###
        _startService@resource:///org/gnome/shell/gdm/util.js:470:42
        _beginVerification@resource:///org/gnome/shell/gdm/util.js:495:18
        _getUserVerifier@resource:///org/gnome/shell/gdm/util.js:405:14
        async*_openReauthenticationChannel@resource:///org/gnome/shell/gdm/util.js:378:22
        async*begin@resource:///org/gnome/shell/gdm/util.js:194:18
        _retry@resource:///org/gnome/shell/gdm/util.js:561:14
        _verificationFailed/signalId<@resource:///org/gnome/shell/gdm/util.js:584:30
        _emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
        finishMessageQueue@resource:///org/gnome/shell/gdm/util.js:268:14
        _queueMessageTimeout@resource:///org/gnome/shell/gdm/util.js:273:18
        _queueMessageTimeout/this._messageQueueTimeoutId<@resource:///org/gnome/shell/gdm/util.js:288:65

Given that background services are ignored even for queries or any kind
of message, we should not fail the authentication request unless the
default service fails.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 17:16:22 +02:00
Marco Trevisan (Treviño)
cf38c25582 gdm: Don't try answering query if the user verifier has been deleted
Answering a query may be delayed to the moment in which we've not any
more messages in the queue, however this case can also happen just after
we've cleared the UserVerifier and in such case we'd have nothing to
answer, but we currently throw an error:

    JS ERROR: Exception in callback for signal: no-more-messages:
      TypeError: this._userVerifier is null
    answerQuery/signalId<@resource:///org/gnome/shell/gdm/util.js:249:17
    _emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
    finishMessageQueue@resource:///org/gnome/shell/gdm/util.js:266:14
    _clearMessageQueue@resource:///org/gnome/shell/gdm/util.js:301:14
    clear@resource:///org/gnome/shell/gdm/util.js:223:14
    cancel@resource:///org/gnome/shell/gdm/util.js:205:18
    reset@resource:///org/gnome/shell/gdm/authPrompt.js:482:32
    cancel@resource:///org/gnome/shell/gdm/authPrompt.js:569:14
    vfunc_key_press_event@resource:///org/gnome/shell/gdm/authPrompt.js:128

So handle this case more gracefully keeping track of the current
cancellable and checking whether it is still valid before trying to answer
a query or do a delayed action.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 16:29:39 +02:00
Marco Trevisan (Treviño)
0f0ae73cd1 authPrompt: Don't begin a new authentication session on lockscreen cancel event
When a cancel event in the user lockscreen happens we first emit a reset
signal and immediately a cancelled one.

This lead to start a new gdm worker for each enabled authentication
method and then immediately to stop it.
As per the previous commit, we don't have anymore dangling gdm workers
around, but still we should not even start a new one in such case.

So, when the user explicitly cancelled the authentication session, first
emit a cancelled event and only emit a reset event with a begin request
if we are outside the lockscreen.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 16:29:15 +02:00
Marco Trevisan (Treviño)
f4112eb871 gdm: Cancel user verification on UserVerifier destruction
When we cancel an user authentication via Escape key or cancel button on
AuthPrompt we reset the view and we emit a 'cancelled' signal that leads
to destroying the auth prompt and the user verifier.

However, the verifier may still have an operation in progress and its
completion may take some time (as in the case of gdm-fingerprint), but
we just leave the gdm worker running until its pam module completes
(potentially never) clearing and disposing its handle.

So, instead of just clearing the verify, actually cancel and clear it.
In case the user verifier is set, clearing the relevant data will happen
anyway as part of the cancel() call.

Ideally this would have been handled by gdm itself, but unfortunately we
can't fix it there because the verifier itself is a class generated by
gdbus-codegen, so we can't handle this automatically on disposal nor we
can automatically monitor when the caller proxy is stopped on our side.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3654
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 16:28:15 +02:00
Marco Trevisan (Treviño)
574061fdfd loginDialog: Fill UserListItem layout to show the timed login indicator
When the timed indicator is shown the UserListItem layout should fill
so that the timed indicator can expand to use the whole item space.

So, always use the default value for x-align that will make it to fill
the available space without causing any regression when the timed
indicator is hidden.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3675
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1784>
2021-03-30 16:28:00 +02:00
Florian Müllner
ac1bf666ff Bump version to 3.36.9
Update NEWS.
2021-03-16 00:24:32 +01:00
Philipp Kiemle
2de582bb68 Update German translation 2021-03-06 17:26:18 +00:00
Jonas Dreßler
1109968ae7 blur-effect: Don't use stage view when drawing off-stage
When we're painting off-stage, for example because we're screencasting
or taking a screenshot, there won't be a stage-view associated with the
paint context. The BlurEffect previously didn't handle that case and
would crash.

Fix that and handle that case by assuming the scale is 1 and not
offsetting the rectangle we blit from the draw framebuffer.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1673>

(cherry picked from commit 09602ae2ae)
2021-02-15 13:33:22 +01:00
Guilherme Silva
2a303c4bca notificationDaemon: Fix icon-choosing logic
'image-data' (or 'image-path') should take precedence over 'app-icon',
even when both are sent by the application (e.g. Google Chrome).

Fixes #3616.


(cherry picked from commit 779e66ae88)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1621>
2021-02-02 11:12:18 +00:00
Florian Müllner
a55203902c extensionSystem: Fix opening Extensions app from notification
Launching the app is implemented by the source's open() method, but
only external notifications are hooked up to call into the source
when no default action was provided.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1595>
(cherry picked from commit ddc2e0f4cb)
2021-01-26 21:07:36 +01:00
Daniel van Vugt
f8afcd8b89 st-bin: Disallow st_bin_set_child with already-parented children
Not checking for this would result in `clutter_actor_add_child`
failing, but StBin keeping a copy in `priv->child`. So later on,
`st_bin_remove` would never be called on it and this assertion
would fail and crash the whole shell:

```
static void
st_bin_destroy (ClutterActor *actor)
{
  StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (actor));

  if (priv->child)
    clutter_actor_destroy (priv->child);
  g_assert (priv->child == NULL);

```

By disallowing spurious `st_bin_set_child` calls we now prevent StBin
from entering such a corrupt state and the above assertion won't fail
anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1507>
(cherry picked from commit 244c266c9f)
2021-01-15 18:07:29 +01:00
Marek Černocký
419415df81 Revert "Updated Czech translation"
This reverts commit 3ae4a28d42
2021-01-15 12:44:14 +00:00
Marek Černocký
3ae4a28d42 Updated Czech translation 2021-01-15 12:48:03 +01:00
Florian Müllner
e48f6ce856 Bump version to 3.36.8
Update NEWS.
2021-01-14 18:58:15 +01:00
Mike Gerow
442d44c425 loginDialog: Make notListedButton accessible
Without this a screen reader just calls the notListedButton a
"push button" instead of also including the "Not listed?" text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1567>
(cherry picked from commit 7222bffdf8)
2021-01-13 22:17:02 +01:00
Ivan Molodetskikh
8e7e933288 workspacesView: Fix copy-paste error
Calling both window-drag handlers on drag begin messes up our tracking,
and prevents the swipe tracker from being disabled during drag operations.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1551>
(cherry picked from commit c401759c1a)
2020-12-27 22:22:06 +01:00
Florian Müllner
906a0d1131 dateMenu: Fix temperature edge case
We currently format the temperature with a precision of 0, that is
with no digits after the decimal-point. As a result, a temperature
like -0.2 shows up as -0.

Math.trunc() has the same effect as `%.0f` and handles that edge
case correctly, but while at it, we can just as well round the
value properly.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1548>


(cherry picked from commit e85d127ae3)
2020-12-26 19:55:26 +00:00
Florian Müllner
05f051e00e screenshot: Handle window screenshot failures gracefully
meta_window_actor_get_image() may return NULL. Instead of crashing,
catch that case and return a proper error.

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

(cherry picked from commit d72da7d246)
2020-10-19 17:44:05 +02:00
Ray Strode
6ecfe4eb87 panel: Disconnect destroy signal handler when needed
The panel corners try to match their style to the buttons closest
to them. In order to make sure the corner styles stay in sync with
their neighboring buttons, they connect to the style-changed signals
of the buttons.

In order to make sure the style-changed signal handler isn't leaked,
it gets disconnected when the button is destroyed.

Unfortunately, the destroy signal handler connection itself gets leaked!

This commit ensures the destroy signal handler gets disconnected any
time the neighboring button is re-determined.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1460


(cherry picked from commit b41ef2f6e3)
2020-10-07 21:43:32 +00:00
Florian Müllner
64d57a2d9e Bump version to 3.36.7
Update NEWS.
2020-10-06 20:42:42 +02:00
Joonas Henriksson
44af8502eb calendar: Vertically center align week numbers
The labels were previously aligned by using top-padding, which was
relative to font-size, and therefore didn't always align the text
correctly when font scaling was enabled.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1415
2020-10-06 20:35:26 +02:00
Daniel van Vugt
3aa138be26 dash: Hide the tooltip when an item is clicked
So that when the 'Show Applications' button is clicked the icons don't
fly *through* the tooltip.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1423
2020-10-06 20:35:26 +02:00
Florian Müllner
2f13642286 dateMenu: Do not ellipsize date header
Currently the width of the calendar column is solely determined
by the calendar, while other elements are ellipsized as necessary.

While that is the desired behavior for the events-, world clocks-
and weather sections, we don't want to cut off the date in the
header. However switching to bold text made that more likely in
non-English locales or when using large text, so explicitly take
it into account for the width negotiation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2230
2020-10-06 20:35:26 +02:00
Carlos Garnacho
938432a453 shell: Do not use stack-allocated ClutterEvents
All events should be allocated.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1451
2020-10-06 20:35:26 +02:00
Florian Müllner
f6dc96301a systemActions: Filter out empty (folded) terms
We split the search string into words using whitespace, while
GLib.tokenize_and_fold() splits on any non-alphanumeric characters.

That is, a valid search term like ',' will be tokenized as [], so
the original non-empty terms may get mapped to an empty array.

And as [].every() returns true for any condition[0], we end up
matching *all* system actions in that case. We want the exact
opposite and not return any results, so handle that case explicitly.

[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3169
2020-10-06 20:35:26 +02:00
Florian Müllner
a1ca2a8539 systemActions: Flatten folded search terms
GLib.str_tokenize_and_fold() returns an array rather than a string
(the "tokenize" bit), so flatten the folded search terms like we
do for keywords.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3169
2020-10-06 20:35:26 +02:00
Bastien Nocera
bc1d8b677d subprojects: Update libgvc
This update is necessary to add support for recent UCM related changes
in ALSA and PulseAudio.

See https://gitlab.gnome.org/GNOME/libgnome-volume-control/-/merge_requests/10

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1444
2020-10-06 20:35:26 +02:00
Michael Catanzaro
7b64eb285d libcroco: Limit recursion in block and any productions (CVE-2020-12825)
If we don't have any limits, we can recurse forever and overflow the
stack.

This is per https://gitlab.gnome.org/Archive/libcroco/-/issues/8

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1404
2020-10-06 20:32:59 +02:00
Marek Černocký
041399a82a Updated Czech translation 2020-09-09 10:17:44 +02:00
Florian Müllner
682d4588bc Bump version to 3.36.6
Update NEWS.
2020-09-07 22:29:44 +02:00
Balázs Úr
11f3dc7414 Update Hungarian translation 2020-09-06 23:21:42 +00:00
Sebastian Keller
5c0d0384a4 iconGrid: Ensure minimum item size is big enough for label and icon
The minimum item size was using a fixed size of MIN_ICON_SIZE, which is
16px. This did not consider the label or padding added by app grid
items. So such a minimum size would often be smaller the space required
by label and padding alone, resulting in negative icon sizes after icon
scaling when there is not much room for icons.

Another contributing factor to this problem was that the scale factor
was not considered, since (fixed)ItemSize is supposed to be scaled.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1420
2020-09-04 18:31:47 +00:00
Sebastian Keller
4718f46618 iconGrid: Account for display scaling when scaling down icons
Using display scaling (without 'scale-monitor-framebuffer') means the
CSS item size the (fixed)ItemSize is calculated from has been multiplied
by the scaling factor. So when subtracting the hardcoded icon size from
this to calculate the size of the non-icon content of the item, it needs
to be multiplied by the scaling factor as well.

Then once the new icon size has been calculated after accounting for the
non-icon content, the resulting size has to be divided by the scaling
factor, because StIcon expects the unscaled icon size. Otherwise the
icon would get scaled twice.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3090

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1420
2020-09-04 18:31:47 +00:00
Zephaniah E. Loss-Cutler-Hull
6b20eb8eea unlockDialog: Defend against absence of blur effect
widget.get_effect(...) can return null while locking the screen, resulting
in a TypeError. In this situation the screen ends up black with a cursor
but never going to sleep, and moving the mouse brings the old screen
contents up but does not allow unlocking.

unlockDialog.js assumes that widget.get_effect will return non-null,
but other places such as getWindowDimmer in windowManager.js go out of
their way to be more careful.

[smcv: Add commit message, remove hard tabs, add missing semicolon]

Resolves: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3071
Bug-Debian: https://bugs.debian.org/968440
2020-08-24 17:29:56 +02:00
Goran Vidović
407abf527f Update Croatian translation 2020-08-19 22:35:31 +00:00
Florian Müllner
5d1c241f53 Bump version to 3.36.5
Update NEWS.
2020-08-11 22:26:17 +02:00
Jonas Dreßler
cb9bb62a21 st/private: Multiply position in fb coordinates with resource scale
The framebuffer we use for rendering shadows is scaled by the resource
scale, that means we also need to offset coordinates when translating
them to the framebuffers coordinate system.

So far we forgot to do that when translating the framebuffer using the
position of the actor, which lead to small rendering bugs of
text-shadows for actors allocated at non-zero origins. To fix that,
simply multiply those positions with the actors resource scale.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1390
2020-08-11 21:53:57 +02:00
Andre Moreira Magalhaes
bde127b893 rfkill: Always sync state on construction
This fixes an issue where the indicator can be out of sync until the
RfkillManager (used by it) properties change.

The problem is that multiple instances of the indicator will use
the same RfkillManager instance (getRfkillManager() returns a singleton)
that only guarantees to emit the changed signal in two scenarios:
when the D-Bus proxy connects and when the proxy properties change.

If by the time an indicator is instantiated the RfkillManager's D-Bus
proxy is already connected, that indicator would only sync its state
when the RfkillManager properties change.

Let's fix that by always syncing the state on construction - in the worst
case scenario the RfkillManager's D-Bus proxy won't have connected yet
and the indicator state will be temporarily out of sync but once it gets
connected the indicator will sync again with the correct state.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1386
2020-08-11 21:53:20 +02:00
Florian Müllner
51537cf31c panelMenu: Destroy menu before chaining up
This avoid some (harmless but annoying) warnings, and is closer to
the original code prior to commit fc342fe8c5 and 557b232c89.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3022
2020-08-11 21:52:38 +02:00
Florian Müllner
a3d2cfa503 popupMenu: Ungrab when removing active menu
While we do have some handling for removing the active menu, it has
been a no-op for years. The bit that we really care about from the
PopupMenuManager's point of view is the existing grab though. Drop
that instead of calling _closeMenu() directly; ungrabbing will still
call the method indirectly, and it will still be a no-op :-)

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3022
2020-08-11 21:52:38 +02:00
Florian Müllner
f36e4b6ed5 layout: Only show ripple animation when overview was toggled
On X11, clients can grab keyboard on pointer (for example for popup
menus), and as a result the pushModal() call when opening the overview
fails.

However when the hot corner was used to toggle the overview, we still
show the ripple animation in that case, which is confusing as the action
did not actually happen.

Fix this by only showing the ripples if the overview is animating after
calling toggle(), as that should be a reliable indication of whether
the call was successful.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3005
2020-08-11 21:51:59 +02:00
Emre Uyguroglu
40a003e5ac keyboard: Fix missing icons in Keypad
This is more fallout from commit 57669bca1b.

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


(cherry picked from commit 6b78f58a75)
2020-08-09 14:06:31 +00:00
Sebastian Keller
5fa6996210 appDisplay: Schedule relayout after adaptToSize on app folder icon grid
AppFolderDialog was calling adaptToSize from its alloc vfunc, which
changed the spacing of the icon grid after its size used to calculate
the adjustment for scrolling had already been determined. This was
resulting in the app folder not being able to scroll all the way to the
end the first time it has been opened.

Fix this by scheduling a relayout. This however can not be done
immediately after the adaptToSize call on the iconGrid, because this is
called from within an alloc vfunc. So instead use Meta.later_add to
ensure it gets called after the alloc, but before the next redraw.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2535
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1378
2020-08-08 11:31:06 +00:00