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.
What it does
- Reads the charts itself. The S-57 reader, the chart updates, the symbols and the renderer are all written from scratch in Rust, with no map library or GDAL in between. The reader is checked against GDAL on every California cell NOAA publishes: the same features and the same vertices, updates applied.
- Follows the boat. It opens following, and panning stops it. f follows again, c centers once.
- Says what's there. Click the chart for what's charted at that spot. With the wind on, the card leads with the forecast for that very spot and the nearest station within 10 nm.
- Wind, forecast and measured. HRRR barbs from omawind, and the wind NOAA's piers and buoys measured, drawn as accent barbs labeled like
7g11. The time bar shows when the breeze builds. - The stream, where you are looking. s draws the tidal current over the chart from omatide — flood, ebb and slack at each of NOAA's stations, at whatever moment the time bar is on.
- Every day you have sailed. p draws the tracks omalogbook kept, each day joined into the one trip it was. d opens a calendar to pick a day out of them.
- A waypoint. Right-click, or w, for bearing, range and ETA from the boat.
- Night Watch. n turns the window red on black, chart and all. Marks keep their meaning by brightness, shape and label.
The stream over the chart
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
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
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
| Key | Does |
|---|---|
| h j k l | Pan; the arrows work too |
| + - | Zoom; so does scrolling |
| f | Follow the boat, or stop |
| c | Center on the boat once |
| Click, i | What's charted there, or at the center |
| w, right-click | Set a waypoint; W clears it |
| b | Wind barbs, forecast and measured |
| s | The tidal stream, from omatide |
| p | Your trips, from omalogbook |
| d | The calendar: a day you sailed, and go there |
| [ ] | The wind and the stream an hour earlier, later |
| t | The time bar: the wind at the boat and the stream on the chart, hour by hour |
| space | Play the wind hour by hour |
| n | Night Watch |
| ? | Every key |
| q | Close |
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
- No routes yet. One waypoint at a time.
- The line the boat draws as you sail is this session's own. The days behind it come from omalogbook, and today's joins them as the log writes it.
- Labels can crowd each other near busy harbor entrances.
- No touch gestures.