summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* tests/perf: Use custom solid background in testsJonas Ådahl2022-11-253-1/+5
| | | | | | | | 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>
* tests: Add test running basic perf testJonas Ådahl2022-11-255-10/+42
| | | | | | | | | 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>
* ci: Bump ci imageJonas Ådahl2022-11-251-1/+1
| | | | | | The new one includes a newer python-dbusmock. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* shell/window-tracker: Disassociate windows on shutdownJonas Ådahl2022-11-251-0/+20
| | | | | | | 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>
* st/widget: Remove transitions when unmappedJonas Ådahl2022-11-251-0/+2
| | | | | | | | 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>
* searchController: Use connectObject for the stage key focus signalJonas Ådahl2022-11-251-1/+2
| | | | | | This ensures it's properly disconnected on shutdown. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* main: Prepend RPATH or RUNPATH paths to gir search pathsJonas Ådahl2022-11-253-0/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* main: Tear down the gjs context before the mutter contextJonas Ådahl2022-11-251-4/+4
| | | | | | | | | 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>
* layout: Destroy non-adopted uiGroup actorsJonas Ådahl2022-11-251-0/+14
| | | | | | | | | 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>
* signalTracker: Clear all signal trackers on shutdownJonas Ådahl2022-11-251-0/+6
| | | | | | | 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>
* main: Notify about shutdown before tearing downJonas Ådahl2022-11-253-0/+19
| | | | | | This will allow the shell to tear things down more gracefully. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* shell-global: Get backend from contextJonas Ådahl2022-11-251-3/+6
| | | | Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* shell-global: Add MetaContext getterJonas Ådahl2022-11-252-1/+13
| | | | | | Start to use it instead of using g_object_get(). Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* appDisplay: Don't have goToPage clamp to negative page indexJonas Ådahl2022-11-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The nPages property can be 0, which is the case in a stripped down CI image without a single app to be listed, which means we can't clamp to `nPages - 1`, since that'll give us a negative index and the following error: (gnome-shell:266): Gjs-CRITICAL **: 16:48:56.633: JS ERROR: Error: Page -2 does not exist at IconGrid getItemsAtPage@resource:///org/gnome/shell/ui/iconGrid.js:1383:19 _translatePreviousPageIcons@resource:///org/gnome/shell/ui/appDisplay.js:323:34 _syncPageIndicators@resource:///org/gnome/shell/ui/appDisplay.js:396:14 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:445:14 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1236:29 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1582:15 _init/<@resource:///org/gnome/shell/ui/appDisplay.js:499:18 _init/pagesChangedId<@resource:///org/gnome/shell/ui/iconGrid.js:1137:24 _removePage@resource:///org/gnome/shell/ui/iconGrid.js:454:14 _removeItemData@resource:///org/gnome/shell/ui/iconGrid.js:495:18 moveItem@resource:///org/gnome/shell/ui/iconGrid.js:854:14 moveItem@resource:///org/gnome/shell/ui/iconGrid.js:1277:29 _moveItem@resource:///org/gnome/shell/ui/appDisplay.js:1194:20 _redisplay/<@resource:///org/gnome/shell/ui/appDisplay.js:1085:22 _redisplay@resource:///org/gnome/shell/ui/appDisplay.js:1080:17 _redisplay@resource:///org/gnome/shell/ui/appDisplay.js:1370:15 _init/<@resource:///org/gnome/shell/ui/appDisplay.js:633:24 _initializeManager@resource:///org/gnome/shell/misc/parentalControlsManager.js:95:14 async*_init@resource:///org/gnome/shell/misc/parentalControlsManager.js:63:14 ParentalControlsManager@resource:///org/gnome/shell/misc/parentalControlsManager.js:55:4 getDefault@resource:///org/gnome/shell/misc/parentalControlsManager.js:42:22 start@resource:///org/gnome/shell/ui/main.js:184:29 @resource:///org/gnome/shell/ui/init.js:6:17 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* calendar: Unbind settings when destroyingJonas Ådahl2022-11-251-1/+1
| | | | | | | | Running dispose on the setting causes issues when we're being destroyed, as the signal handler in the GSettings binding will be cleared by the GObject itself before it has the chance, resulting in warnings. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* dialog: Remove incorrect disconnectObject()Jonas Ådahl2022-11-251-2/+0
| | | | | | | | | It was added, as there was a previous signal disconnect in this function, but it happened to be dead code, and the disconnectObject() call was added in error. Remove it. Fixes: 26235bbe5433c48b81bd3917aaf9ef14ff1929b2 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* tests: Add dbus runnerJonas Ådahl2022-11-253-0/+140
| | | | | | | This adds a dbus-runner ala meta-dbus-runner.py. It extends the one used in mutter, and adds various mocked services needed by gnome-shell. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* tests: Add accounts_service mock serviceJonas Ådahl2022-11-251-0/+136
| | | | | | | | This is a shrunk copy of the accounts_service.py service previously found in upstream python-dbusmock. It also adds parental control properties to make GNOME Shell happy. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* scripting: Terminate using meta_context_terminate()Jonas Ådahl2022-11-251-1/+1
| | | | | | | | With meta_exit() we bypass the tear down procedures, making the test case excercising much less code paths. Use meta_context_terminate() instead, as that exits the main loop and goes through proper shutdown. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* scripting: Exit helper after running testJonas Ådahl2022-11-252-0/+10
| | | | | | | This avoids the helper process exiting with an error due to a broken pipe. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* perf/basic: Toggle quick settings instead of old menuJonas Ådahl2022-11-251-1/+1
| | | | Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* perf-tool: Add --headlessJonas Ådahl2022-11-251-1/+9
| | | | | | | This will use the headless mode of the native backend, and create a 1280x720 virtual monitor, for running the perf test in. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* perf-tool: Only 'restore' gnome-shell if run with --replaceJonas Ådahl2022-11-251-1/+1
| | | | | | | Otherwise the perf tool will fork and spawn a gnome-shell process that'll just go and fail. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* perf/basic: Add some helpful loggingJonas Ådahl2022-11-251-0/+14
| | | | | | This is purely to see that things are happening when running this test. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1349>
* overview: Start animation after setting coverPane initial stateAlessandro Bono2022-11-251-6/+6
| | | | | | | | | | | | | | | Since commit 7bd98f3f5fb7e0d1220646b8a4ee7073534a8e8f the onComplete callback is called right away when animations are disabled. As side effect, now this._coverPane gets shown/hidden in the wrong order. Start the animation after setting this._coverPane initial state, so that the animation callback can set the this._coverPane final state without it being overwritten later. Move the animation also after emitting the showing and hiding signals. So that the order showing -> shown and hiding -> hidden is still preserved when animations are disabled. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6096 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2532>
* overview: Make preparation to enter/leave overview explicitAlessandro Bono2022-11-252-4/+10
| | | | | | | This give us more control on when the preparation happens and will be used in the subsequent commit. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2532>
* overviewControls: Group prepare to enter/leave overview codeAlessandro Bono2022-11-251-8/+14
| | | | | | | Move preparation code into their own functions. These functions will be used in order to separate the animation control into two steps. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2532>
* keyboard: Change osk menu entry to control-center keyboard paneRoshan-R2022-11-241-1/+1
| | | | | | | | | | Currenty, the osk settings popup has the menu entry of "Region and Language settings" which should be changed to the "Keyboard" pane instead as input source configuration is done there. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6134 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2554>
* style: High Contrast improvmentsSam Hewitt2022-11-2421-275/+298
| | | | | | | | | | | | | | | - rework the entry style to work in both hc and normal - rework drawing functions to accommodate hc - buttons all get borders under hc now - window picker titles are more legible - alt+tab switcher tiles are visible - dash is made more visible under hc - popover menus are all more visible under hc - search results borders are improved - calendar days have a different look under hc - overview bg is completely black in hc Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2527>
* Update Slovak translationDušan Kazik2022-11-221-55/+40
| | | | (cherry picked from commit e68d987d9a9a54a47cdd88b00ca58640de4a9336)
* overview: Don't block on wayland popoversFlorian Müllner2022-11-201-1/+2
| | | | | | | | | | | | We don't allow entering the overview when there's an ongoing grab operation, as they are generally incompatible with ClutterGrab. The exception are wayland popups which are expected to work, and don't conflict with ClutterGrabs. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6092 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2549>
* inhibitShorcutsDialog: Fix permission checkFlorian Müllner2022-11-191-1/+1
| | | | | | | | | Each permission entry is an array of strings, so checking that against the expected string itself will always fail. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6107 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2548>
* accessDialog: Change fallback button labelsAlessandro Bono2022-11-191-2/+2
| | | | | | | | All the new portals dialog mockups have "Deny/Allow" buttons. Rename them. https://gitlab.gnome.org/Teams/Design/os-mockups/-/blob/master/portals/portals.png Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2544>
* status/remoteAccess: Don't override existing style classesFlorian Müllner2022-11-181-4/+2
| | | | | | | | | | The indicator needs special styling for the color, but we still want it to pick shared 'system-status-icon' styling like the icon size. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6008 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2547>
* data: Remove unused overrides schemaFlorian Müllner2022-11-181-45/+0
| | | | | | | | | The old custom overrides mechanism was superseded by session-specific defaults back in 2018. By now any potential consumers (like gnome-tweaks) should have adjusted, so time to remove it. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2517>
* layout: Initialize regions unconditionallyFlorian Müllner2022-11-181-8/+7
| | | | | | | | | We currently initialize regions in all code paths except for the greeter. But while there are no windows on the login screen, the work area can still be used for positioning, for example for notifications. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2546>
* status/network: Fix handling portal resultFlorian Müllner2022-11-171-2/+4
| | | | | | | | Commit 637ee7386e accidentally dropped all parameters from the method invocation when changing a .bind() handler to an arrow function. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2545>
* status/network: Fix name of initially hidden devicesFlorian Müllner2022-11-171-1/+7
| | | | | | | | | | | | | | | | We assign (disambiguated) device names every time a device is added or removed, and store the name on the corresponding menu item. However menu items are only created when the device should be shown, not necessarily when it is added (unplugged ethernet cable, ongoing initialization, ...). Fix this by tracking device names separately from device items, and set the name on newly created items. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6040 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2529>
* keyboard: Ensure completion is disabled when OSK is destroyedCarlos Garnacho2022-11-161-0/+2
| | | | | | | | | If the OSK is destroyed while visible without being close()'d first, the completion mode might remain turned on. Ensure it is turned off on OSK destruction so that typing-booster has no chance to remain turned on. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2543>
* keyboard: Disconnect from InputMethod::terminal-mode-changed on destructionCarlos Garnacho2022-11-161-2/+3
| | | | | | | | | | The OSK may be created and destroyed, while it connects to signals from the longer-lived InputMethod object. This makes these signals linger and issue copious warnings while trying to change the extended keymap and new ratio on a defunct OSK. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6085 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2543>
* keyboard: Bind emoji pager visibility to swipeTracker enabled stateCarlos Garnacho2022-11-161-0/+4
| | | | | | | | The swipeTracker may connect gestures on the stage, so we might end up in the odd situation that the swipeTracker is handling events for an invisible actor. Avoid doing this. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2543>
* keyboard: Explicitly destroy swipeTracker after emoji panel destructionCarlos Garnacho2022-11-161-0/+9
| | | | | | | | | | | | | | | | | | Even though the emoji panel may be destroyed with the OSK, the swipeTracker that is set up to navigate between pages is left lingering, and handling events for some gestures in the stage. This results in warnings like: JS ERROR: TypeError: this._panel is null set delta@resource:///org/gnome/shell/ui/keyboard.js:720:9 _onSwipeUpdate@resource:///org/gnome/shell/ui/keyboard.js:750:22 _updateGesture@resource:///org/gnome/shell/ui/swipeTracker.js:670:14 vfunc_gesture_progress@resource:///org/gnome/shell/ui/swipeTracker.js:288> on touch interaction after the OSK was shown and dismissed. In order to fix this, issue explicit destruction of the swipeTracker when the emoji pager actor is destroyed. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2543>
* appDisplay: Connect to hidden signal after content initializationAlessandro Bono2022-11-161-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the overview is hidden just after starting GNOME Shell the app grid is not populated yet. Thus, this._grid.nPages is 0. When the overview is about to be hidden, we call goToPage(0) on the AppGrid. This results in pageNumber being clamped to -1 and leads to the following exception: ``` JS ERROR: Exception in callback for signal: hidden: Error: Page -2 does not exist at IconGrid getItemsAtPage@resource:///org/gnome/shell/ui/iconGrid.js:1383:19 _translatePreviousPageIcons@resource:///org/gnome/shell/ui/appDisplay.js:323:34 _syncPageIndicators@resource:///org/gnome/shell/ui/appDisplay.js:396:14 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:445:14 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1237:29 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1584:15 _init/<@resource:///org/gnome/shell/ui/appDisplay.js:1328:52 _emit@resource:///org/gnome/gjs/modules/core/_signals.js:89:42 _hideDone@resource:///org/gnome/shell/ui/overview.js:589:18 _animateNotVisible/<@resource:///org/gnome/shell/ui/overview.js:566:55 onStopped@resource:///org/gnome/shell/ui/overviewControls.js:753:21 _makeEaseCallback/<@resource:///org/gnome/shell/ui/environment.js:150:22 _easeActorProperty/<@resource:///org/gnome/shell/ui/environment.js:316:60 ``` Connect to the overview hidden signal only after initializing the AppDisplay content, so that goToPage(0) is not called when there is no page yet. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5837 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2536>
* quickSettings: Make parent StWidget have a 0x0 sizeCarlos Garnacho2022-11-161-1/+1
| | | | | | | | | | | | | | | | | | | | The quick settings menu is child of an actor at 0,0 coordinates, simply transformed to look in place. However the parent actor stays at 0,0, and gets a width/height that is able to contain the child menu (even though the transform will push it outside the parent actor). This makes the parent actor (not meant to handle pointer/touch input) to cover parts of the shell. Since this actor is also where the Clutter grab happens, the menu is not dismissed either. Make this parent actor have a 0x0 size, so that it can still act as the parent for the quick settings menu, but does not actually cover any area. This makes clicks around the top left corner work again while the quick settings menu is opened. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5887 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2535>
* windowManager: Get the active workspace index directlyAlessandro Bono2022-11-141-1/+1
| | | | Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2540>
* Update Russian translationAleksandr Melman2022-11-131-9/+11
|
* screenshot: Cache ScreencastSupported propertyFlorian Müllner2022-11-091-2/+4
| | | | | | | | | | The screencast service shuts down when not in use, so it is almost certainly not running when handling the screencast shortcut. Instead of making sure the service is restarted, just cache the property when initializing the proxy. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533>
* dbusService/screencast: Hold during gstreamer checksFlorian Müllner2022-11-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Some gstreamer plugins require a connection to the display server, so they block until the server is up and running. That's why we moved the check into the D-Bus service, so that the blocking would not lock up the compositor itself. However the block can still delay the service initialization so much that auto-shutdown hits immediately when returning from the constructor. If that happens, the proxy on the shell side is no longer backed by a remote object when the init callback runs, and all properties therefore resolve as `null`. As a result, gnome-shell thinks that screencasts aren't supported and hides the screencast button. Fix this by holding the service during the gstreamer checks, so that the auto-shutdown timeout only starts after the service is ready. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6051 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533>
* Update Hungarian translationBalázs Úr2022-11-051-116/+100
|
* systemActions: Add poweroff without spaceColin Kinloch2022-11-041-1/+1
| | | | Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2523>