Commit Graph

17405 Commits

Author SHA1 Message Date
Jonas Dreßler
eacc55334f appDisplay: Disable overshoot gesture in multi-monitor setups
The "bump against monitor edge" thing can't work when there's a monitor
adjacent to the current one, so just disable the gesture in case there's
more than a single monitor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Dreßler
560565d828 appDisplay: Switch page when hovering the next-page indicator during DND
In addition to the "overshoot/bumping into monitor edge" behavior we already
have, we also want to switch pages when simply hovering above the prev/next
page indicators.

This page switch shouldn't happen immediately though, it needs to be kicked
off using a timeout instead. The reason for that is that the next/prev page
indicators are large areas, and simply dragging there isn't enough of a
gesture to really interpret as "the user wants to switch pages".

After this page switch has been toggled once, it can be repeated using the
same "repeat" timeout we introduced with the last commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Dreßler
549adf3218 appDisplay: Refactor page switching on overshoot
Right now we have a behavior in the appGrid where "bumping" the cursor
against the monitor edge during DND switches the page immediately, and
holding it there (at the monitor edge) switches pages again after a timeout.

With the next commit we'll introduce another way of switching pages during
DND, that is hovering over the next/prev page indicator to switch pages. To
allow those two methods to play well together, refactor the "overshoot" page
switching to make the timeout into a more generic "repeat" timeout. This
means we can now divide page switching can be roughly divided into two
different steps:

- Switch page immediately when bumping cursor against screen edge, also
works when repeatedly "bumping"

- Switch page automatically again after a second when keeping the cursor at
the screen edge without moving

We'll reuse the "repeat" timeout that's introduced here in the next commit,
where we'll introduce page switching by hovering the next/prev indicators.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Dreßler
150866d0bf appDisplay: Apply overshoot threshold to the left as well
We also want to apply this threshold when overshooting to the left, not
only to the right.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Dreßler
550a51d4a8 Revert "appDisplay: Reimplement drag motion using page indicators"
This reverts commit 09b975fabf.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Dreßler
52ed7917f3 Revert "appDisplay: Rename _lastOvershootTimeoutId"
This reverts commit 692de0eb95.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Dreßler
272c770815 Revert "appDisplay: Bring back drag overshoot region"
With MR https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2335,
the page navigation in the app grid was redone and prominent, always visible
navigation arrows were added. This larger change in the navigation of the
app grid also involved changes to the drag and drop behavior.

Before those changes (in GNOME 42), switching pages during DND in the app
grid worked like this: By "bumping" the cursor against the monitor/appGrid
edge, an immediate page switch would be triggered. Leaving the cursor in
that edge area would then trigger repeated page switches every second. By
repeating the "bump" gesture (moving cursor back into the grid, then
"bumping" against the edge again), it was possible to switch pages even
faster than every second.

When adding the always visible navigation arrows, we briefly tried out a
different way of page-switching during DND with commit 09b975fa: The "bump
against monitor edge" gesture (or "overshoot" behavior as it's called in the
code) was replaced with a hover timeout on the navigation arrows. The idea
behind that was to allow hovering the navigation arrow during DND to
eventually trigger a page switch, which also makes sense.

The replacement of the "overshoot" behavior made some people unhappy though,
so it was decided to bring back the old "overshoot" behavior with commit
4dcae8dd. Due to time pressure before the release that didn't go very well
and we ended up with a mixup of both approaches that doesn't feel too
polished.

So let's try to fix that by first going back to the working "overshoot"
implementation as it was in 42, then slightly refactoring that
implementation, to finally incorporate the new "page indicator hover"
behavior that https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2335
originally intended to use.

