8728 Commits

Author SHA1 Message Date
Carlos Garnacho
412081a689 magnifier: Keep accounting of own cursor unfocus inhibition
Do not rely on global state since there may be more users of it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3028>
2024-02-13 11:49:28 +00:00
Jonas Dreßler
5c0c1b15f8 screenshot: Also do pipeline fallback on screencast crashes during startup
Since the last commit, we have infrastructure in place in the ScreencastService
to blocklist pipelines which crashed the recorder.

If such a crash happens a few minutes into a screencast, we can't do any better
than telling the user about the problem and encouraging them to try again (with
the faulty pipeline now blocklisted).

If the crash happens while starting the recording though, we can actually do
better: We can try to auto-restart the ScreencastService ourselves, and the
recording might still succeed without the user noticing anything. So retry
that start of the recorder for two more times, and then finally give up.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2976>
2024-02-11 12:36:23 +01:00
Jonas Dreßler
b6bfe07137 screenshot: Blocklist the current screencast pipeline if recorder failed
When gstreamer crashes during recording, it pulls the whole screencastService
down with it.

These crashes are typically caused by the gstreamer pipeline that's in use,
so to avoid running into them again and again, we can blocklist the last
used pipeline in case the recorder didn't shut down (aka crashed) last time.

To store this state, create a file (gnome-shell-screencast-pipeline-blocklist)
in the XDG runtime dir and store the ID of the current pipeline in that file
before we try to start.

Now when we crash while running the pipeline, the entry in that file will stay
around and we'll pick it up on the next start of the screencastService as a
blocklist.

When the recording was successful on the other hand, we'll call
`this._updateServiceCrashBlocklist([...this._blocklistFromPreviousCrashes])`
and remove the new entry from the file again before shutting down the recorder.

In addition to that, we can now encourage the user to try recording again
after a crash happened. Adjust the failure notification a bit to say
"please try again".

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2976>
2024-02-11 12:34:54 +01:00
Jonas Dreßler
ce613f5d15 screenshot: Show a special error when screencast ran out of disk space
Since we now propagate error types back to gnome-shell now, let's start
with showing a special error message in case the disk ran out of space,
which is probably the most typical error.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2976>
2024-02-11 11:32:19 +01:00
Jonas Dreßler
7133fac91f screenshot: Handle screencast startup failures using special notification
When the screencast fails to start, we currently don't really inform the
user, other than the red screencasting indicator in the panel going away.

Re-use the failure handling paths to also show a notification when the
screencast fails to start. The notification in this case obviously should
not have an action to open a file (there is no file), so make that depend
on whether this._screencastPath is set and unset the path.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2976>
2024-02-11 11:32:19 +01:00
Jonas Dreßler
75f86a6f60 screencastService: Propagate machine-parseable error types to gnome-shell
We'll be using hardware encoding for screencasts soon, so we'll likely see
more things go wrong in the future, including crashes of the whole
screencastService. To deal with this, we'll introduce logic to blocklist
certain recording pipelines in case of failure and also add some logic
to retry the recording automatically.

To allow for better messaging to the user in those failure cases, we want
to be aware in gnome-shell, what exactly the error in the recorder was.

So propagate the most common types of errors that can happen in the
ScreencastService to gnome-shell using the new DBusError module.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2976>
2024-02-11 11:32:19 +01:00
Bilal Elmoussaoui
9c7e1f1180 layout: Stop using deprecated display property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3178>
2024-02-09 19:04:53 +01:00
Florian Müllner
b09eced160 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>
2024-02-09 17:32:57 +01:00
Florian Müllner
02c85fbb64 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>
2024-02-09 17:32:57 +01:00
Florian Müllner
bb918fff3c messageTray: Remove _createPolicy() hook
It is now unused (at least in gnome-shell itself).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3170>
2024-02-09 11:12:51 +00:00
Florian Müllner
3fc7ed4088 notification: Pass policy in the Source contructor
Commit 932ccac1 changed Source to use a regular constructor
instead of `_init()`.

Unfortunately that results in ordering issues for subclasses
that override `_createPolicy()`, if that method needs to access
any properties that are set in the constructor (as `this` is
only available after chaining up to the parent).

We can fix that by simply setting the policy from the constructor,
instead of relying on some overriden method being called.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3170>
2024-02-09 11:12:51 +00:00
Florian Müllner
810391f41e messageTray: Add NotificationPolicy.newFromApp()
We have several places where we create an application policy
from an app if possible, and fall back to a generic policy
otherwise.

Make that more convenient by adding a small helper method.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3170>
2024-02-09 11:12:51 +00:00
Florian Müllner
ebec609207 messageTray: Don't call _createPolicy() unconditionally
Since commit 932ccac1c27, the Source constructor takes a
properties object instead of individual arguments.

That means that the policy may now be set through a construct
property, and we shouldn't override it if that was the case.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3170>
2024-02-09 11:12:51 +00:00
Sam Hewitt
4d1ae863d0 switcherPopup: Restore selected pseudo-class
- move styles to switcher-popup
- reverts a change in a code clean up that causes problems with screen readers

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7336
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3127>
2024-02-06 20:09:20 +00:00
Sam Hewitt
628f0b5be9 dateMenu: Fix missing text style for no locations state
- add class to the header when there are no locations so the text appears clickable

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3169>
2024-02-06 19:54:04 +00:00
Julian Sparber
c1ff00c01b notification: Use the same Source for showing system notifications
This drops all subclasses of `MessageTray.Source` that were used to
display system notifications. Now the `Source` returned from
`MessageTray.getSystemSource()` is used.
Ensure also that properties and methods that where set on the `Source`
are moved to the `Notification` object itself.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3156>
2024-02-06 17:25:01 +00:00
Julian Sparber
3faf1caead messageTray: Introduce singleton Source for system notifications
This `Source` object should be used by all notifications created by
GNOME Shell and eventually can also be used by extensions.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3156>
2024-02-06 17:25:01 +00:00
Julian Sparber
daa8ea5ab2 messageTray: Support setting notification icon by name
Since we now display the source icon and an image for the notification,
it's quite common to set an icon from a name. Therefore add a
convenience property to do so.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3156>
2024-02-06 17:25:01 +00:00
Sam Hewitt
4c5cb191d8 style: Fix bg color weirdness on background apps close button
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3140>
2024-02-06 17:14:40 +00:00
Sam Hewitt
da6950562a dateMenu: Add class to menu so border-radius can be set in stylesheet
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3165>
2024-02-05 22:57:01 +00:00
Keyu Tao
5d1a0cc525 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>
2024-02-01 13:17:02 +00:00
Florian Müllner
d54e17d3d5 screenshot: Split out disabling cast button
Screencasts can be disabled for various reasons:

 1. the service is not available (missing plugin etc.)
 2. screencasts are not allowed by the session mode
    (lock screen etc.)
 3. the UI is invoked in screenshot-only mode (portal)

Currently each of those conditions is handled in a different
code path, which means that later conditions can re-enable
the button.

There's also an inconsistency whether disabling the button
is done via visibility or reactivity, which still allows
toggling the hidden button via shortcuts (although a hidden
button means that screencasts aren't supported at all, so
nothing will be recorded in that case).

Address this by updating the button from a dedicated function.

Fixes: 671df28a50 ("screenshot: Only handle mode-switch shortcut when
supported")

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7358
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3155>
2024-02-01 12:17:43 +00:00
Julian Sparber
8fed0b83d0 notification: Show symbolic icons in a circle and smaller
Huge symbolic icons look bad therefore we special case them, this
obviously can only work for icons that use the system icons.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3066>
2024-02-01 10:31:24 +01:00
Florian Müllner
f233aebe3a extensionDownloader: Use registered D-Bus error
Instead of returning ad-hoc errors, register a custom error domain
and return appropriate GLib.Errors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3159>
2024-01-31 20:58:31 +01:00
Florian Müllner
f38e3f4b5d notificationDaemon: Use registered D-Bus error
Instead of returning ad-hoc errors, register a custom error domain
and return appropriate GLib.Errors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3159>
2024-01-31 20:58:31 +01:00
Florian Müllner
8f03eec3a3 endSessionDialog: Use registered D-Bus error
Instead of returning ad-hoc errors, register a custom error domain
and return appropriate GLib.Errors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3159>
2024-01-31 20:58:31 +01:00
Julian Sparber
c5cd195506 mpris: Use player Identity if the player app isn't known
For players that don't match to an app, we can still do better than
the generic fallback if the client provides a valid `Identity` value.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
8fdea10e33 notifications: Add header like in the new designs
See:
9e2bed6f37/notifications-calendar/notifications-grouping.png

This also increases the size of the icon to 48px.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6743
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
ff76584937 notifications: Introduce MessageList.Source object
This object contains only the `title` and `icon` of a
`MessageTray.Source` which allows using it for sources
that aren't notification sources like mpris.

The old `MessageTray.Source` isn't renamed to something
less generic to not break API. Once we have a good reason
we should rename it to something more specific.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
932ccac1c2 messageTray: Allow settings gobject properties of Source on creation
This also makes the `icon` property of `Source` writable so that it can
be set during creation instead of overriding the getter of the icon
property.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
c63d67c9af FdoNotifications: Only set the title of a Source once
Even though the comment in the code says that sources are reused even
thought the app title has changed this is actually not the case. Therefore
when ever the app title of a notification changes a new `Source` is
created. Therefore there is no point in setting the app title again.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
00a375ce9b messageTray: Expose Source icon as GObject property
As the notification redesign affects the API anyway, we can just
as well use the opportunity to modernize the code.

Turning the icon into a GObject property means we no longer need
a custom signal for change notifications, and the icon becomes
usable in bindings.

Since setting an `GThemedIcon` is common this also adds a convenience
property to set the icon name directly.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
1b49cc643c messageTray: Remove unused properties from Source
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
b78cc1c62a FdoNotifications: Don't use a fallback for no icon
There is no need to have an icon for every notification, don't add a
fallback.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
eb9118674d notifications: Never use source icon for notifications
With the new design we will show the source icon in the header of a
notification.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
f3cd0aa082 FdoNotification: Highlight difference between icon/image and app-icon
This just renames the `icon` variable to `appIcon` to make clear that
this icon is considered to be the app icon.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
89c602cb62 messageList: Remove secondary actor API from Message
The secondary actor isn't used for anything anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
15056527aa calender: Use datetime property to set timestamp for notifications
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
f8fce24d5c messageList: Add property to display the timestamp of a message
This also adds the needed actor to display the timestamp.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
e89dea80d6 messageTray: Remove the secondary icon from Notification
This was only used by the telepathy client, but after dropping the
presense indicator this isn't used anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
5f7e8d292d telepathyClient: Stop displaying presence in notification
The presence indicator in notification uses API only needed for the
telepathyClient, since it's a complete fringe feature nowadays it's not
worth maintaining specific API for it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Evan Welsh
739725e521 magnifier: Fix isTrackingMouse()
Commit 8aed51180f changed the way mouse tracking is implemented,
but missed updating that function.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2037>
2024-01-30 15:55:29 +01:00
Evan Welsh
c3a764693d magnifier: Removed unused get*Color() methods
They use API from Clutter.Rectangle which hasn't been used in the
magnifier since commit c815979f, and has since been removed from
Clutter altogether.

Since the methods are unused, remove them instead of fixing them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2037>
2024-01-30 15:55:29 +01:00
Suryashankar Das
3cb1fb7428 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>
2024-01-30 03:59:45 +01:00
Andy Holmes
9a528ca7bb cleanup: Remove unused argument from createResultObject()
The `SearchResultsView` is passed through to the `createResultObject()`
method of search providers, but doesn't seem to be used at all anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2901>
2024-01-30 01:49:06 +00:00
Florian Müllner
756f212d66 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>
2024-01-30 01:21:12 +00:00
Jonas Dreßler
4d544d7b56 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>
2024-01-29 23:14:24 +00:00
Jonas Dreßler
de834fe307 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>
2024-01-29 23:14:24 +00:00
Sam Hewitt
d373e10a44 switchMonitor: New assets for switcher items
- include new assets in the symbolic source
- update existing screenshot assets with new display design

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6013
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3128>
2024-01-29 22:47:10 +00:00
Florian Müllner
d0b2351036 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>
2024-01-29 22:40:12 +00:00