19478 Commits

Author SHA1 Message Date
Florian Müllner
9b9191e858 runDialog: Require matching key-press for ESC shortcut
Both popover menus and dialogs can be dismissed with the Escape key,
however the former triggers on key press, while the latter triggers
on key release. As a result, the same key press+release can dismiss
both the command entry's context menu and the run dialog itself.

Fix this by only triggering a key shortcut when a matching key press
was recorded before, which matches how Dialog handles button shortcuts.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8132
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3585>
2025-01-04 00:29:14 +01:00
Maximiliano Sandoval
50ce1fcee7 extensions-app: Allow closing window with ctrl+w
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3577>
2025-01-02 16:06:06 +00:00
Bartłomiej Piotrowski
e1be874a5f ci: Switch to GNOME GitLab mirror of ci-templates
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3580>
2025-01-02 14:35:49 +00:00
Cas Pascal
0e53dd22aa Update Vietnamese translation 2025-01-01 06:54:12 +00:00
Bilal Elmoussaoui
8fbaa5e55a Adapt to split clutter/pango
In https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4106, all of
the fonts rendering related bits are now behind a build option and under
a different header.

So we bail out if mutter was built without it & make sure we include the
new clutter-pango header where needed.

<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3544>

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3544>
2024-12-28 13:39:31 +01:00
Vasil Pupkin
9a0261f102 Update Belarusian translation 2024-12-28 09:05:22 +00:00
Florian Müllner
58a1e000fa animation: Use new spinner content
Change the dedicated Spinner widget to use the corresponding content
instead of subclassing AnimatedIcon with appropriate assets.

Other than the changed class hierarchy, the public API stays the
same, so the impact on callers should be minimal.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8055
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3565>
2024-12-24 15:37:20 +00:00
Florian Müllner
9783f72d74 st/spinner-content: Add ClutterContent for a loading indicator
Last cycle, libadwaita added a new Spinner widget whose visuals
we should adapt. It loops extremely slowly though (a framerate
of 60fps would require 3180(!) frames), which means our current
asset-based implementation isn't well-suited for the job.

Instead, reimplement the underlying GdkPaintable as ClutterContent.
This does not only ensure consistency with libadwaita, but also
gives us more flexibility by picking up style information from
the widget the content is attached to.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3565>
2024-12-24 15:37:20 +00:00
Artur S0
2508325ad7 Update Russian translation 2024-12-19 16:09:29 +00:00
Michel Dänzer
60dd2cd7a8 lightbox: Use variable magnitude for dithering noise
The magnitude of the noise in the final output scales with:

 1.0 - cogl_color_out.a

A fixed value for the magnitude relative to cogl_color_out.a might be
too small for large cogl_color_out.a or too large for small
cogl_color_out.a (or possibly even both).

Compensate for this to achieve constant magnitude in the final output.
The coefficients were determined experimentally as a compromise between
preventing colour banding with dark background content and tolerable
noise with bright background content.

This helps for the issue described in
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7795 .

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3572>
2024-12-16 15:17:25 +00:00
Florian Müllner
cbfcf17002 breakManager: Fix (un)inhibiting unredirection
The BreakManager is a relatively recent addition, which is probably
why commit 4034e69d0d8e1 missed it.

Fixes: 4034e69d0d ("Adapt to fixed Meta functions namespace")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3575>
2024-12-16 14:52:11 +01:00
Florian Müllner
f89276fc56 magnifier: Fix (un)inhibiting unredirection
The methods for (un)inhibiting unredirection are on the compositor,
not the display.

Fixes: 4034e69d0d ("Adapt to fixed Meta functions namespace")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3575>
2024-12-16 14:40:45 +01:00
Bilal Elmoussaoui
4034e69d0d Adapt to fixed Meta functions namespace
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3546>
2024-12-11 19:58:23 +01:00
Bilal Elmoussaoui
961075d0e4 lg: Use Clutter functions directly
Instead of the duplicated ones in Meta as they will be removed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3546>
2024-12-11 19:56:26 +01:00
Bilal Elmoussaoui
4980b4fce0 app-system: Mark as a final type
Also use subclassing macros

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
8d8f150685 network-agent: Mark as a final type
Also use subclassing macros

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
ab41daefcf screenshot: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
71ecb8e6cd mime-sniffer: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
791cbc7d5d mount-operation: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
910565a09a tray-manager: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
e2a7d3753f theme-node-transition: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
6ea7253322 texture-cache: Mark as a final type
It was already declared as such, so get rid of the priv boilerplate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
37282383fc st/box-layout: Remove deprecated & unused pack-start property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3525>
2024-12-11 16:50:54 +00:00
Bilal Elmoussaoui
2a0ed7cf53 ci: Adapt to updated release module template
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3573>
2024-12-11 13:57:15 +01:00
Bilal Elmoussaoui
99ac42d438 Revert "ci: Use meson introspect to generate artifact path"
This reverts commit 27445a1c98a463bcb826edae9850972c3616b90c.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3573>
2024-12-11 13:55:43 +01:00
Bilal Elmoussaoui
64d5d01360 st: Merge ClutterImage with ImageContent
ClutterImage as is, is very basic and doesn't really serve any purposes
other than being inherited by StImageContent. As we cannot easily push
ImageContent to Mutter by merging it with ClutterImage because it will
bring more GdkPixbuf usages and also because Clutter doesn't really deal
with theming bits.

