Commit Graph

18119 Commits

Author SHA1 Message Date
Florian Müllner
e8ee845e41 extensionSystem: Load extensions as modules
Continue the move to ESM by loading modules dynamically with
the standard import() expression, rather than by installing a
custom (legacy) importer.

This is a breaking change that affects all extensions, as they
now need to explicitly export the expected symbols.

As we are already breaking all extensions, take that opportunity
and remove support for the individual entry points: Using a
class with enable()/disable() methods has been the recommended
pattern for a long time, it is now the only entry point.

Instead of instantiating the class from an `init()` function,
the class must now be exported as default to be recognized.

Additionally, we no longer install an importer on the extension
object, so extensions that consist of more than one file MUST
import those files as modules now.

There will be a second breaking change for extensions when
gnome-shell's own code is ported to ESM, so most extension
developers will likely want to wait until the port is complete
before starting to port their extensions.

Based on a commit from Evan Welsh.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2795>
2023-07-06 18:41:29 +00:00
Florian Müllner
0c6c45d426 Bump version to 45.alpha
Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2817>
2023-07-06 19:23:10 +02:00
Florian Müllner
479b1d3043 build: Bump mutter API version
This slipped so far this cycle, let's do it in time for the alpha
release.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2817>
2023-07-06 19:20:48 +02:00
Evan Welsh
5f22c2e450 ci: Print ESLint version before running script
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2821>
2023-07-05 07:43:37 -07:00
Florian Müllner
097c21d140 animations: Stop syncing size manually
The returned slice actors are now set up to fill their parent,
accounting for any difference between loaded- and displayed size,
so we can stop syncing the size manually.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2798>
2023-07-05 10:36:14 +00:00
Florian Müllner
ebbcc31fbd st/texture-cache: Set up sliced images to fill parent
When using fractional scaling, the size of the loaded image with
applied scaling may still differ from the displayed size. This
is currently addressed by syncing the size of all slice actors
in the (probably only) caller.

Instead, set the actors to fill their parent automatically.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2798>
2023-07-05 10:36:14 +00:00
Florian Müllner
5bf61d4cad shell/util: Use gtk4 for week-start fallback
If langinfo isn't available, we determine the week start via
a "magic" string translation from GTK. We currently look up
the string in GTK3's domain, we should use GTK4's instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2816>
2023-07-03 19:32:13 +02:00
Joan Torres
51dc50144e build: Specify systemd version requirement
Since we are specifying in the unit files a comment of requiring
systemd >= 246, set the req at buildtime and drop the comment.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2800>
2023-06-30 20:13:48 +00:00
Bruce Cowan
95f923f21a Update British English translation
(cherry picked from commit f3ccc0d23a3da42ef820f70f1eaa4d6962c5bb50)
2023-06-30 19:20:49 +00:00
Florian Müllner
d1784fe312 tests: Remove interactive tests
The tests rely on the ability to run Clutter as stand-alone app,
which hasn't been possible for quite a while now. Event handling
was broken long before that, plus tests that need a human to run
them and evaluate the result aren't that useful to begin with.

It would be neat to test our CSS rendering by setting up a stage,
capturing it and comparing it to a reference image. But writing
some code that exercises backgrounds, borders etc. is hardly the
obstacle to make that happen, and not worth carrying around dead
code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2811>
2023-06-29 17:55:19 +00:00
Florian Müllner
e31672cc42 Revert "ci: Wrap calls with sudo when building toolbox"
This was necessary after mutter configured a non-root user
for the image, although as it turned out not sufficient.

The latest image no longer sets up a special user, so building
the toolbox image should work again as before.

This reverts commit ee384d85da.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2813>
2023-06-28 23:44:52 +02:00
Florian Müllner
1b974beec5 ci: Bump mutter image
Mutter stopped hardcoding a non-default user in the image, and
instead wraps its CI tests to run as user. Pull in that image
to hopefully get over some of the recent CI hickups.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2813>
2023-06-28 23:44:52 +02:00
Yosef Or Boczko
8afc735f9d Update Hebrew translation 2023-06-28 07:34:52 +00:00
Florian Müllner
ace8676ad0 windowManager: Add shortcut for toggling quick settings
Ever since the various status menus were combined into a single
aggregate menu, the menu has been an important entry point. Alas,
we never got around to adding a shortcut for it, not least because
there never was a good candidate.

We just freed super+s which works as either "system" or
"(quick) settings", so use that.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2716>
2023-06-21 18:11:05 +00:00
Florian Müllner
e9cabd00fb windowManager: Reindent shortcuts setup
We require all new code to use the non-legacy style. Updating code
on a case-by-case basis works fairly well most of the time, but
here we have a big uniform block, where any addition with a different
style would stick out badly.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2716>
2023-06-21 18:11:05 +00:00
Florian Müllner
ce14b316ff data: Unset default shortcut for 'toggle-overview'
The keybinding is a direct, less commonly used alternative to
stand-alone 'super'. While it can be useful to have a regular
keybinding alternative - although 'super+alt+up' also provides
that to some extent - most users probably don't even know about
it's existence.

It is therefore less justified to take away a valuable shortcut
slot, so stop assigning a default shortcut to free 'super+s' for
other actions.

Users who do use the keybinding can still use Settings to assign
a shortcut.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2716>
2023-06-21 18:11:05 +00:00
Evan Welsh
0705c7a4eb js: Fix linting errors from line shifts
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2794>
2023-06-21 04:50:33 -07:00
Evan Welsh
1e9b906cbc js: Split gi imports to be on new lines to prepare for ES modules
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2794>
2023-06-21 04:50:33 -07:00
Florian Müllner
8d562ff71c portalHelper: Port to ESM
The helper app that provides the login dialog for network portals
is another separate process that can be moved to ESM separately.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2786>
2023-06-21 13:26:42 +02:00
Florian Müllner
38c9364acc portalHelper: Stop using non-default ARGV vector
If gjs itself defines ARGV, it only holds the arguments that are
passed on to the script, and javascript code should combine the
programName and ARGV (or the newer programArgs) when it needs a
C-style argv array.

Do the same in the portal-helper process instead of passing along
the original C argv, to avoid confusion when accessing the arguments
from javascript.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2786>
2023-06-21 13:26:42 +02:00
Florian Müllner
80ac32a268 extensions-app: Port to ESM
The extensions app is another part of the code base that is largely
separate from the main code base, and can therefore be ported to
ESM before the big switch.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2786>
2023-06-21 13:26:42 +02:00
Florian Müllner
612e04165e dbusServices: Port to ESM
We want to replace gjs' custom (and now legacy) imports system
with standard EcmaScript modules: JS developers are already
familiar with them, they have better tooling support and using
standard features over non-standard ones is generally the right
thing to do.

Our D-Bus services are separate from the main process, and thus
can be ported separately (except for the few imports that are
shared with the main process' code base).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2786>
2023-06-21 13:26:42 +02:00
Sam Hewitt
eacabbf443 panel: Stylesheet updates and minor improvements for panel buttons
- spin out all the panel button styling into a drawing mixin
- clean up the styles generally
- make special cases for the clock and non-flat buttons
- contrast fixes for non-flat buttons, fixes #6768
- new stop icon for the screen recording/cast indicators

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2804>
2023-06-21 10:28:13 +00:00
Florian Müllner
aa11d90693 workspace: Reapply border radius on background changes
The rounded corner effect is applied to the background actor, so
we have to reapply the correct values when the background changes
for the corners to persist.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2801>
2023-06-21 08:49:36 +00:00
Florian Müllner
ee384d85da ci: Wrap calls with sudo when building toolbox
The mutter image now sets up a non-root default user, so we have
to wrap everything with sudo or su.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2806>
2023-06-20 02:25:30 +02:00
Florian Müllner
761db49137 ci: Bump mutter image
The updated image contains a recent enough libadwaita version to
run the extensions app after commit 38243410.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2805>
2023-06-19 23:39:20 +00:00
Florian Müllner
62b4e67b38 subprojects/shew: Adjust to GTK deprecation
GTK 4.12 deprecates gdk_wayland_toplevel_unexport_handle() in favor
of the new gdk_wayland_toplevel_drop_exported_handle(). We are not
bound by API stability, so we can just expose the additional argument
that the replacement requires instead of tracking the handle
internally.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2778>
2023-06-19 23:25:12 +00:00
Christopher Davis
1d1e2b2313 window: Move search button to the start
Matches AdwPreferencesWindow.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2802>
2023-06-18 21:33:06 -04:00
Christopher Davis
382434103c window: Port to AdwToolbarView
Applications should use AdwToolbarView going forward to contain
their headerbar and content.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2802>
2023-06-18 20:55:38 -04:00
Christopher Davis
55ae4c0806 window: Port to AdwApplicationWindow
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2802>
2023-06-18 20:53:30 -04:00
Martin Zurowietz
9e5dfa2221 extensions-app: Extend build instructions
Related to #6575

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2799>
2023-06-13 21:44:53 +02:00
Florian Müllner
593f659a73 parentalControlsManager: Don't log error when disabled
We currently special-case the DISABLED error when initializing
filtering, but not on app filter changes.

While it seems reasonable that Malcontent.Manager wouldn't emit
the signal while disabled, that's not actually true: It is emitted
when any user account information tracked by AccountsServices
changes.

Even if the signal were limited to changes of the ParentalControls
extension, it would still get emitted when app filtering *becomes*
disabled.

So regardless of potential improvements in libmalcontent itself,
we should filter out the DISABLED consistently, both when creating
the initial filter and when updating it.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2796>
2023-06-09 16:37:36 +02:00
Dušan Kazik
6b36d03ca1 Update Slovak translation
(cherry picked from commit 113bcb4b106ffd146ee2632d7fe8c9fb0156e058)
2023-06-08 14:09:27 +00:00
Андрей Гриценко
ae24b0247e magnifier: Fix cursor offset
Commit c449058d44 changed the pointer clone to use a single
actor. However that broke applying the hotspot translation to the
position, so the magnified cursor is now displayed with a shift.

Undo the change to restore the old behavior.

This reverts commit c449058d44.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2780>
2023-06-07 22:52:27 +02:00
Evan Welsh
8fb8f7f827 init: Move Meta main loop into JavaScript after GJS context is initialized
gjs now has an internal mainloop that it can spin to resolve
module imports. That loop uses the thread default context,
so its possible that other sources, namely from mutter, get
dispatched when iterating the context. If that happens before
mutter is properly initialized, this will lead to a crash.

GjsContext needs to iterate its internal mainloop when initializing
to resolve internal modules, to avoid iterating Meta's mainloop and
triggering events before Meta is ready we will initialize the Shell
global and thus the GjsContext (js_context) before Meta.

Once GjsContext is initialized, we can call meta_context_setup().
Once Meta is setup and started, we'll run init.js which uses GJS'
internal promises API to set a "mainloop hook". The mainloop hook
is run immediately after the module returns so GJS will not attempt
to iterate the main loop again before exiting.

Also adjust the 'headlessStart' test to not wait for the
MetaContext::started signal, as that signal has now already
been emitted when the code is executed.

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

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2781>
2023-06-07 19:23:27 +00:00
Evan Welsh
5d8e860a48 panel: Refactor quick settings loading for asynchronous imports
When the Shell ports to ESM, our inline imports of the network and
bluetooth indicators will no longer be possible, refactor quick settings
to load indicators asynchronously.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2563>
2023-06-07 18:59:43 +00:00
Evan Welsh
7116d91852 animation: Don't get size information until spinner has a parent
get_size() in _syncAnimationSize() can't be called until the actor
has a parent, otherwise we'll get an error for calling
st_get_theme_node() prior to the actor being on a stage.

_syncAnimationSize() is called asynchronously via
textureCache.load_sliced_image() and there is currently no guarantee
the actor will actually be "loaded" prior to calling it.

This becomes a more obvious error/issue when refactoring parts of the
Shell loading to also be asynchronous.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2563>
2023-06-07 18:59:43 +00:00
Evan Welsh
39ed7f83fd ci: Migrate eslint-plugin-jsdoc rule and pin eslint versions
Pin eslint to v8 and eslint-plugin-jsdoc to v46, migrate the removed
jsdoc rule.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2792>
2023-06-07 18:20:50 +00:00
Julia Dronova
aac6970395 Update Russian translation 2023-06-07 16:00:05 +00:00
Florian Müllner
02cd1ecd94 shell/perf-helper: Port to GTK4
After the preparations in the previous commits, the port is now
fairly straight-forward.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
1c5bc35e30 shell/perf-helper: Use custom widget as content
The windows we create use a simple pattern as content, as that's
easier to follow than completely empty windows. GTK4 no longer
allows hooking into the drawing of arbitrary widgets, so prepare
for that by using a dedicated subclass instead of a signal handler.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
54b4cfc69b shell/perf-helper: Use custom CSS for background
GTK4 no longer has the concept of "app-paintable" to skip the
default background drawing. Prepare for that by setting the
desired background via CSS and draw on top of that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
3f9fcf418b shell/perf-handler: Use app to track window
GtkApplication already tracks its windows, so we don't have to
maintain our own list.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
12fafec141 shell/perf-helper: Subclass ApplicationWindow
The signals we use to track whether a window has been mapped and
exposed no longer exist in GTK4. Prepare for that by using a
dedicated subclass instead of signal handlers.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
b4ffeb36f6 shell/perf-helper: Use GApplication
The gtk_main() API is gone in GTK4, so we'll have to either
manage our own loop, or use GApplication. The latter also
handles the D-Bus setup for us, so use that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
e9ec45e5e3 shell/perf-helper: Remove unused struct members
Some parameters are only relevant when creating the window, and
are therefore never read from the window info struct.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
2416e4eec0 scripting: Make helper proxy initialization async
We are about to port the helper proxy to GApplication, which means
that it will establish a display connection before exporting its
D-Bus name. That means that the compositor must be able to respond
to a roundtrip request to avoid locking, so don't block on the proxy
becoming available.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
a53d7faf9d st/test-theme: Don't initialize GTK
St no longer requires GTK to be initialized, so this is no longer
needed (and pulls in an unnecessary GTK dependency).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
fb927d5196 tests: Port to Gtk4
There's another remaining bit of Gtk3 code in a small test program
that changes a window title to a random character sequence every
five seconds. While the value of that test is a bit questionable,
it doesn't hurt either and a port is trivial.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00
Florian Müllner
99973f56fd tests: Stop using Gtk.PolicyType
St got its own enum type years ago, so use that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2733>
2023-06-07 11:12:40 +00:00