Skip to main content

A lifeline for ArduPilot craft.

Project description

It's a Live

It's a Live is a utility that helps you make live coding demos less error-prone by taking the "live" component and killing it.

It's a Live lets you write commands and keystrokes in a file, which it will then read and open a new terminal for you. Every time you press a key, It's a Live will write one character from the file into the terminal, making it look like you're typing every single command with the practiced ease of a consummate professional.

What it looks like

This is what it looks like:

The typing terminal is on the left and the presenter view is on the right.

Here's a screencast of It's a Live in operation. Keep in mind that the presenter is pressing keys randomly after the program starts:

asciicast

Installation

You can install It's a Live with pip:

pip install itsalive

That's about it.

Usage

Using It's a Live is pretty simple: Just write some keystrokes or commands in a file and run itsalive with it:

itsalive <command_file>

It's a Live will wait for you to press a key, and, when you do, it will instead emit one character from the command file. This way, you can type whatever old crap and it will look perfectly rehearsed, every time, with no backspaces (unless you add them in). It will also wait for you to press Enter at the end of commands, so you will never skip ahead to the next command by mistake.

What's more, It's a Live is actually running the commands you're typing, so you have full interoperability with other programs.

It's a Live also supports various commands:

  • Ctrl+d will immediately terminate the playback.
  • Ctrl+p will pause automatic playback and give you control of the terminal. This is useful for doing actually live stuff, just make sure to leave everything in a state so that playback can resume later.
  • Ctrl+r will resume playback.
  • Ctrl+f will skip forward to the next command.
  • Ctrl+g will skip back to the previous command.
  • Ctrl+u will send a Ctrl+u keystroke (wiping anything on to the left of the cursor) and rewind the current command.
  • Ctrl+e will type out the current command in its entirety.

Presenter view

It's a Live supports a presenter view, which will show the next command to be typed. To launch the presenter view, start the presentation and run, on a separate terminal:

itsalive presenter_view

If you want to leave yourself notes, you can add comments to the command file. Comments must start with ## as the first thing on the line, and they will not be typed. They will only be shown above the command in the presenter view.

Special commands

There are special commands you can add to your files. The line must start with them, with no spaces before them.


##@include <filename>: This inserts the contents of <filename> at the position of the include command. The file will be typed out, as if you had pasted it in the commands file.

Example: ##@include somefile.py.


License

It's a Live is licensed under the GPL v3 or any later version.

Acknowledgements

I would like to thank my bestie Ian Cromwell, without whom this project would be nameless.

Changelog

v0.2.3 (2022-02-28)

Fixes

  • Don't eat characters when OSC codes are emitted. [James Spurin]

v0.2.2 (2021-09-30)

Features

  • Add "--clear" flag. [Stavros Korokithakis]

Fixes

  • Don't freeze in case a presentation packet is exactly as large as the buffer size. [Stavros Korokithakis]

v0.2.1 (2020-03-10)

Features

  • Add command gutter so empty lines are more obvious. [Stavros Korokithakis]

Fixes

  • Disallow jumping past the last command (and ending playback) [Stavros Korokithakis]

  • Don't skip over the last empty command. [Stavros Korokithakis]

  • Fix race condition where the socket thread printed things to the screen before curses was set up. [Stavros Korokithakis]

  • Add the missing --address argument. [Stavros Korokithakis]

v0.2.0 (2020-03-09)

Features

  • Add curses-based presenter view. [Stavros Korokithakis]

  • Add Ctrl+r as a resumption shortcut. [Stavros Korokithakis]

Fixes

  • Only update the presenter view if the command changes. [Stavros Korokithakis]

  • Change Ctrl+b to Ctrl+g, as the former clashed with tmux. [Stavros Korokithakis]

0.1.3 (2020-03-04)

Features

  • Feat: Add ##@include directive. [Stavros Korokithakis]

0.1.2 (2020-03-04)

Fixes

  • Don't filter lines. [Stavros Korokithakis]

0.1.1 (2020-03-04)

Features

  • Add Ctrl-e shortcut. [Stavros Korokithakis]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

itsalive-0.2.3.tar.gz (23.4 kB view details)

Uploaded Source

Built Distribution

itsalive-0.2.3-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file itsalive-0.2.3.tar.gz.

File metadata

  • Download URL: itsalive-0.2.3.tar.gz
  • Upload date:
  • Size: 23.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12

File hashes

Hashes for itsalive-0.2.3.tar.gz
Algorithm Hash digest
SHA256 5c2e6ce2c34855a788ea0e9285b0963fbfaf20864dd271a9dcd095997f109392
MD5 990fb0536ad7437d54cb2ff81c5f4714
BLAKE2b-256 8d8e9094bea1dc075d52c258c0a728efc2ff1fa107e2991c696bfaf0360ec14a

See more details on using hashes here.

File details

Details for the file itsalive-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: itsalive-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.12

File hashes

Hashes for itsalive-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3b9715dcc3b1112d814a1df4642c682590cb2fa94ebae90347f67bc66eb1631d
MD5 5c44eac97dc8b7fdfb5a47e8d56ac940
BLAKE2b-256 61b6ad345afce28c08524047df1afe2f252c239a82aa4490a9c211457466f235

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page