Instead, merge it with StImageContent and let GNOME Shell take over from
here.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3547>
2024-12-09 12:34:42 +00:00
Bilal Elmoussaoui
ea88ba687e st/image-content: Remove usage of private struct
As it is a final type.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3547>
2024-12-09 12:34:42 +00:00
Florian Müllner
4cff5e4572 tools/toolbox: Work around systemd issue
systemd-sysext currently messes up SElinux labeling[0].

As a workaround, we can delegate to the systemd-sysext service
that doesn't exercise the same issue.

[0] https://github.com/systemd/systemd/issues/34387

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:30 +00:00
Florian Müllner
4847d8bc95 tools/toolbox: Document new sysext tooling
Add a small section to outline how to combine `meson-build.sh --sysext` and
`toolbox-sysext-install.sh` to install a system extension from our toolboxes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:30 +00:00
Florian Müllner
af96549515 tools/toolbox: Add toolbox-sysext-install.sh script
The new command will take an extension directory set up
with `meson-build --sysext` inside a toolbox, and turn
it into a merged system extension on the host.

Namely it will
 1. copy the extension directory from the container to the host
 2. set up the extension-release file expected by systemd-sysext
 3. compile gsettings schemas if necessary (using the merged
    schemas directory)
 4. install the extension to either runtime or system
 5. merge the extension

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:30 +00:00
Florian Müllner
886481beb1 tools/toolbox: Install sysext dependencies if necessary
While the toolbox image itself has all necessary dependencies to
build and run the shell, we still need them in the destdir when
building a system extension.

Achieve this by running .gitlab-ci/install-common-dependencies.sh
if it exists, which is the script that is used both for gnome-os
system extensions and mutter's CI image.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:30 +00:00
Florian Müllner
2df35aaa73 tools/toolbox: Add --sysext option to meson-build
When specified, the project is installed to a separate destdir
inside the container instead of the container's root filesystem.

This can be used to install several projects into a common extension
directory:

```
 $ (cd mutter; meson-build.sh --sysext) &&
   (cd gnome-shell; meson-build.sh --sysext)
```

We will later add a separate command to extract the directory
from the container and turn it into a system extension suitable
for use with systemd-sysext.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:30 +00:00
Florian Müllner
fd4320156c ci: Change update-mutter to also install to sysext dir
Out development toolbox contains an `update-mutter` command to
make it easier to keep mutter up-to-date for people who only
want to deal with gnome-shell.

To allow them to make use of the new sysext tooling, change the
command to install both to the toolbox root and the sysext
directory.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:29 +00:00
Florian Müllner
52a293c032 ci: Make --destdir option in install-meson-project cumulative
When building a system extension for GNOME OS, any extra
dependencies are needed both in the container (for building)
and the extension's destdir (for running).

Because of that, the --destdir flag that was added in commit
8aeb6dc86 does not only install to the specified directory
as expected, but also runs a second install step without
destdir (i.e. to the system).

However that behavior is not a good fit when we extend our
existing toolbox tooling to build system extensions for
Fedora instead of GNOME OS.

To account for that, make the --destdir option cumulative
and install the project to all provided destdirs (or /
if omitted).

This gives us the flexibility to install to the system, a
different destdir, or both:

```
 $ ./install-meson-project.sh  # install to system
 $ ./install-meson-project.sh --destdir /new/dest  # install to destdir
 $ ./install-meson-project.sh --destdir /new/dest --destdir /  # both
```

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3498>
2024-12-05 12:57:29 +00:00
Georges Basile Stavracas Neto
5434e02988 Revert "ci: Temporarily allow build-sysext CI job to fail"
This reverts commit aacc968f0e2829e094bfb693b1180149d05ceba4.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3570>
2024-12-04 18:19:39 -03:00
Georges Basile Stavracas Neto
b57f762167 Revert "ci: Temporarily neutralize image build job"
This reverts commit 942f7e87be41c5507c9127d69922f7b432ea729a.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3570>
2024-12-04 18:19:30 -03:00
Georges Basile Stavracas Neto
942f7e87be
ci: Temporarily neutralize image build job
It's failing CI too often, and too consistently. This should be
reverted once CI failures are gone.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3569>
2024-12-03 16:02:59 -03:00
Georges Basile Stavracas Neto
572fe52f94 st: Adapt to paint node changes
See https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4160

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3569>
2024-12-03 17:25:53 +00:00
Martin
3bc2ab6ba9 Update Slovenian translation 2024-12-01 09:25:01 +00:00
Florian Müllner
5d8905c5c7 data: Really strip .desktop suffix from folder directory
Commit 730fcf34e9 was meant to strip the .desktop suffix from the
desktop directory file, but failed to actually do so: The replace()
method is called on the string parameter before it is passed to
the meson command which substitutes `@BASENAME@`, so it doesn't
have any effect at all.

