Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Work mode

Hydra in a terminal can look like a terminal at work. Type .work on a character’s screen and the whole screen becomes a shell running a job: repositories cloned, a build compiling, a log scrolling by. Nothing of the game is drawn, the terminal’s title is the shell’s, no sound plays and no notification shows, and the tray icon goes away. Type .work again and your screen is back as it was, with every line you missed in it.

The game plays on underneath. Your characters stay logged in, your triggers fire, Lich runs, and what you type still goes to the game: the prompt at the foot of the fake shell is your real command line in disguise. Keybinds and macros work as always.

PS C:\src> git clone https://github.com/lindqvist/shardlog.git
Cloning into 'shardlog'...
remote: Enumerating objects: 4281, done.
remote: Counting objects: 100% (612/612), done.
remote: Compressing objects: 100% (288/288), done.
Receiving objects: 100% (4281/4281), 28.70 MiB | 3.05 MiB/s, done.
Resolving deltas: 100% (2130/2130), done.
PS C:\src> cd shardlog
PS C:\src\shardlog> git log --oneline -8
3f9a1c2 Fix retry logic
8be04d7 Bump dependency pins
PS C:\src\shardlog> 

The command

  • .work covers the screen, or lifts the cover.
  • .work on and .work off do one or the other, for a key bound to each.
  • .work curl, .work build, .work tail or .work ssh cover the screen with that scene and keep to it. Bare .work plays one at random each time a scene ends.
  • .work help says all of this.

Bind a key to any of these in Menu › Editors › Keys, as you would bind any command.

The scenes

A scene is a shell’s job, line by line, at a believable pace, with its names drawn afresh each time round. Four come with Hydra:

  • curl: repositories fetched and cloned, their files listed and their README read. Dense and long, and anything odd in it looks like part of the download.
  • build: a Rust workspace compiled, a test failing, the file opened, the test run again.
  • tail: a web server’s access log followed, with bursts and the odd error.
  • ssh: a remote host’s journal followed, a service looked at, the disk checked.

Nothing is fetched from anywhere. A progress meter is a formula; the names are lists in the scene’s file; the addresses are the documentation ranges that belong to nobody. The clock in a log line is the real one, running on from when the cover went up.

The four are written to global/work/ in your data folder the first time the cover goes up, as curl.toml and so on. Change one there and your version is used; add a file of your own and .work <its name> plays it. Hydra never writes over a file that is there, so delete one to get the shipped version back.

Writing a scene

title = "curl"                 # the terminal's title while this plays
prompt = "PS C:\\src{dir}> "   # {dir}: where the scene has gone
rest = 20                      # seconds idle at the prompt before it plays again

[names]                        # {repo}, {user}: one picked each time round
repo = ["fast-json-rs", "kube-rollout"]
user = ["mkdev", "lindqvist"]

[[lines]]
text = "git clone https://github.com/{user}/{repo}.git"
wait = 1.5                     # seconds after the line before
jitter = 1                     # at most this much more or less
color = "plain"                # plain, dim, green, yellow, red, cyan, magenta

[[lines]]
meter = "git"                  # a progress meter, redrawn in place: git or curl
lasts = 8                      # seconds to reach the end

[[lines]]
text = "cd {repo}"
dir = "\\{repo}"               # the prompt's {dir} from here

[[lines]]
text = "{date} {clock} {n:100-999} {hash}"
times = 40                     # the line again this many times, names drawn afresh

The slots: {name} for any list under [names], kept the same all the way round; {n:a-b} a number from a to b, fresh every use; {hash} seven hex digits; {clock} the time of day as 14:36:10, {date} today as 28/Oct/2026, {day} as Oct 28; {dir} where the scene has gone. A line with clear = true empties the screen first.

The one thing that gets through

A script check is the reason to be at the keyboard, and the cover would hide it. So one thing passes: any line the lookout has not learned is written into the scene as its next line of output, plain, with no mark, in the scene’s own colour. To someone looking over your shoulder it is one odd line in a wall of output. To you, who know to look, it is the warning. Answer by typing, as always; the prompt is your command line.

Keep the lookout learning before you rely on this. A lookout that has not learned your routine passes most of your story through the cover.

Covering itself

The Work mode rows of Hydra’s General settings page:

  • Work mode prompt: what your command line is drawn after, over each scene’s own. PS C:\src{dir}> or ops@web-03:~{dir}$, with {dir} where the scene has gone. A space is put after it.
  • Work mode scene: the scene to play and keep to. Empty, one at random each time round.
  • Cover on focus lost: the screen covers itself when the terminal’s window loses the focus, as you click away to something else. A click back does not lift it: .work does.
  • Cover after idle: seconds without a key before the screen covers itself. 0 never.

What it cannot hide

  • Mid-word. The prompt shows what you are typing. attack is attack until you press Enter. Give the telling commands an alias.
  • The terminal program. The taskbar, a hover, and a task manager still show the terminal program by its own name, and hydra-tui as a process. Over SSH from another computer, none of that is there.
  • Hydra’s windows. Sounds, notifications and the tray icon are held back only while no Hydra window is open on the same computer. A play window open beside the terminal plays its sounds, and shows the game.
  • The clock in a log. It is the real one. A log that says 14:36 at nine in the morning is a log of somewhere else.