def video_source(stack: Gtk.Stack) -> list[str]:
if stack.get_child_by_name('not_recording').get_first_child().get_active():
- return ['-f', 'v4l2', '-i', '/dev/video0']
- return ['-f', 'x11grab', '-i', ':0.0+0,0']
+ return ['-f', 'x11grab', '-i', ':0.0+0,0']
+ return ['-f', 'v4l2', '-i', '/dev/video0']
def on_start_recording(_: Gtk.Button, stack: Gtk.Stack) -> None:
return button
+def make_share_control() -> Gtk.CheckButton:
+ can_share = os.path.exists('/sys/module/v4l2looback')
+ control = Gtk.CheckButton(
+ label='Share Webcam', sensitive=can_share, active=can_share)
+ control.set_margin_start(20)
+ return control
+
+
def on_activate(app: Gtk.Application) -> None:
win = Gtk.ApplicationWindow(application=app)
win.set_title('SRec')
nr_box = Gtk.Box()
nr_box.set_orientation(Gtk.Orientation.VERTICAL)
- webcam = Gtk.CheckButton(label='Webcam', active=True)
- nr_box.append(webcam)
- nr_box.append(Gtk.CheckButton(label='Screen', group=webcam))
+ screen = Gtk.CheckButton(label='Screen')
+ nr_box.append(screen)
+ nr_box.append(Gtk.CheckButton(label='Webcam', active=True, group=screen))
+ nr_box.append(make_share_control())
nr_box.append(make_button("Start Recording", on_start_recording, stack))
stack.add_named(nr_box, "not_recording")