bateri

Not just the window. The pane.

bateri gives every tab and every split an address of its own. Evlat keeps it for each session that starts there, so Open in bateri brings the window back, selects the tab and hands the keyboard to the exact split the agent is waiting in.

nothing to set up · every tab and split · on this Mac, over ssh, behind sbx run

Every pane, an address

bateri says where. Evlat remembers.

  1. bateri names each pane

    Every tab and every split gets an address of its own, bateri://tab/ and a UUID, handed to its shell as BATERI_TAB_URL. It stays with the pane for as long as the pane lives.

  2. Evlat keeps it

    When an agent starts in that pane, Evlat reads the address from the agent’s own environment and checks its shape: bateri://tab/ and a UUID, or nothing at all.

  3. One click opens it

    bateri brings the window back, from the Dock if it has to, selects the tab and gives the keyboard to that split. You land where the question is, ready to answer.

Wherever you started it

The same pane, near or far.

On this Mac

The tab and the split, even in a window you minimised or one buried under other tabs.

Over ssh

bateri carries the pane’s address to the server as LC_BATERI_TAB_URL. For a server in Settings → Servers, a session there opens the pane you typed ssh in.

In a Docker sandbox

sbx run doesn’t take the address into the sandbox, but its client in your pane has it. Go to session opens the pane you ran it from.

Under tmux or herdr

The pane of the client you used last. In herdr the session’s own herdr pane is selected too; when it can’t be, the button says Open herdr in bateri.

Only focus

An address that can only point.

Any app can open a bateri:// link, so bateri lets it do one thing: show you the pane.

  • What it does

    Brings the window back, selects the tab and gives the keyboard to the pane.

  • What it never does

    Send a byte to the shell, run a command or open a window.

  • A pane that’s gone

    If you closed it, bateri only comes forward. Nothing else moves.

Meet bateri

A calm terminal, drawn on the GPU.

bateri is a macOS terminal written in Rust and drawn through Metal, with nothing in between. It is the terminal Evlat goes furthest with.

Get baterimacOS 14 or later · Apple silicon · free software, GPL-3.0

Command blocks
Each command and its output form a block, marked in the gutter by how it ended. Long ones say how long they took.
The input dock
The line you type lives at the bottom of the window, with your directory and git branch under it.
ssh aware
Over ssh the dock becomes a status bar with the host, coloured by how you marked it. Drop files on the window to upload them.
Zero idle frames
Nothing is drawn unless something changed, so a window you aren’t using costs no GPU time.

Good to know

Nothing to set up
No setting in either app. bateri hands the address to every shell it starts, and Evlat reads it when a session begins.
Servers
The address reaches a server from bateri 0.3 on: through bateri’s own shell integration, or a server that accepts LC_* variables, as Debian and Ubuntu do out of the box.
Other terminals
Metalterm and Warp open their tab too, iTerm2 its session. Terminal and Ghostty only come forward: choosing their tab would need a macOS permission Evlat doesn’t ask for.

Download for MacWhat works where