This reverts commit 4dcae8ddd2.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2581>
2022-12-19 11:37:58 +00:00
Jonas Ådahl
dc3ee1a9a2 tests/background-size: Get backend from global
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2557>
2022-12-16 22:12:59 +01:00
Jonas Ådahl
9da02ea6f0 st/test-theme: Get backend from context
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2557>
2022-12-16 22:12:59 +01:00
Jonas Ådahl
c1d66af4b9 js: Get monitor manager from backend
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2557>
2022-12-16 22:12:59 +01:00
Jonas Ådahl
8d68bdaaa1 js: Queue 'later' via MetaLaters
This replaces the meta_later_add() API which used now removed global
singletons under the hood.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2557>
2022-12-16 22:12:59 +01:00
Jonas Ådahl
387317aadc shell/global: Add 'compositor' property
This is a convenience property for accessing the MetaCompositor
instance.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2557>
2022-12-16 22:12:59 +01:00
sunflowerskater
d4f154ad26 appmenu: Change "Show Details" entry label to "App Details"
"Show Details" doesn't give a clear indication of what it does.

This commit changes this entry label to "App Details" following the recommendation from:
https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2186#note_1611964

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2585>
2022-12-15 19:53:19 -03:00
Florian Müllner
1a9e072ca0 fileUtils: Do not follow symlinks
Extensions should not include symlinks, in particular ones that
point outside the extension directory. However if they do, then
we should only move/remove the link rather than the files it
points to.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2571>
2022-12-15 22:34:26 +00:00
Sebastian Keller
69600f3bfd gitlab: Add a comment about disabling extension to the issue template
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2576>
2022-12-15 19:07:08 +00:00
Felipe Borges
0be20aba88 search: Stop special-casing GNOME Settings on search
See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1282#note_1617502

From the chat:
<aday> i think it's fine to allow people to disable settings search.
<aday> the issue i see here is that the shell doesn't follow the search
results order. settings is always at the top of the results list
<aday> if settings search is to appear in the list, then that should
work as you'd expect

We are also removing the special-casing in the GNOME Settings side,
see https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1555

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2584>
2022-12-15 19:02:02 +00:00
Michel Dänzer
538c7c397a build: Bump mutter API version
To match https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2757.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2579>
2022-12-15 12:20:55 +00:00
Jian-Hong Pan
09c8fb5414 data: Lower down gnome-shell process' OOM score
When GNOME shell runs on a less memory system (for example 3 GB RAM), it
is usually killed by the kernel OOM-killer easily. Because, it has a
higher OOM score. However, GNOME desktop environment cannot do anything
when the GNOME shell is killed.

This commit adjusts and lowers down gnome-shell process' OOM score to
avoid being killed by the kernel OOM-killer too early. In other words,
sacrifices other processes first.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2582>
2022-12-13 13:12:09 +08:00
Jonas Ådahl
a1d650ce27 window-tracker: Emit 'tracked-windows-changed' on title changes
This means the screen share window view gets updated also when the title
of a window changes. This is important since it often changes shortly
after mapping, which would otherwise go unnoticed by
xdg-desktop-portal-gnome.

An example is launching Files and it showing up as 'Loading..', or
launching a terminal, and it not showing the proper title (current
directory), but some place holder that is never visible on the
application window.

Adding it to the window tracker instead of in introspect.js itself is
for convenience - there is no per window signal tracking there, and it
already listens to the signal emissions about changed windows.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2578>
2022-12-12 19:32:51 +00:00
Sebastian Keller
3b216be637 quickSettings: Ensure toggle buttons are aligned with the pixel grid
If the width of the menu was not a multiple of the number of columns,
the toggle buttons after the first column would not be aligned with the
pixel grid. This was causing text rendering issues and slightly blurry
icons.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6210
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2577>
2022-12-12 17:14:08 +00:00
Sebastian Keller
54f112fa59 quickSettings: Use column spacing not row spacing to calculate width
This did not have any not have any noticeable effect, because both are
the same size in the default theme.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2577>
2022-12-12 17:14:08 +00:00
Olga Smirnova
423aab5e11 Add Interlingue translation
(cherry picked from commit a66491eb0d3d15fa5416fa39d5280a37c2c34906)
2022-12-11 23:51:40 +00:00
Florian Müllner
7ea0230a86 doc: Update contribution section
We no longer *require* a merge request URL in commit messages, we
ban them (since Marge is kind enough to add them for us).

While at it, add a small section on prefixes (~~stolen from~~
inspired by mutter).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2572>
2022-12-06 01:49:24 +01:00
Carlos Garnacho
2e8e1fe8fc status/keyboard: Ignore purpose hint changes while keymap switcher is shown
If we are getting purpose hint changes while the language switcher is popped
up, this likely means the purpose hint was actually triggered by the key
focus change induced by the language switcher popping up.

