roundabout,
created on Saturday, 13 September 2025, 15:39:25 (1757777965),
received on Saturday, 13 September 2025, 15:39:29 (1757777969)
Author identity: Vlad <vlad.muntoiu@gmail.com>
d5405c968501f8a79d4e88f26b15a1438bb3981b
main.py
@@ -78,6 +78,42 @@ FITTING_MODES_REVERSE = {
Gtk.ContentFit.SCALE_DOWN: "scale_down",
}
TRANSITION_MODES = {
"fade": Gtk.StackTransitionType.CROSSFADE,
"stack_down": Gtk.StackTransitionType.OVER_DOWN,
"stack_up": Gtk.StackTransitionType.OVER_UP,
"stack_left": Gtk.StackTransitionType.OVER_LEFT,
"stack_right": Gtk.StackTransitionType.OVER_RIGHT,
"take_down": Gtk.StackTransitionType.UNDER_DOWN,
"take_up": Gtk.StackTransitionType.UNDER_UP,
"take_left": Gtk.StackTransitionType.UNDER_LEFT,
"take_right": Gtk.StackTransitionType.UNDER_RIGHT,
"push_down": Gtk.StackTransitionType.SLIDE_DOWN,
"push_up": Gtk.StackTransitionType.SLIDE_UP,
"push_left": Gtk.StackTransitionType.SLIDE_LEFT,
"push_right": Gtk.StackTransitionType.SLIDE_RIGHT,
"cube_left": Gtk.StackTransitionType.ROTATE_LEFT,
"cube_right": Gtk.StackTransitionType.ROTATE_RIGHT,
}
TRANSITION_MODES_REVERSE = {
Gtk.StackTransitionType.CROSSFADE: "fade",
Gtk.StackTransitionType.OVER_DOWN: "stack_down",
Gtk.StackTransitionType.OVER_UP: "stack_up",
Gtk.StackTransitionType.OVER_LEFT: "stack_left",
Gtk.StackTransitionType.OVER_RIGHT: "stack_right",
Gtk.StackTransitionType.UNDER_DOWN: "take_down",
Gtk.StackTransitionType.UNDER_UP: "take_up",
Gtk.StackTransitionType.UNDER_LEFT: "take_left",
Gtk.StackTransitionType.UNDER_RIGHT: "take_right",
Gtk.StackTransitionType.SLIDE_DOWN: "push_down",
Gtk.StackTransitionType.SLIDE_UP: "push_up",
Gtk.StackTransitionType.SLIDE_LEFT: "push_left",
Gtk.StackTransitionType.SLIDE_RIGHT: "push_right",
Gtk.StackTransitionType.ROTATE_LEFT: "cube_left",
Gtk.StackTransitionType.ROTATE_RIGHT: "cube_right",
}
class PanoramaBG(Gtk.Application):
def __init__(self):
@@ -116,6 +152,7 @@ class PanoramaBG(Gtk.Application):
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.stack.set_transition_type(TRANSITION_MODES[yaml_file["monitors"][monitor.get_connector()]["transition_mode"]])
background_window.present()
@@ -192,7 +229,9 @@ class PanoramaBG(Gtk.Application):
data["monitors"][monitor.get_connector()] = {
"sources": window.sources,
"time_per_image": window.time_per_image,
"fitting_mode": FITTING_MODES_REVERSE[window.picture.get_content_fit()],
"fitting_mode": FITTING_MODES_REVERSE[window.picture1.get_content_fit()],
"transition_ms": window.stack.get_transition_duration(),
"transition_mode": TRANSITION_MODES_REVERSE[window.stack.get_transition_type()],
}
yaml_writer.dump(data, config_file)
@@ -223,7 +262,6 @@ class BackgroundWindow(Gtk.Window):
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)