# Free Software Foundation, version 3.
from dataclasses import dataclass
+from datetime import datetime
import os
import subprocess
from typing import Callable
'XDG_VIDEOS_DIR',
os.path.expanduser('~/Videos'))
os.makedirs(directory, exist_ok=True)
- return os.path.join(directory, "screen-recording.mkv")
+ timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+ return os.path.join(directory, f'srec {timestamp}.mkv')
def on_start_recording(_: Gtk.Button, stack: Gtk.Stack) -> None:
global recording # pylint: disable=global-statement
assert recording is None
- screen_size = '1366x768' # TODO
filename = make_filename()
command = [
'ffmpeg',
- '-video_size', screen_size,
'-framerate', '25',
'-f', 'x11grab', '-i', ':0.0+0,0',
'-f', 'pulse', '-ac', '2', '-i', 'default',
win.set_title('SRec')
stack = Gtk.Stack()
- start_recording = make_button("Start Recording", on_start_recording, stack)
- stack.add_named(start_recording, "not_recording")
+ nr_box = Gtk.Box()
+ nr_box.set_orientation(Gtk.Orientation.VERTICAL)
+ nr_box.append(make_button("Start Recording", on_start_recording, stack))
+ stack.add_named(nr_box, "not_recording")
- box = Gtk.Box()
- box.set_orientation(Gtk.Orientation.VERTICAL)
- stop_recording = make_button("Stop Recording", on_stop_recording, stack)
- box.append(stop_recording)
- stack.add_named(box, "recording")
+ r_box = Gtk.Box()
+ r_box.set_orientation(Gtk.Orientation.VERTICAL)
+ r_box.append(make_button("Stop Recording", on_stop_recording, stack))
+ stack.add_named(r_box, "recording")
win.set_child(stack)
win.present()