omahoy.org github

Chartplotterearly · v0.1MIT

omahelm

NOAA's charts, in your Omarchy theme, with your boat on them. Soundings, contours and shading, buoys and beacons labeled the way a paper chart labels them, lights and their sectors, rocks and wrecks, traffic lanes and anchorages. The boat, its track and the AIS traffic come from omakeel, the wind from omawind, the tidal stream from omatide, and every day you have sailed from omalogbook.

omahelmb wind · t time bar · space play
Leaving Berkeley Marina on the sample sail. b puts on the forecast wind and the stations' measured wind, t opens the time bar, and space plays the forecast hour by hour.

What it does

The stream over the chart

omahelmpress s
The chart of the central bay with a thinned selection of tidal current arrows, each labeled with its speed in knots, one station drawn as a ring. The boat is under way off Berkeley with an AIS target, BAY RUNNER, north of her.
The stream where you are actually looking, on the sample sail. Red ebbs, blue floods, and a ring stands where there is no way to draw — slack water, or a bin NOAA publishes no direction for. The chip reads 48 of 96 stations: NOAA surveyed the bay in clusters, a dozen of them inside a mile off Angel Island, so the arrows are thinned by how close they land on screen and the strongest wins the room. Point at one that wasn't drawn and it still answers.

The arrows come from omatide over a socket, worked out from NOAA's harmonic constants on this machine. Nothing about tides lives in the chartplotter, and omahelm draws no arrows when omatide isn't running.

One bar drives both layers. Drag the time bar and the wind barbs and the stream arrows move together, hour by hour, out to a day with the stream on. The graph along it ticks each slack; with the stream on its own it shades the flood above slack water and the ebb below, and alongside the wind it stays a line, because two shaded bands fight. Past the end of the wind forecast the barbs stop and the arrows keep going — a tide is arithmetic, so it answers for any moment you ask.

On
s, with omatide running
When
t, then drag, or [ ] by the hour
Flood
The theme's accent
Ebb
The theme's red
A ring
Slack, or no direction published

Where you've been

omahelmpress p
The central bay with one day's track drawn across it: out of Berkeley Marina, west across the bay and down to the Golden Gate, then back. One leg of it is drawn as a dashed straight line.
One day out of the logbook: Berkeley Marina to the Gate and back. The receiver lost its fix for half an hour between Sausalito and the Gate, so the log closed that passage and opened another when it came back — four passages, three holes, two of them a few meters at the slip. They are drawn as the single trip they were, and the leg nobody sailed is dashed: 20.2 nm, 2.5 of it inferred.
omahelmpress d
A calendar for September 2026 over the chart. The 21st carries a mark and is highlighted; below the grid it reads 4 passages, 20.2 nm, 2.5 inferred, 11:43 to 16:31, 4 h 48 min.

omalogbook closes a passage whenever the fix is lost for long enough, so one afternoon can land on disk as several files with holes between them. omahelm reads them a day at a time and joins each day into the trip it was.

A run is solid, because that is track. A gap is dashed, because a straight line is not where the boat went — on a flood at the Gate it is nowhere near. They are counted apart, always, and the chip says how much of a day was which.

Every day draws at once, faintly, so a season is one picture of your waters. The day you pick out is drawn over the rest, with a ring where it began and a dot where it ended.

d opens the calendar on the last day you sailed. The arrows move a day, [ ] a month, and { } jump to the next day there is a track for. Enter shows it; x goes back to all of them.

omahelm only reads. The vault is omalogbook's, and the chartplotter follows wherever that is kept — or a logbook setting of its own, if your tracks live somewhere else. A day can come out as one file too, its holes closed, for anything else that reads GPX:

$ target/release/omahelm trips                                  # every day, with its run
$ target/release/omahelm trip --date 2026-09-21 --out day.gpx   # that day, as one track

In every Omarchy theme

omahelmsix themes, then n

The chart takes its colors from the active Omarchy theme and redraws when you switch. Colors that mean something at sea don't follow the theme: a green buoy stays green even when the theme's green is amber.

For after dark, Night Watch turns this one window red on black, whatever the theme, and leaves the rest of the desktop alone. Or choose palette = "paper" for the colors of a paper chart.

Keys

KeyDoes
h j k lPan; the arrows work too
+ -Zoom; so does scrolling
fFollow the boat, or stop
cCenter on the boat once
Click, iWhat's charted there, or at the center
w, right-clickSet a waypoint; W clears it
bWind barbs, forecast and measured
sThe tidal stream, from omatide
pYour trips, from omalogbook
dThe calendar: a day you sailed, and go there
[ ]The wind and the stream an hour earlier, later
tThe time bar: the wind at the boat and the stream on the chart, hour by hour
spacePlay the wind hour by hour
nNight Watch
?Every key
qClose

Install

You need Rust and the Omarchy shell. Build it, add it to the shell, then download your waters. NOAA's charts are free:

$ git clone https://github.com/shieldsworks/omahelm ~/.local/share/omahelm/src
$ cd ~/.local/share/omahelm/src
$ cargo build --release --locked
$ bash scripts/link-plugin.sh
$ target/release/omahelm fetch CA   # California, about 55 MB

Open it with omarchy shell shell toggle org.omahoy.helm "{}", or on its own with ./run.sh. Run fetch again each week for NOAA's corrections. The README covers settings: units, safety depth and contours.

Not yet

Theme press T