Really fix the issue by providing the full output name.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3567>
2024-11-29 19:49:02 +01:00
Florian Müllner
88e19ff32e ci: Update JS image to F41
The main image was already updated a while ago, let's do the
same for JS tooling.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3563>
2024-11-29 12:09:52 +00:00
Philip Withnall
aacc968f0e ci: Temporarily allow build-sysext CI job to fail
GitLab is currently timing out a lot, and the number of consecutive `git
clone` operations which the `build-sysext` job does is basically
guaranteed to fail at some point. I’ve tried one CI run 30 times in a
row without success.

Temporarily allow this job to fail until GitLab is fixed.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3251>
2024-11-28 10:44:17 +00:00
Philip Withnall
df3b4d302d breakManager: Add new state machine for screen time/health breaks
This implements health break reminder support in gnome-shell. It depends
on a
few bits and bobs from other modules:
 - New settings schemas in gsettings-desktop-schemas (released in
   47.beta, which Mutter already depends on)
 - A settings UI in gnome-control-center
 - User documentation in gnome-user-docs

It implements the design from
https://gitlab.gnome.org/Teams/Design/settings-mockups/-/blob/master/wellbeing/wellbeing.png.

The core of the implementation is `BreakManager`, which is a state
machine which uses the Mutter `IdleMonitor` to track whether the user
is, or should be, in a screen time break.

The `BreakDispatcher` is based on top of this, and controls showing
notifications, countdown timers, screen fades, the lock shield, etc. to
make the user aware of upcoming or due breaks, as per their notification
preferences.

Unit tests are included to check that `BreakManager` works. These
provide mock implementations of basic GLib clock functions, the
`IdleMonitor` and `Gio.Settings` in order to test the state machine in
faster-than-real-time.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

See: https://gitlab.gnome.org/Teams/Design/initiatives/-/issues/130
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3251>
2024-11-28 10:44:10 +00:00
Philip Withnall
03e3d9f435 messageTray: Add removeAction() method and allow references to actions
Internally in gnome-shell it may be useful to modify the actions
available on a notification while it’s still visible, but without
clearing them all and re-creating them.

Allow that by returning the action object when adding it, and adding a
`removeAction()` method which takes that object and removes it.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3251>
2024-11-28 10:44:02 +00:00
Yaron Shahrabani
e9ca27c663 Update Hebrew translation 2024-11-25 08:44:43 +00:00
Daniel Rusek
de4f1c3f9f appDisplay: Remove deprecated apps from Utilities, fix desktop file name
gnome-system-log, vinagre and gnome-dictionary were deprecated a long time ago

The gnome-abrt desktop file name was also changed a long time ago to a rDNS one

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3539>
2024-11-23 13:35:02 +00:00
Sam Hewitt
6912d31068 style: Improve contrast of empty notifications tray message
- lower how opaque the text is for the message
- redraw the icon asset to be outline as to make it feel less heavy at the brighter color

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7852
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3557>
2024-11-22 12:33:45 -03:30
Jonas Dreßler
12d2532154 keyboard: Switch back from shift to default level on more situations
If the shift key was pressed, we should switch back to the default level
after the next commit. It seems that this only worked due to a superfluous
signal emission so far (see https://gitlab.gnome.org/GNOME/mutter/-/issues/3448).

When the keyboard is in this "shift" level (note: only "shift", not
"opt+shift" level) without being latched, there are certain events that
should put it back into the default level:

- A normal character key on the OSK being pressed
- A keyval on the extended OSK (eg. TAB key or an arrow key) being pressed
- The backspace key being pressed
- The OSK being hidden
- The user moving focus in the entry

The `_updateLevelFromHints()` function already takes care of updating the
active level after certain kinds of events, we can achieve the desired
behavior by adding a fallback case to that function where it moves the level
back from "shift" to "default".

Since we only want this switch back to the "default" layer as a response to
actual user input, add a `userInputHappened` boolean to
`_updateLevelFromHints()` and don't set that when the application simply
changes its content hints.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3286>
2024-11-19 20:23:25 +01:00
Jonas Dreßler
cae8b745ca keyboard: Don't press and release keyval if it's a modifier key
Looks like we currently do the press-and-release dance for keys that specify
both a keyval and the "modifier" action. So when pressing CTRL in the
extended OSK, not only is the CTRL modifier set together with the next key
pressed, but the actual CTRL keyval quickly gets pressed and released,
similar to how we'd do it for the TAB key.

This seems unintentional, as the press-and-release behavior should probably
be specific to keys like TAB, and not apply to modifier keys, so limit that
behavior to only keys without an action specified.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3286>
2024-11-19 20:23:25 +01:00
Jonas Dreßler
91ffc4c06b keyboard: Don't check for key.action using strict equality operator
A lot of keys have no action set. In that case key.action is `undefined`,
but the strict equality check of `action !== null` here will return true and
we'll enter the if-case anyway.

That's quite confusing and was not intended like that, so change the
comparison to a less-strict operator.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3286>
2024-11-19 20:23:25 +01:00