DejaVideo lives in your menu bar. It allows you to record your screen continuously and to export the last minute at any moment.
- With a minimum impact on your Mac, you can let it record always.
- Supports both dark and light mode
- 100% offline (No phoning home, no analytics, no update mechanisms)
- Opens the screen recording in QuickTime upong exporting. Hit
⌘ T
and trim it to your needs. - Has a fancy loading animation to indicate which screen is being recorded
- v1.0.2 – The initial release of DejaVideo plus some additional minor fixes.
- v1.1.0 – [Unreleased] Adds additional settings for scaling, fps and interval to record. See PR #1
This code was my first stab at using Swift. It's source is now public, because.. why not?
The ContinuousRecording state-machine aggregates a list of ScaledRecordingFragments (storing the current screen image and mousePoint position), based on the firing of a RepeatingBackgroundTimer. When exporting to video, the VidWriter merges these fragments using CVPixelBuffer.
Open up the .xcodeproj, run and DejaVideo should appear in your menu bar.
- Build a release
- Use https://github.com/sindresorhus/create-dmg
In order to let this work during development, there should be only 1 app found for the bundle identifier of the LauncherApplication.
To check whether MacOs finds ONLY the correct build (which should be /Applications):
import Cocoa
let bundleId = "deblonde.LauncherApplication"
let paths = LSCopyApplicationURLsForBundleIdentifier(bundleId as CFString, nil)
print("Available service instances by bundle id: \(String(describing: paths))")
To remove builds:
- make sure to clean the project (
⌘ + Shift + alt + K
). - make sure to clean the archives (
⌘ + Shift + 6
)
Also, it could help to bump the build number in the General options of the project
In the end deblonde.LauncherApplication
should be registered in launchctl, you can check or interact with it:
$launchctl list
$launchctl remove deblonde.LauncherApplication