19478 Commits

Author SHA1 Message Date
Florian Müllner
38c6293f4f data: Generate dash/app-grid defaults from text files
Defining default apps as serialized GVariants isn't very human-friendly,
which likely contributes to the fact that the lists are in parts horribly
outdated (Books! Cheese! Screenshot! gedit!).

Instead, generate the lists at build time from simple text files, which
should be much easier to update.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3632>
2025-02-13 19:59:17 +00:00
Keyu Tao
33354c718f windowPreview: Adjust WindowPreview stack when stackAbove overlay shown
When there are 3 or more windows in WorkspaceLayout, showing or hiding
window preview overlay in some certain orders could cause
inconsistencies in windows' vertical arrangement.

Let's take window A, B, C as an example. Initially, A is above B and B
is above C in workspace layout like this: A -> B -> C.

After opening activities, user could:

1. Move cursor to B preview, which would move B above all in layout:
   B -> A -> C
2. Move cursor from B to C preview. When C's showOverlay() is called
   before B's hideOverlay(), _restack() would move C above all and don't
   change B's arrangement:
   C -> B -> A
3. Finally, move cursor away from C's preview:
   B -> A -> C

In this case, when user closes Activities, they would see window
stacking wrong for a while.

This commit adds some extra logic in _restack, checking the
_stackAbove's _stackAbove when this._stackAbove._overlayShown is true.
Though it's still not guaranteed to be always consistent as there could
be several WindowPreview with _overlayShown as true if pointer moves
really fast, this helps avoid glitches in many cases.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4638.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3460>
2025-02-13 12:38:19 +00:00
Florian Müllner
5115236703 loginManager: Get user proxy for UID
Using the user object at `/org/freedesktop/login1/User/self` is
convenient, but has the caveat that login1 does not emit the
`PropertiesChanged` signal for the object.

That is indeed logical, as for signal emissions there is no
sender that can be used to resolve `self`.

The new TimeLimitsManager depends on change notifications for
user properties, so stop using the `self` shorthand and instead
create the User proxy for the user's UID.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8185
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3636>
2025-02-13 11:31:34 +00:00
Florian Müllner
a719b7039e loginManager: Create session proxy asynchronously
Most of the function is already asynchronous, except for the
initialization of the returned proxy. gjs' D-Bus wrapper gained
some convenience API a while ago that makes this trivial enough,
so use it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3636>
2025-02-13 11:31:34 +00:00
Sebastian Wick
a7cc1e626a keyboard: Rely on tecla to figure out the current layout
Tecla shows the current layout, and keeps track of layout changes, if no
arguments are passed to it. This is exactly the behavior we want for the
"Show Keyboard Layout" button.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3635>
2025-02-13 03:58:23 +00:00
Florian Müllner
317bfd6ce1 ci: Bump mutter image
This pulls in a newer gjs, so we can test against the upcoming
version instead of the last stable release.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3637>
2025-02-13 04:45:42 +01:00
Florian Müllner
4265b9c73f st: Add getter/setters for (almost) all properties
Traditionally, getter/setter functions have been considered a
C convenience, and we therefore didn't bother to add them for
many properties that are only consumed from JS.

However now that gjs optimizes property accesses by calling the
appropriate getter/setter instead, it makes sense to add them.

Leave out ScrollView's [vh]scrollbar-policy properties, as they
have a combined `set_policy()` setter that is consistent with
GTK's ScrolledWindow.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Florian Müllner
dc1298565d st: Annotate getters/setters
Some properties have getters and setters that don't follow the
usual naming scheme, and they are therefore not recognized
automatically. Annotate the properties so that g-ir-scanner
picks up the methods.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Florian Müllner
4092882005 st/adjustment: Remove return value from private setters
Nothing is using the return value, so the methods can just follow
the usual pattern for setters.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Florian Müllner
01824a6d4e shell: Add getter/setters for all properties
Traditionally, getter/setter functions have been considered a
C convenience, and we therefore didn't bother to add them for
many properties that are only consumed from JS.

However now that gjs optimizes property accesses by calling the
appropriate getter/setter instead, it makes sense to add them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Florian Müllner
51b5358b71 shell: Fix return values in precondition guards
Make sure values returned via `g_return_val_if_fail()` are of
the expected type.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Florian Müllner
73928c9b29 st: Use consistent type for properties/getters
gjs now optimizes property accesses if possible, by calling the
corresponding getter/setter method. For this to work, the method
not only has to exist (obviously), but also match the type of
the corresponding property.

Both `Label` and `Entry` currently define their `clutter-text`
property as `Clutter.Text`, while the corresponding getter
returns the more generic `Clutter.Actor`.

Fix that so that both property and getter use the more specific type.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Florian Müllner
f79e5ad42b shell/global: Use consistent type for properties/getters
gjs now optimizes property accesses if possible, by calling the
corresponding getter/setter method. For this to work, the method
not only has to exist (obviously), but also match the type of
the corresponding property.

For some reason the `Global.stage` property is defined as
`Clutter.Actor` instead of `Clutter.Stage`, which is returned
by the getter.

Fix that so that both property and getter use the more specific type.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3620>
2025-02-12 13:11:11 +00:00
Julian Sparber
ef4af961bf messageList: Floor preferred height of LabelExpanderLayout
This fixes the flickering when expanding/collapsing an expandable
message inside a NotificationMessageGroup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
b4113b1ee2 messageList: Highlight expanded group
The new design requires that other messages and groups are faded when the user
has a group expanded. This introduces a new GLSL shader to provide the
desired effect. The new shader is used for the already existing scroll
fade and the previous one is removed. The two fades need to work together to
ensure that resulting fade looks good.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
a795dfb2ff messageList: Center expanded notification group in view
Ensure that when the user expends a group, it is scrolled to and centered
in the in the `MessageListView`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
aac7c125ce messageTray: Increase max messages per source to 10
After introducing message grouping by source we can safely show much
more messages per source.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
47de83a922 messageList: Make notification groups expandable/collapsible
This implements the new expand/collapse feature for notification groups
according to the new notification designs [1].

[1] 9e2bed6f37/notifications-calendar/notifications-grouping.png

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
dae4179b3d messageList: Add grouped notifications to MessageView
This makes use of the NotificationMessageGroup widget introduced in the
previous commit to add notifications to the MessageView.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
219cd88c82 messageList: Add notification group
This add a widget for the new notification grouping
according to the new designs [1], but the expand behavior will be added
in a future commit.

[1] 9e2bed6f37/notifications-calendar/notifications-grouping.png

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
0ac129bbd6 messageList: Prepare MessageView for notification groups
We need to track message order separate from the widget children order,
because of how notification groups will add a cover over other messages
when a notification group is expanded that will prevent interaction with
any message other then the expanded notification group.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
95c21bbb19 messageList: Allow disabling automatic resizing of ScaleLayout
For notification grouping we don't always want to resize the message
container when adding or removing a message. This adds the option so it
can be disabled when not wanted.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
b4c74ee168 messageList: Add back media source to MessageView
Adds back the media/mpris message source to the MessageView, it was
previously dropped because of the widget restructure needed for message
grouping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
b2829ac066 calender: Use MessageList.MessageView to display messages
Fully drop message list sections, since we don't use them anymore.
The messages and notifications of different sources will be added to the
MessageView in a later commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
996480908d messageList: Cleanup MessageView before adding new features
This removes some unneeded children, cleans up the API of the
MessageView and changes legacy coding style.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
6e86110dfd messageList: Rename MessageSection to MessageView
For message grouping by source we need more control over the list of
messages to reflect this change rename the MessageSection to
MessageView. Message from different sources will be added to the
MessageView directly in a future commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
9b13bf552a messageList: Drop all subclasses of MessageListSection
For message/notification grouping by source we need more control over
each single message therefore in a future commit the
MessageListSection will contain all messages directly instead of having
a separate section for different source (notifications and media).
The lost NotificationSection and MediaSection will be readded in a
future commit as well.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Daniel van Vugt
c9cd4fbcd0 animation: Add (integer) geometry scaling support to Spinner
Until now it only supported (float) fractional scaling.

Since the SpinnerContent requires a Clutter size in logical pixels,
we need to specify that at map time when the scaling factor is known.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8126
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3634>
2025-02-11 12:00:08 +08:00
Florian Müllner
4f5cd433b2 screenshot: Fix notification
St.ImageContent.set_bytes() now has an additional Cogl.Context
parameter.

Fixes: 44b84e458a ("st/image-content: Take a CoglContext on set_bytes/set_data functions")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8190
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3631>
2025-02-09 09:49:02 +00:00
Jordi Mas i Hernandez
3726161bfd Update Catalan translation 2025-02-08 10:48:44 +00:00
Florian Müllner
2a41ce6407 ci: Pull in defaults/workflow from template
The template was added recently, so the same rules don't have
to be replicated by every project.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3630>
2025-02-07 01:57:22 +01:00
Florian Müllner
201bbe48af ci: Includes templates from project
Now that the freedesktop templates are mirrored on GNOME infrastructure,
we don't have to include them via HTTPS anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3630>
2025-02-07 01:57:22 +01:00
Florian Müllner
914df43d1e ci: Consistently use dashes in job/stage names
We currently have a mix of dashes and underscores, with the former
being predominantly used by newer jobs, so settle on that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3630>
2025-02-07 01:57:22 +01:00
Marco Trevisan (Treviño)
71da3048a1 status/powerProfiles: Use newer DBus API
Since some time the power-profiles-daemon project has been moved under
the upower umbrella and renamed its API to follow that.

While the legacy name is still supported, there are plans to not support
it anymore in future [2]. So let's update gnome-shell code to use the
current main name instead.

[1] https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/merge_requests/148
[2] https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/merge_requests/166

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3629>
2025-02-07 01:03:27 +01:00
Cheng-Chia Tseng
5e2e6042a5 Update Chinese (Taiwan) translation
(cherry picked from commit f5b88791f9a031e6e82171c5afab8a6da3e52bba)
2025-02-06 08:39:13 +00:00
Florian Müllner
9ecc278e29
Bump version to 48.beta
Update NEWS.
2025-02-05 00:36:41 +01:00
Florian Müllner
a73a4f8455 loginDialog: Support loading banner message from file
Support the new `banner-message-path` and `banner-message-source`
settings, which allows loading the banner message from a path
instead of GSettings. This is mainly useful for `/etc/motd` and
similar mechanisms, to show the same message for both graphical
and non-graphical logins.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3558>
2025-02-04 13:10:10 +01:00
Florian Müllner
5f92c12c72 loginDialog: Update banner asynchronously
We will soon allow reading the banner text from a file. Prepare
for that by making the method asynchronous.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3558>
2025-02-04 13:10:10 +01:00
Florian Müllner
f328eee88c loginDialog: Split out getBannerText() helper
The new methods will make it easier to add alternative sources
for the banner text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3558>
2025-02-04 13:10:09 +01:00
Florian Müllner
52256a3b4a ci: Bump mutter image
Bump the image to pull in additions to the org.gnome.login-manager
schema.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3558>
2025-02-04 13:10:06 +01:00
Florian Müllner
45ff3f9e1e dbusService: Handle shell restarts better
Our D-Bus services don't make sense outside a GNOME session, so
they shut down automatically when gnome-shell is not on the bus.

However this does not only apply when activating a service from
a non-GNOME session, but also when restarting gnome-shell on Xorg.

This is particularly problematic for services that shut down
automatically, as they lose all tracking state, even when
re-activated.

Address this by queuing a shutdown check instead of shutting down
immediately, so that the service can pick up the new shell name
provided it appears before the timeout (i.e. two seconds).

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7843
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3463>
2025-02-04 12:22:59 +01:00
Florian Müllner
43dfb49722 dbusService: Watch shell name from implementation
The service implementation already has to resolve the shell's
unique name to exclude it from sender tracking.

It can just as well take care of watching the shell D-Bus name,
which simplifies the code and will allow for more flexibility
when handling the shell disappearing from the bus.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3463>
2025-02-04 12:22:59 +01:00
Florian Müllner
04fd4b2503 ci: Bump mutter image
Mutter now requires a newer libei, pull it in.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3627>
2025-02-04 12:13:18 +01:00
Julian Sparber
03e5d4bdd8 messageList: Drop unused Message._onDestroy()
This method isn't used and users (e.g extensions) of `Message` can connect
to the destroy signal if they need it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
88f551d0a8 messageList: Reduce flexibility of section visibility
Section visibility has become less complex when moving events
out of the message list. We no longer need different behavior
in different sections, so we can instead control the visibility
of the entire list in a single place.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
0c6f896d4b mpris: Move widgets to messageList.js
Widgets for other type of messages (notifications) are already in
`messageList.js` therefore move widgets for mpris also there.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
c102d8c5ba mpris: Split widgets from data objects
Separate widgets from data objects so that in a future commit the
widgets can be moved to messageList.js

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
45d7b9673a messageList: Fix warning when user activates a message while removing
The `Notification` object is destroyed before the `Message` widget so
during the removal animation the user still could click on the `Message`
and activate the notification. This ensures we don't warn about it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
bf76553287 messageList: Use default signal handler for closing notifications
And change the `close` signal on `Message` to run the default handler
last, which allows other signal handers to stop the signal emission
chain.

This change shouldn't have much effect on existing code but will be
needed for by-source notification grouping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
6fa76cd8f4 messageList: Use notification-removed signal in MessageListSection
Since we have now the `notification-removed` signal on
`MessageTray.Source` we can use it instead of connecting to the
`destroy()` signal for each single notification in the
`MessageListSection`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00