Skip to content

Refactor screen recorder to single-process architecture, add a control panel and new settings#867

Open
fliplus wants to merge 3 commits into
noctalia-dev:mainfrom
fliplus:screen-recorder/single-process-refactor
Open

Refactor screen recorder to single-process architecture, add a control panel and new settings#867
fliplus wants to merge 3 commits into
noctalia-dev:mainfrom
fliplus:screen-recorder/single-process-refactor

Conversation

@fliplus
Copy link
Copy Markdown

@fliplus fliplus commented May 17, 2026

Summary

Recording and replay buffer now share a single process instead of two separate process trees. State is driven by actual process events rather than timers. A new panel and several settings were added.

New Features

  • Panel widget: control panel with start/stop recording and replay buttons, plus a recording timer
  • Button action setting: bar and control center widgets now have a configurable click action: toggle recording, toggle replay, save replay, or open panel
  • Rate control setting: QP, VBR, or CBR. When CBR is selected, a bitrate field (kbps) replaces the quality preset
  • Post-recording script: path to a script to run after each recording/replay saves
  • Replay notifications toggle and auto-start replay on plugin load

Changes

  • Replaced the dual recording/replay process architecture with a single recorderProcess shared by both modes (recording and replaying); all replay-specific processes were removed
  • Removed isPending, isReplayPending, hasActiveRecording and all associated timers; state is now two booleans (isRecording, isReplaying) driven directly by process events
  • Backend detection (native vs. flatpak) moved from plugin startup to recording start via a dedicated backendCheckProcess; the startup checker process and isAvailable state removed
  • Starting a recording while replay is active now reuses the existing portal session (sends SIGRTMIN) instead of launching a new process
  • Filename pattern is now fixed as Video_yyyy-MM-dd_HH-mm-ss.mp4; the user-configurable filenamePattern setting was removed. This was done for consistency with replay mode, which does not support custom file names
  • IPC handlers renamed: toggle -> toggleRecording, start -> startRecording, stop -> stopRecording
  • Removed replayEnabled setting, replay is always available
  • Settings menu reordered and reorganised into General / Video / Audio / Replay sections
  • General code cleanup and refactoring throughout the whole plugin
  • Version bumped 1.3.7 -> 1.4.0

Notes: I have only tested this on NixOS with Niri and the native gpu-screen-recorder package. Flatpak and Hyprland have not been tested. Non-English translations were generated with AI, I cannot guarantee they are accurate.

…ral refactoring, add control panel and new settings
@github-actions
Copy link
Copy Markdown
Contributor

@Ly-sec - this PR modifies your plugin. Please review when you have a chance.

@github-actions
Copy link
Copy Markdown
Contributor

Automatic Code Quality Review


File: screen-recorder/BarWidget.qml

  • (H) Missing required property widgetId. For example:
property string widgetId: ""
  • (H) Missing required property section. For example:
property string section: ""
  • (H) Missing required property sectionWidgetIndex. For example:
property int sectionWidgetIndex: -1
  • (H) Missing required property sectionWidgetsCount. For example:
property int sectionWidgetsCount: 0

@fliplus fliplus changed the title Refactor screen recorder to single-process architecture Refactor screen recorder to single-process architecture feat, add a control panel and new settings May 17, 2026
@fliplus fliplus changed the title Refactor screen recorder to single-process architecture feat, add a control panel and new settings Refactor screen recorder to single-process architecture, add a control panel and new settings May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant