Port Extensions to GNOME Shell 49
Metadata
TIP
There were no relevant changes to metadata.json
in GNOME 49.
Extension
TIP
There were no relevant changes to extension.js
in GNOME 49.
Preferences
TIP
There were no relevant changes to prefs.js
in GNOME 49.
GNOME Shell
Accessibility Toggles
GNOME Shell 49 added some new quick toggles to the ui/status/accessibility.js
:
HighContrastToggle
MagnifierToggle
LargeTextToggle
ScreenReaderToggle
ScreenKeyboardToggle
VisualBellToggle
StickyKeysToggle
SlowKeysToggle
BounceKeysToggle
MouseKeysToggle
For this version, they are only used in the GDM accessibility menu, but they will eventually find their way into quick settings in GNOME Shell 50.
Since the accessibility button moved to bottom of GDM, a11y
was removed from the right side of GDM panel.
Also the accessibility indicator icon name renamed from org.gnome.Settings-accessibility-symbolic
to accessibility-menu-symbolic
.
Brightness Manager
GNOME Shell 49 includes the new /misc/brightnessManager.js
file for monitor brightness management which was previously handled in gnome-settings-daemon.
The main instances of the brightness manager can be accessed with Main.brightnessManager
. The Quick settings brightness slider in ui/status/brightness.js
was adjusted accordingly and a org.gnome.Shell.Brightness
D-Bus interface was added in ui/shellDBus.js
.
Do Not Disturb Toggle
The DoNotDisturbSwitch
class in ui/calendar.js
has been removed. Its functionality has been replaced by the new DoNotDisturbToggle
quick settings toggle button, which you can now find in ui/status/doNotDisturb.js
.
Also, message indicator in date menu, now only uses message-indicator-symbolic
icon name when it is visible.
WorkspaceSwitcherPopup
There's a new MonitorWorkspaceSwitcherPopup
class, in ui/workspaceSwitcherPopup.js
. The WorkspaceSwitcherPopup
now uses this new class to create workspace switcher popups for all or primary monitors.
As a result of this change, the _redisplay()
method in WorkspaceSwitcherPopup
has been renamed to _redisplayAllPopups()
.
Meta.Rectangle
Since GNOME Shell 45, Meta.Rectangle
was deprecated. GNOME Shell 49 removed Meta.Rectangle
, and if you are still using it, it should be replaced with Mtk.Rectangle
.
Screenshot Notification
Screenshot now uses its own notification source. You can get the source with ui/screenshot.js/getScreenshotNotificationSource()
.
App Menu Button
GNOME Shell 49 removes the AppMenuButton
from js/ui/panel.js
. This button was unused since GNOME Shell 45. So if your extension still relies on that code, you'll need to implement or copy it.
CaptivePortalHandler
CaptivePortalHandler._portalHelperDone()
method in ui/status/network.js
renamed to _portalHelperStatusChanged()
and it's getting called when the StatusChanged
signal is getting emitted from portal helper.
OsdWindowManager
To show the OSD on any combination of monitors, OsdWindowManager
in ui/osdWindow.js
now uses three show methods:
show()
showOne()
showAll()
You can use showOne()
method if you still want to use the monitor index.
ScreenShield
To adapt Meta.CursorTracker
changes, ScreenShield
class in ui/screenShield.js
added a new _hidePointer()
method to hide the pointer.
NotificationsBox
players
GNOME Shell 49 added the ability to quickly pause or resume media in unlock dialog. To do that, NotificationsBox
class in ui/unlockDialog.js
added two methods: _addPlayer()
and _removePlayer()
. Added players are stored in _players
property.
Debugging
Since X11 is disabled by default, the nested mode is no longer available.
To get a nested shell instance you can use development kit:
dbus-run-session -- gnome-shell --devkit
GJS
Meta
Meta.WaylandClient
Meta.WaylandClient
was redesigned and now exists for all wayland clients. The previous use case of spawning a subprocess as a wayland client can be achieved using Meta.WaylandClient.new_subprocess
. Previous Meta.WaylandClient
functionality can be achieved via Meta.WaylandClient.owns_window
and new API exposed on Meta.Window
.
Meta.LogicalMonitor
and Meta.Monitor
Meta.LogicalMonitor
and Meta.Monitor
have been added. Their use is rather limited at the moment but they are compatible with monitor related functions on Meta.Display
via Meta.LogicalMonitor.get_number
. The monitor related functions on Meta.Display
will get phased out in future releases. They can be accessed via meta.MonitorManager.get_logical_monitors
, meta.MonitorManager.get_monitors
, Meta.LogicalMonitor.get_monitors
and Meta.Backend.get_current_logical_monitor
.
Meta.Backlight
Meta.Backlight
has been added. The backlights can be accessed via Meta.Monitor.get_backlight
and replace the backlight handling previously done in gnome-settings-daemon. See the GNOME Shell section for the abstraction over the backlights.
Meta.Window
Meta.Window
removes the Meta.MaximizeFlags
from the parameters for maximize()
and unmaximize()
. Also get_maximized()
is removed and you can use is_maximized()
instead. To maximize or unmaximize the window horizontally or vertically, you can call new methods set_maximize_flags()
and set_unmaximize_flags()
.
Meta.Window.set_type
, Meta.Window.hide_from_window_list
and Meta.Window.show_in_window_list
were added which replaces functionality previously existing on Meta.WaylandClient
.
Meta.CursorTracker
Meta.CursorTracker.set_pointer_visible()
method has been replaced by inhibit_cursor_visibility()
and uninhibit_cursor_visibility()
.
Extension Tools
gnome-extensions
added the upload
command to ease the upload process to EGO:
gnome-extensions upload --accept-tos
You can then enter your EGO username and password. If you are using it in CI, you can use the --user
, --password
or --password-file
options.
Please take measures to avoid exposing your password. Using the password in a command option risks exposing it in logs, the environment or the filesystem.
You can read more about the upload
command in the manual (man gnome-extensions
).