soreau,
created on Saturday, 13 September 2025, 02:52:07 (1757731927),
received on Saturday, 13 September 2025, 14:57:02 (1757775422)
Author identity: Scott Moreau <oreaus@gmail.com>
a0d3f2cc911a2c77ba1a31ab894d18d2c798b93c
main.py
@@ -107,16 +107,14 @@ class PanoramaBG(Gtk.Application):
yaml_file = yaml_loader.load(config_file) monitors = self.display.get_monitors() for monitor in monitors: background_window = BackgroundWindow(self, monitor) monitor.background_window = background_window if monitor.get_connector() in yaml_file["monitors"]: background_window.put_sources(yaml_file["monitors"][monitor.get_connector()]["sources"])background_window.time_per_image = yaml_file["monitors"][monitor.get_connector()]["time_per_image"] background_window.change_image()background_window.picture.set_content_fit(FITTING_MODES[yaml_file["monitors"][monitor.get_connector()]["fitting_mode"]])background_window.put_sources(yaml_file["monitors"][monitor.get_connector()]["sources"]) background_window.picture1.set_content_fit(FITTING_MODES[yaml_file["monitors"][monitor.get_connector()]["fitting_mode"]]) background_window.picture2.set_content_fit(FITTING_MODES[yaml_file["monitors"][monitor.get_connector()]["fitting_mode"]])background_window.present()
@@ -208,6 +206,7 @@ class BackgroundWindow(Gtk.Window):
self.sources = [] self.time_per_image = 0 self.current_timeout = None self.pic1 = TrueGtk4LayerShell.init_for_window(self) Gtk4LayerShell.set_namespace(self, "com.roundabout_host.panorama.background")
@@ -219,8 +218,17 @@ class BackgroundWindow(Gtk.Window):
Gtk4LayerShell.set_anchor(self, Gtk4LayerShell.Edge.BOTTOM, True) Gtk4LayerShell.set_anchor(self, Gtk4LayerShell.Edge.RIGHT, True) self.picture = Gtk.Picture()self.set_child(self.picture)self.picture1 = Gtk.Picture() self.picture2 = Gtk.Picture() self.stack = Gtk.Stack() self.stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) self.stack.add_child(self.picture1) self.stack.add_child(self.picture2) self.stack.set_visible_child(self.picture1) self.set_child(self.stack)def put_sources(self, sources): self.all_sources = []
@@ -232,10 +240,20 @@ class BackgroundWindow(Gtk.Window):
else: self.all_sources.append(path) self.all_sources = self.all_sources self.stack.set_transition_duration(1000) now = GLib.DateTime.new_now_local() self.change_image()def change_image(self): now = GLib.DateTime.new_now_local() self.picture.set_filename(str(self.all_sources[now.to_unix() // self.time_per_image % len(self.all_sources)]))# Ping pong between images is required for transition if self.pic1: self.picture1.set_filename(str(self.all_sources[now.to_unix() // self.time_per_image % len(self.all_sources)])) self.stack.set_visible_child(self.picture1) else: self.picture2.set_filename(str(self.all_sources[now.to_unix() // self.time_per_image % len(self.all_sources)])) self.stack.set_visible_child(self.picture2) self.pic1 = not self.pic1time_until_next = self.time_per_image - now.to_unix() % self.time_per_image self.current_timeout = GLib.timeout_add_seconds(time_until_next, self.change_image) return False