In this case, we on one hand would like to preserve the state that applied
before thise focus change, and on the other we very much want to avoid the
keymap change that would forget about the keys being pressed.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6066
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2534>
2022-12-05 14:50:33 +00:00
Evan Welsh
d918290ac8 extensions: Refactor extension system for asynchronous loading
This commit refactors extensionSystem to load extensions
asynchronously. This will enable loading extensions using ECMAScript
modules in a future commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2364>
2022-12-01 12:59:32 +00:00
Evan Welsh
56beb6ff2b extensionUtils: Add DISABLING and ENABLING extension states
Extensions can export asynchronous enable() and disable()
functions. To guard against re-entrancy when enabling or
disabling an extension, this commit adds two new states:
ENABLING and DISABLING which are set immediately prior
to calling enable() and disable() respectively.

This commit updates the extensions CLI and Extensions app
with new strings for these states.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2364>
2022-12-01 12:59:32 +00:00
Evan Welsh
b7c097ba79 fileUtils: Refactor collectFromDatadirs to be a generator
This change enables mapping each collected file to a Promise in
asynchronous operations.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2364>
2022-12-01 12:59:32 +00:00
Sam Hewitt
577d1ecf41 style: Fix missing border radius on only-child notification buttons
- fixes #6157

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2562>
2022-11-30 14:57:39 -03:30
Sveinn í Felli
fbe7ef4ca8 Update Icelandic translation
(cherry picked from commit afd33f06780185dfdd1ed4bdd79883031a7e43d5)
2022-11-30 09:48:42 +00:00
Florian Müllner
45d1a93328 style: Don't round corners of window screenshot backgrounds
Commit aafa011f2b changed the style to extend `%osd_panel` as
part of improving the High Contrast theme, but in the case of
the window screenshot background we really only want the background
and not other properties like rounded corners or borders.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2561>
2022-11-29 22:59:32 +01:00
Jonas Ådahl
cfaf6601e9 perf-tool: Force animations when running perf tests
This ensures we, unless there is a remote desktop connection explicitly
asking to disable animations, we'll run with animations despite e.g.
hardware acceleration is missing.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2560>
2022-11-29 17:52:56 +01:00
Jonas Ådahl
33d3a65646 ui/main: Allow not inhibiting animations sometimes
When we're running in e.g. CI, or in a virtual machine without hardware
acceleration, and we actually want to enable animations despite the
potential performance implications, change the AnimationsSettings to
only inhibit if we're a XVNC instance or not hardware accelerated if
--force-animations wasn't passed.

Still inhibit animations if there is a remote desktop session that
explicitly disables animations.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2560>
2022-11-29 17:52:56 +01:00
Jonas Ådahl
08d4addeef shell-global: Add 'force-animations' property
Set via a command line argument to gnome-shell. Will allow enabling
animations despite e.g. lack of hardware acceleration otherwise
inhibiting it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2560>
2022-11-29 17:52:56 +01:00
Jonas Ådahl
5bb9843217 ui/main: Don't show welcome screen or root warning with perf tests
If we want to run with the welcome screen showing, it should be done so
explicitly. Hide it if there is a perf test running for now, so that
what we test is what is expected to be tested.

We also don't want to show the root user warning, since we'll be running
as root in the CI containers.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2560>
2022-11-29 17:48:20 +01:00
Jakub Steiner
5aa95007de styling: Don't switch app icons to symbolic for HC
While it's true that white against black has the ultimate contrast, the
  decision to switch fullcolor icons to symbolic has a few negative implications:

    * Apps identities usually lean onto colors, switching to white symbolic
      suddenly makes it harder to identify an app.
    * Many 3rd party apps don't ship a symbolic icon making the experience feel
      unpolished/"under construction".
    * Behavior is inconsistent with gtk/libadwaita.

