Suspend rotation while a live wallpaper is on screen
The extension's own log showed rotation kept firing ("Wallpaper
changed to ...") after live wallpaper playback had already started.
Each rotation change writes org.gnome.desktop.background's
picture-uri, which makes GNOME Shell repaint its own background actor
into the same _backgroundGroup our live wallpaper actor lives in,
landing on top of it and hiding the video/GIF entirely.
LiveWallpaperManager now takes an onActiveChanged callback, invoked
only on actual start/stop transitions, which extension.js uses to
suspend/unsuspend RotationManager. This is tracked separately from
user-initiated pause()/resume() so turning live wallpaper off restores
whatever rotation state the user actually had, and next()/previous()
now no-op while suspended so manual/forced-OLED wallpaper changes
can't sneak one in either. The indicator's "Next Wallpaper" item is
greyed out to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RDqbdjsiisSU7CbQke4g8
This commit is contained in:
+4
-1
@@ -28,6 +28,7 @@ class BenthicBloomIndicator extends PanelMenu.Button {
|
||||
nextItem.connect('activate', () => {
|
||||
rotationManager.next().catch(e => console.error(`[BenthicBloom] ${e.message ?? e}`));
|
||||
});
|
||||
nextItem.setSensitive(!settings.get_boolean(SettingsKey.LIVE_WALLPAPER_ENABLED));
|
||||
this.menu.addMenuItem(nextItem);
|
||||
|
||||
const liveToggle = new PopupMenu.PopupSwitchMenuItem(
|
||||
@@ -58,7 +59,9 @@ class BenthicBloomIndicator extends PanelMenu.Button {
|
||||
rotationToggle.setToggleState(settings.get_boolean(SettingsKey.ROTATION_ENABLED));
|
||||
}),
|
||||
settings.connect(`changed::${SettingsKey.LIVE_WALLPAPER_ENABLED}`, () => {
|
||||
liveToggle.setToggleState(settings.get_boolean(SettingsKey.LIVE_WALLPAPER_ENABLED));
|
||||
const enabled = settings.get_boolean(SettingsKey.LIVE_WALLPAPER_ENABLED);
|
||||
liveToggle.setToggleState(enabled);
|
||||
nextItem.setSensitive(!enabled);
|
||||
}),
|
||||
settings.connect(`changed::${SettingsKey.OLED_PROTECTION_ENABLED}`, () => {
|
||||
oledToggle.setToggleState(settings.get_boolean(SettingsKey.OLED_PROTECTION_ENABLED));
|
||||
|
||||
Reference in New Issue
Block a user