Giter Site home page Giter Site logo

wax_talon's Introduction

Wax Talon

Record your Talon sessions. Supports QuickTime, OBS, Cursorless, as well as capturing information about Talon commands, rules, phrase timing, etc. For an example of a video generated using this recorder and its associated postprocessor, see https://pokey.github.io/videos/P2QKl-g4CGs/. For an example of the raw output of this recording code, see the example.

WARNING: This code relies on undocumented and experimental Taon APIs, so it may break with future versions of Talon.

Note that the OBS recorder currently only works on MacOS, as it relies on Mac accessibility APIs to start and stop recording.

Example

Add the following to a Talon file:

not tag: user.wax_is_recording
-
^record start$:
    cursorless_recorder = user.wax_cursorless_recorder()
    quicktime_recorder = user.wax_quicktime_recorder()
    obs_recorder = user.wax_obs_recorder()
    user.wax_start_recording(cursorless_recorder, quicktime_recorder, obs_recorder)

And add the following to another Talon file:

tag: user.wax_is_recording
-
^record stop$: user.wax_stop_recording()

These files will create commands "record start" and "record stop". The "record start" command will do the following:

  • Start QuickTime screen recording. The location of this recording will depend on your default QuickTime directory, for example ~/Desktop.
  • Start OBS recording (eg to capture face). The location of this recording will depend on your default OBS directory, for example ~/Movies.
  • Create a subdirectory of ~/talon-recording-logs to capture information about the current recording. See below for more on what we capture. The directory will be named for the current timestamp in UTC, eg ~/talon-recording-logs/2022-02-23T17-18-00/
  • Create a talon-log.jsonl file within the above directory, where most information will be captured.
  • Capture git SHAs of all subdirectories of ~/.talon/user. This information will appear in the above talon-log.jsonl file
  • Flash the screen purple. All timestamps captured below will be represented as seconds from this purple flash. This way all timestamps can be precisely reconciled to your screen recording.

Then after each command phrase:

  • Cause Cursorless to capture each Cursorless command, including the editor state and the full json payload to VSCode, within a subdir of the above capture directory
  • Cause Talon to take a snapshot of VSCode editor state before and after executing every command phrase in the above directory
  • Dumps timing information about every command phrase including start and end times, which can be used to generate screenshots from the video or automatically edit the video
  • Capture links to the rules that were activated by the command phrase
  • Capture other information such as Talon tags, etc
  • Quickly flashes all Cursorless marks that were referred to during the command phrase and captures the timestamp of this moment. This information can be used to automatically highlight referenced marks in postprocessing

You can tweak the above Talonscript to remove any of the recorders, if eg you don't want to capture Cursorless commands, start QuickTime, etc.

Postprocessing

See https://github.com/pokey/voice_vid.

Making a custom recorder

See the examples in recorders.

wax_talon's People

Contributors

pokey avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.