Part of the HC polish initiative -- https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5799

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2555>
2022-11-28 14:12:33 +00:00
Florian Müllner
1b62b7ea0a status/volume: Clear device menus when unsetting stream
Otherwise we end up accumulating devices when pipewire crashes or
is restarted.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2558>
2022-11-28 00:00:21 +00:00
Vasil Pupkin
e752aa75fc Update Belarusian translation 2022-11-27 21:25:09 +00:00
Jonas Ådahl
207b9bb3c0 tests: Fail on warnings too
Getting warnings are always bad and means something is broken, we
shouldn't pass the test suite with them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:10:27 +01:00
Jonas Ådahl
a13a2dca66 perf-tool: Add --wrap to wrap the gnome-shell call
This allows neat tricks like first arranging the script `fakegdb`:

```sh

function ignore_gdb_arg() {
    if [[ "$1" == "--quiet" ]] || [[ "$1" == "--args" ]]; then
	    return 1
    else
	    return 0
    fi
}

ignore_gdb_arg "$1" || shift
ignore_gdb_arg "$1" || shift

echo exec "$@"
```

then running

```sh
meson test -C build -v perf-basic --test-args '--wrap "gdb --args"' --gdb --gdb-path `which fakegdb`
```

To make it possible to run the perf test case with gdb running the
actual gnome-shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:54 +01:00
Jonas Ådahl
4c6bc1ed00 perf-tool: Port to argparse
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:54 +01:00
Jonas Ådahl
f4934c0421 tests/perf: Use custom solid background in tests
They don't measure performance, and we don't want to have to install
gnome-backgrounds, so bundle a solid color background image to use
instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:54 +01:00
Jonas Ådahl
bcc4d15fdf tests: Add test running basic perf test
This test runs all of GNOME Shell using the headless backend inside a
mocked D-Bus environment. The basic test tests, well, basic things, like
the panel menu, the overview, showing the app grid view, as well as
going back to the session view.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:53 +01:00
Jonas Ådahl
4c10608451 ci: Bump ci image
The new one includes a newer python-dbusmock.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
2ca6e2e7e8 shell/window-tracker: Disassociate windows on shutdown
This avoids trying to deal with handling windows being unmanaged one by
one after we destroyed the ShellGlobal.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
210754f1e9 st/widget: Remove transitions when unmapped
This avoids having animating timelines on invisible and detached actors.
This also silences some warnings about the timeline being running
without being attached to the stage.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
e62eae74fd searchController: Use connectObject for the stage key focus signal
This ensures it's properly disconnected on shutdown.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
9bc89b821c main: Prepend RPATH or RUNPATH paths to gir search paths
If one wants to run tests the non-installed gnome-shell, that currently
fails as gnome-shell the executable attempts to link against
./build/src/libgnome-shell.so, but when GObject introspection tries to
find what library to link to for Shell, it goes to the installed
libgnome-shell.so, causing two different versions of libgnome-shell.so
to be loaded.

This, however, can be avoided thanks to meson adding $ORIGIN paths to
relevant libraries before installing an executable. What this means in
practice is that we can inspect ourself upon startup, discover whether
the RPATH/RUNPATH header contains $ORIGIN, and if so, expand it to the
directory containing the executable, and prepend the introspection
search paths with said directory.

This effectively means that the introspection machinery now finds the
same library that the linker linked the gnome-shell executable with,
making it run successfully.

It's not possible to use $GI_TYPELIB_PATH since
g_irepository_prepend_library_path() takes precedence. There is no
"append" variant of that API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
1559f03a82 main: Tear down the gjs context before the mutter context
Tearing down gjs means that we won't have any dangling references kept
alive by GC or otherwise alive Javascript objects, when we finally tear
down the mutter context. This allows for a clean shutdown of GNOME
Shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
f2ca53b9e0 layout: Destroy non-adopted uiGroup actors
Move back actors that were adopted from mutter (window_group,
top_window_group, the feedback group) from the uiGroup to the stage, and
then destroy the uiGroup. This will tear down more or less all of GNOME
Shells actors gracefully.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00
Jonas Ådahl
411360cd1b signalTracker: Clear all signal trackers on shutdown
This avoids a lot of otherwise invalid signal handler invokations if we
would later attempt to terminate the gjs and mutter context.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
2022-11-25 22:09:37 +01:00