gnome-shell merge requestshttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests2024-01-30T22:14:04Zhttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1Better mode extension support: status sync and disabling.2024-01-30T22:14:04ZDidier RocheBetter mode extension support: status sync and disabling.* Support disabling extensions being activated as part of a mode.
* Ensuring that non writable gsettings keys are reflecting the enablement status accordingly.
* Factor out the canEnable and enable/disable logic in the Shell, exposing ...* Support disabling extensions being activated as part of a mode.
* Ensuring that non writable gsettings keys are reflecting the enablement status accordingly.
* Factor out the canEnable and enable/disable logic in the Shell, exposing them via DBus API.
* Ensure -prefs only rely on the DBus API and doesn't have local logic relying on environment.
Note: this is the part we agreed upon on https://bugzilla.gnome.org/show_bug.cgi?id=789852.
I have 2 followup commits on the updating mecanism, but those are in a separate branch not proposed until we reach a decision. Those commits can be safely merged though.GNOME 3.28https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2820status/backlight: Add new quick toggle2023-12-18T15:48:55ZFlorian Müllnerfmuellner@gnome.orgstatus/backlight: Add new quick toggleImplement mockups for keyboard backlight quick toggle. Still needs
a proper commit message and icon assets, so marking as draft.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6765Implement mockups for keyboard backlight quick toggle. Still needs
a proper commit message and icon assets, so marking as draft.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6765GNOME 45Marge BotMarge Bothttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2840Implement a camera indicator2023-08-01T09:34:50ZRobert Maderrobert.mader@posteo.deImplement a camera indicatorTrack whether a camera is active via Pipewire and show an indicator, similar to the microphone indicator.
![image](/uploads/f8b7c3900796d820d5074c57f94f7bbd/image.png)
From the main commit:
```
Pipewire allows us to easily track whethe...Track whether a camera is active via Pipewire and show an indicator, similar to the microphone indicator.
![image](/uploads/f8b7c3900796d820d5074c57f94f7bbd/image.png)
From the main commit:
```
Pipewire allows us to easily track whether any cameras are in used by
checking the state of camera nodes. Add a simple camera monitor to the
shell, allowing us to show e.g. a status indicator.
Naturally the monitor is limited to apps using Pipewire for camera
access and thus subject to the same chicken-egg problem like the camera
portal - it could confuse users that apps may use the camera without
being noticed by the monitor. The hope and assumption here is that a
better shell integration might speed up adoption of the new camera APIs
```
---
Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2500GNOME 45Marge BotMarge Bothttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/153Deprecate Shell.GenericContainer2023-07-09T16:21:53ZGeorges Basile Stavracas NetoDeprecate Shell.GenericContainer## Description
Shell.GenericContainer is a workaround added back in time to allow overriding the size negotiation vfuncs (`get_preferred_width`, `get_preferred_height`, and`allocate`) from JavaScript side.
Over time, however, GJS gaine...## Description
Shell.GenericContainer is a workaround added back in time to allow overriding the size negotiation vfuncs (`get_preferred_width`, `get_preferred_height`, and`allocate`) from JavaScript side.
Over time, however, GJS gained the ability to override vfuncs, but the workaround was never removed. This merge request removes all the usages of Shell.GenericContainer throughout the codebase.
## Justification
Shell.GenericContainer exposes the size negotiation machinery through the use of signals. Signals are not specially performant. One of the reasons is that they acquire a global lock for [signal handlers lookup](https://gitlab.gnome.org/GNOME/glib/blob/master/gobject/gsignal.c#L3179). GNOME Shell has more than 2,000 actors at any given point in time, up to 20 levels deep in hierarchy, making size negotiation and painting non-trivial tasks. Such a critical section of Clutter's machinery shouldn't rely on signals whatsoever.
Besides that, Shell.GenericContainer is a workaround to a non-existing issue anymore. It shouldn't be used anyway, regardless of any performance improvements that removing it can potentially yield.
## Details
Most of the work of removing this class were centered in turning the JavaScript classes that used it into `St.Widget` subclasses. That way, it was possible to override the size negotiation vfuncs.
The `this.actor` pattern was kept for compatibility purposes -- even though the JavaScript classes are the actors themselves. This is mainly to avoid breaking extensions. Even if the pattern was kept, internally, all the `foo.actor` usages were converted to only `foo`.
The commit messages, in particular the first ones, expose the challenges and solutions of removing this class. Fortunately, no outstanding hacks were introduced, and overall the code looks cleaner.
## Performance
This merge request may have a small but consistent performance benefit. In average, the framerate became more stable and predictable. In addition to that, it became slightly shorter. That leads to better framerate measurements over time:
![ShellGenericContainer](/uploads/b61233544ada29773b87de08e48beeb8/ShellGenericContainer.png)
When using `Shell.GenericContainer`, the framerate is more unstable compared to this branch. There are moments where the framerate matches this work, but most of the time, it sits comfortably below it. Early results give an improvement of about 3~6 FPS when running GNOME Shell animations, like the spring animation of the Icon Grid, or moving in and out of the Overview.
Other random findings:
* The icon grid itself loads faster with this branch. This is the first data point in the graph.
* There are still stutterings when running the app grid spring animation, but they're apparently shorter and less proeminent. It is likely that this will be most affected by !22.
* Overview animations are smoother with lots of windows opened here.
## To Do
* [x] Fix remaining issues
* [x] Measure performance improvements
* [x] Test moreGNOME 3.30Florian Müllnerfmuellner@gnome.orgFlorian Müllnerfmuellner@gnome.orghttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/22Replace Tweener with Clutter's implicit animations for animating actors2023-07-09T16:18:40ZFlorian Müllnerfmuellner@gnome.orgReplace Tweener with Clutter's implicit animations for animating actors~~This is still work-in-progress, but keeping it lying around on my local system won't make it any good ...~~
This is good for review now (although !654 whose commits are included here should go first), so resolving WIP status.
The pat...~~This is still work-in-progress, but keeping it lying around on my local system won't make it any good ...~~
This is good for review now (although !654 whose commits are included here should go first), so resolving WIP status.
The patch set now no longer hooks into Tweener to transparently use Clutter animations, instead it opts for an explicit port. It does this in three parts:
1. adjust some tweens that use patterns that prevent replacing them with Clutter animations (mostly using a proxy JS property )
2. add some convenience API (not unlike the Tweener API)
3. replace all tweens of animatable properties with implicit animations
That last step reduces Tweener usage by over 80%; the remaining bits are either animating properties on custom actor subclasses or non-actors (layout/effect properties, adjustment values, ...). All of those will be replaced in follow-up merge requests.GNOME 3.34Georges Basile Stavracas NetoGeorges Basile Stavracas Netohttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1954New screenshot UI2023-05-10T15:54:29ZIvan Molodetskikhyalterz@gmail.comNew screenshot UIThe new screenshot UI™, which I worked on [and posted about](https://imolodetskikh.wordpress.com/2021/06/29/gsoc-2021-gnome-shell-screenshot-ui/) over the summer [as part of GSoC 2021](https://summerofcode.withgoogle.com/projects/#518770...The new screenshot UI™, which I worked on [and posted about](https://imolodetskikh.wordpress.com/2021/06/29/gsoc-2021-gnome-shell-screenshot-ui/) over the summer [as part of GSoC 2021](https://summerofcode.withgoogle.com/projects/#5187703877926912). Based on [this design issue](https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/108) and mock-up.
~~Requires https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1893 with [an additional fix](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1893#note_1201406), https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1899 and https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1967. I've got everything needed in [this Mutter branch](https://gitlab.gnome.org/YaLTeR/mutter/-/commits/screenshot-ui-temp), although there's usually also some unrelated stuff there.~~
The follow-up MR https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2107 should be merged together with https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/267 and https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1075.
![image](/uploads/d20e1d19f98a9629282780f7ba8ec2a2/image.png)
TODO (screenshot part):
- [x] Saving screenshots into a file (rather than just clipboard)
- [x] New icons from Tobias
- [x] Adding screenshots to recent files (see https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1439/diffs for an example)
- [x] Asynchronous PNG compression
- [x] Starting selection + way to draw a new selection (e.g. modifier + drag)
- [x] Better resizing (resize like windows instead of the current corner handles)
- [x] Making the panel fade out and not receive input when dragging the selection
- [x] Keyboard navigation
- [x] Removing default <kbd>PrtSc</kbd> bind from `gnome-settings-daemon` and adding it here
- [x] Figuring out how to handle GNOME Shell popups
- [x] Tooltips with shortcuts for panel buttons
- [x] Checkbox on selected window
- [x] Click on notification to open the image
- [x] Fix global shortcut blocking (e.g. mute)
- [x] Add fake search entry to open the UI
- [x] Fix multiple screenshots in 1 second / existing file
- [ ] Accessibility review—not sure how to get the screen reader to read nested gnome-shell elements
TODO (screencast part):
- [x] Area and screen recording
- [x] Area indicator during recording
- [x] Fixing GStreamer crashes
- [x] Done notification
- [x] Save to Videos/Screencasts
Future work:
- Use lower scale for area and screen shots when possible on mixed DPI
- Smooth animation to window selection for screenshots
- Window selection for recording
- Desktop audio and microphone audio toggles
COPR for F35 if you'd like to give it a spin: https://copr.fedorainfracloud.org/coprs/yalter/gnome-shell-screenshot-ui/
cc @verdre @bertob @adayGNOME 42Marge BotMarge Bothttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2380status/volume: Add device submenus2022-12-15T20:17:06ZFlorian Müllnerfmuellner@gnome.orgstatus/volume: Add device submenusIn case where there are multiple in- or output devices, pulseaudio
or pipewire can pick the "wrong" one by default.
Allow users to change devices without opening sound settings by
adding a submenu to the sliders when there is more than ...In case where there are multiple in- or output devices, pulseaudio
or pipewire can pick the "wrong" one by default.
Allow users to change devices without opening sound settings by
adding a submenu to the sliders when there is more than one device.
The feature is part of the quick settings mockups:
https://gitlab.gnome.org/Teams/Design/os-mockups/-/raw/master/system-status/quick-toggles-3.png
But it's self-contained enough to land it separately.GNOME 43Marge BotMarge Bothttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1907status/powerProfiles: Add power mode selection2021-08-04T16:08:33ZFlorian Müllnerfmuellner@gnome.orgstatus/powerProfiles: Add power mode selectionSettings' power panel gained support for switchable power profiles
in GNOME 40. It's useful to have that functionality more readily
available, so expose it in the system status menu as well.
Screenshot:
![power-profiles](/uploads/c0f96...Settings' power panel gained support for switchable power profiles
in GNOME 40. It's useful to have that functionality more readily
available, so expose it in the system status menu as well.
Screenshot:
![power-profiles](/uploads/c0f96fa318498811bda284fae53c80c8/power-profiles.png)
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3944GNOME 41Marge BotMarge Bothttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/922Adapt user-avatar for new lock screen2021-04-12T21:10:31ZUmang JainAdapt user-avatar for new lock screenTew user-avatar layout associated with the new lock screen.
The login-user-selection screen is untouched for 3.36 cycle (as decided with the design team).
Current state:
##### Unlock Screen
![Screenshot_from_2020-02-04_18-24-09...Tew user-avatar layout associated with the new lock screen.
The login-user-selection screen is untouched for 3.36 cycle (as decided with the design team).
Current state:
##### Unlock Screen
![Screenshot_from_2020-02-04_18-24-09](/uploads/75b142315a4409b755c4eb40a6c1b15e/Screenshot_from_2020-02-04_18-24-09.png)
##### Login Screen
![Screenshot_from_2020-02-04_18-20-50](/uploads/2a4e0634f278e9e2ee02136b643d514e/Screenshot_from_2020-02-04_18-20-50.png)
##### Username based login
![Screenshot_from_2020-02-04_18-24-37](/uploads/5b6fa01fa40452a79a2f21ef959c0e73/Screenshot_from_2020-02-04_18-24-37.png)GNOME 3.36https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1612Allow switching workspaces with super-scroll2021-02-04T20:07:49ZFlorian Müllnerfmuellner@gnome.orgAllow switching workspaces with super-scroll... as requested by the design team.
Marking as work-in-progress because it requires some more changes in mutter.... as requested by the design team.
Marking as work-in-progress because it requires some more changes in mutter.Marge BotMarge Bothttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/199endSessionDialog: Support rebooting into the bootloader menu aka ("Boot Optio...2020-10-16T13:12:17ZHans de GoedeendSessionDialog: Support rebooting into the bootloader menu aka ("Boot Options")This merge request implements the "Alt" behavior for the "Reboot" button as outlined in the design here: https://wiki.gnome.org/Design/OS/BootOptions
This causes the endSessionDialog to send a ConfirmedRebootMenu signal to gnome-sessi...This merge request implements the "Alt" behavior for the "Reboot" button as outlined in the design here: https://wiki.gnome.org/Design/OS/BootOptions
This causes the endSessionDialog to send a ConfirmedRebootMenu signal to gnome-session instead of the normal ConfirmedReboot signal, actually telling the boot-loader that it should show its menu the next boot is left up to gnome-session. The gnome-session side of this has its own merge-req: https://gitlab.gnome.org/GNOME/gnome-session/merge_requests/6
Note I've tried implementing this with the AltSwitcher class from js/ui/status/system.js first, but that puts the button in a St.Bin() which causes the button to think it is the only button on the dialog and makes it have rounded corners on both of its bottom corners.https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1292Inspector2020-08-11T15:29:21ZGeorges Basile Stavracas NetoInspectorBeing able to visualize the actor tree is a handy feature
to have, specially when debugging the hierarchy.
Add a new "Actors" tab to the Looking Glass with the actor
tree inspector. The tree is cleared on unmap to not get
heavy on the n...Being able to visualize the actor tree is a handy feature
to have, specially when debugging the hierarchy.
Add a new "Actors" tab to the Looking Glass with the actor
tree inspector. The tree is cleared on unmap to not get
heavy on the number of actors.
Here's how it looks:
![Screenshot_from_2020-05-31_17-55-45](/uploads/ee13da54b88f99e393271bb31097c62e/Screenshot_from_2020-05-31_17-55-45.png)GNOME 3.38https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/5Fractional scaling support2020-03-11T09:53:52ZMarco Trevisanmail@3v1n0.netFractional scaling supportUse resource scale for st-widgets, and other (fractional) scaling fixes.
There are still some commits that are in RFC or needs to be squashed, but I wanted a feedback first.
Depends on GNOME/mutter!3.
There are still some TODO's...Use resource scale for st-widgets, and other (fractional) scaling fixes.
There are still some commits that are in RFC or needs to be squashed, but I wanted a feedback first.
Depends on GNOME/mutter!3.
There are still some TODO's: https://hackmd.io/WspOFZpRTo2qlWc8fh_zPQ?view#TODO
As per https://bugzilla.gnome.org/show_bug.cgi?id=765011GNOME 3.32https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/97Re-expose do-not-disturb functionality2020-01-27T18:00:31ZFlorian Müllnerfmuellner@gnome.orgRe-expose do-not-disturb functionality~~The design is still under discussion in #239, so marking as WIP.~~
Expose do-not-disturb functionality according to this mockup:
![Do-not-disturb mockup](/uploads/55860f65934ffa5bd89aff0bd835ae95/image.png)
Fixes #239 ~~The design is still under discussion in #239, so marking as WIP.~~
Expose do-not-disturb functionality according to this mockup:
![Do-not-disturb mockup](/uploads/55860f65934ffa5bd89aff0bd835ae95/image.png)
Fixes #239 https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/675Allow editing folder names (Part 4)2019-10-09T01:02:01ZGeorges Basile Stavracas NetoAllow editing folder names (Part 4)The 4th and last in the "folder management" series.
This one introduces the EditableLabel actor, and uses it in folder icons.
(Depends on !671)The 4th and last in the "folder management" series.
This one introduces the EditableLabel actor, and uses it in folder icons.
(Depends on !671)GNOME 3.34https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/45layout: Make the hot corner optional2019-08-30T16:18:02ZFlorian Müllnerfmuellner@gnome.orglayout: Make the hot corner optionalWhether people love or hate the hot corner depends in large extents
on hardware sensitivity and habits, which is hard to get right
universally. So bite the bullet and add an option to enable or
disable hot corners ...
https://bugzilla.g...Whether people love or hate the hot corner depends in large extents
on hardware sensitivity and habits, which is hard to get right
universally. So bite the bullet and add an option to enable or
disable hot corners ...
https://bugzilla.gnome.org/show_bug.cgi?id=688320
Marking as WIP as the bugzilla discussion hasn't concluded yethttps://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/664Allow dropping icons from and to folders (Part 2)2019-08-09T22:39:22ZGeorges Basile Stavracas NetoAllow dropping icons from and to folders (Part 2)This is the 2nd part of the Drag n' Drop work. Here, we introduce the necessary code to drop from and to folders. This is a simple case, and can still safely land on GNOME 3.34, since it doesn't introduce custom icon positions.This is the 2nd part of the Drag n' Drop work. Here, we introduce the necessary code to drop from and to folders. This is a simple case, and can still safely land on GNOME 3.34, since it doesn't introduce custom icon positions.GNOME 3.34https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/671Create and delete folders with Drag n' Drop (Part 3)2019-08-09T14:45:21ZGeorges Basile Stavracas NetoCreate and delete folders with Drag n' Drop (Part 3)Part 3 of the patchset. This one implements creating and deleting folders with Drag n' Drop.
I believe the most controversial commit here is 2ea4ab6b5b9c651e9a36f170897283f83213c4e6. Please let me know if there's a better way to impleme...Part 3 of the patchset. This one implements creating and deleting folders with Drag n' Drop.
I believe the most controversial commit here is 2ea4ab6b5b9c651e9a36f170897283f83213c4e6. Please let me know if there's a better way to implement the folder preview effect!
(Depends on !664. All the commits from it are included here.)GNOME 3.34https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/110Fix the calculation of max number of results in the grid search2019-08-08T14:25:05ZJonas DreßlerFix the calculation of max number of results in the grid searchThis MR fixes:
- The calculation of the maximum number of results for the GridSearchResults for screens bigger than the max width of #searchResultsBin (1000px).
- The maximium number of results for the GridSearchResults for the first...This MR fixes:
- The calculation of the maximum number of results for the GridSearchResults for screens bigger than the max width of #searchResultsBin (1000px).
- The maximium number of results for the GridSearchResults for the first search after initializing a new search.
- An unnecessary horizontal padding of 88px being applied to search results if the screen is smaller than the max width of #searchResultsBin (1000px).https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/126Support TCRYPT in ShellMountPasswordDialog2019-07-25T14:18:12Zsegfault3Support TCRYPT in ShellMountPasswordDialogSupport unlocking TCRYPT volumes via the ShellMountPasswordDialog.
Adds UI elements to the dialog in order to allow the user to supply the parameters required for TCRYPT volumes.
Requires the patches to glib from [this merge reques...Support unlocking TCRYPT volumes via the ShellMountPasswordDialog.
Adds UI elements to the dialog in order to allow the user to supply the parameters required for TCRYPT volumes.
Requires the patches to glib from [this merge request](https://gitlab.gnome.org/GNOME/glib/merge_requests/120) (merged and released in glib 2.57.2).
See also the corresponding [merge request to GVfs](https://gitlab.gnome.org/GNOME/gvfs/merge_requests/4/) (merged and released in GVfs 1.37.4).