import Clutter from 'gi://Clutter'; import Cogl from 'gi://Cogl'; import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; import Meta from 'gi://Meta'; const DEFAULT_BACKGROUND_COLOR = Clutter.Color?.from_pixel(0x2e3436ff) || new Cogl.Color({red: 40, green: 40, blue: 40, alpha: 255}); let _systemBackground; export const SystemBackground = GObject.registerClass({ Signals: {'loaded': {}}, }, class SystemBackground extends Meta.BackgroundActor { _init() { if (_systemBackground == null) { _systemBackground = new Meta.Background({meta_display: global.display}); _systemBackground.set_color(DEFAULT_BACKGROUND_COLOR); } super._init({ meta_display: global.display, monitor: 0, }); this.content.background = _systemBackground; let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { this.emit('loaded'); return GLib.SOURCE_REMOVE; }); GLib.Source.set_name_by_id(id, '[gnome-shell] SystemBackground.loaded'); } });