Omahub
← All plugins
A

Linecast

by Andrew Shuttleworth

Weather, sun, moon, and tide pills from linecast, each opening a panel drawn in the theme

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
1636f64
Scanned
1 week ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
1636f64
Reviewed
1 week ago

The deterministic scan found no issues, and the sampled code is straightforward, transparent shell and QML with no obfuscation, persistence, credential access, or destructive install-time behavior. The only mild concerns are string-interpolated shell commands in QML and a preference for a system-installed linecast from PATH, both of which rely on the user's own configuration and the standard PATH trust model.

  • BarWidget.qml builds a shell command by interpolating the user-controlled tempFlag into a Process/bar.run string; this is a code smell, though the value comes from the user's own widget config, so it is not a practical attack.
  • bin/linecast prefers an installed linecast from PATH over the bundled copy, so a tampered linecast binary on PATH would run with the user's privileges; this is the standard PATH trust model and not unique to this plugin.
  • The bundled vendor/linecast Python source is not included in the review sample; it runs with the system Python, but it is the same author, MIT-licensed, and the deterministic scan flagged nothing.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/ashuttl/omarchy-linecast --enable
Widgets #bar #quickshell

omarchy-linecast

An Omarchy bar-widget plugin built on linecast — weather, the sun, the moon, the tides, radar, and maps, drawn for the terminal. The bar gets a pill for each of the first four; every pill opens a panel that matches the stock ones and re-inks itself when you switch themes. linecast itself comes bundled, so there is nothing else to install.

preview

What you get

  • Weather pill, always visible: icon and temperature, the full oneline summary as a tooltip. Sunshine, moon, and tide pills tuck away and slide out on hover, the same gesture as the stock indicators widget — or stay out, or stay hidden; your choice, from inside the panel.
  • Left click on any pill opens its panel, anchored to that pill. Right click opens the matching linecast view in a floating terminal. r refetches, Escape closes, Tab moves to the neighboring bar panels.
  • Weather panel: current conditions with a plain-English comparison to yesterday, weather alerts, a scrollable hourly temperature line and a week of range bars in linecast's temperature colors, and wind, humidity, sun times, and air quality at a glance. Click the place name to change location.
  • Sunshine panel: the day's solar arc under a sky that follows the hour, the sun at its current position, with sunrise, sunset, day length and its day-to-day drift.
  • Moon panel: a drawn phase disc (correct terminator, hemisphere aware), phase and illumination, moonrise and moonset, the next full and new moons.
  • Tides panel: the tide curve for the day with the water marked at now, the turns labeled, the next high or low, and the station name.
  • Radar and Maps, one click from the weather panel: linecast's live precipitation radar and its terrain, street, and globe maps open in a floating terminal.

Everything is colored from the current Omarchy theme, and so is linecast itself, so the bar, the panels, and the terminal views all change together when you switch themes.

Requirements

Nothing beyond a stock Omarchy. The plugin carries its own copy of linecast (vendor/linecast, v1.15.1, MIT, same author) and runs it with the system Python — linecast has no dependencies outside the standard library. If you have linecast installed already, from the AUR (yay -S linecast) or with uv tool install linecast, the plugin uses yours instead, so the bar and your terminal always agree. jq and a Nerd Font in the bar are part of Omarchy.

Install

omarchy plugin add https://github.com/ashuttl/omarchy-linecast.git --enable

Then add the widget to the bar if it wasn't added automatically:

omarchy bar move ashuttl.linecast --section center

Remove

omarchy plugin remove ashuttl.linecast

That takes the widget off the bar and deletes the plugin, bundled linecast included. A few small files are left for you to delete by hand if you like: the pill caches at ~/.cache/omarchy-bar-*-oneline, the plugin's compiled Python at ~/.cache/omarchy-linecast/, the location recents at ~/.local/state/omarchy/linecast-recent-locations.json, and linecast's own settings and caches at ~/.config/linecast/ and ~/.cache/linecast/. A linecast you installed yourself stays put.

Settings

Which pills show is set from the weather panel (the Pills row at the bottom), or inline in the widget's shell.json entry, which hot-reloads on save:

  • pills (default all four: ["weather", "sunshine", "moon", "tides"]) — which pills show, in order. The first is the always-visible pill and hosts the panel; the rest slide out on hover. Weather and tides only, for instance:

    { "id": "ashuttl.linecast", "pills": ["weather", "tides"] }
    
  • alwaysShow (default false) — keep every pill out instead of sliding the extras in on hover.

  • clock (default 24h) — 24h or 12h times in the pills and panels.

  • temperature (default: follow linecast) — fahrenheit or celsius, independent of linecast's metric/imperial setting, so °C with mph is a choice. Wind, rain, and tide-height units come from linecast units metric|imperial, which the panel's buttons set.

Location follows linecast location; change it from the weather panel or with linecast location set <place> and every pill and panel follows.

Scripting

Panels can be driven from keybindings or scripts:

omarchy-shell ashuttl.linecast openSection tides   # weather|sunshine|moon|tides
omarchy-shell shell toggle ashuttl.linecast        # last-used face

Notes

Everything runs through bin/linecast, a small wrapper that picks an installed linecast when one is on PATH and the bundled tree otherwise (bin/linecast --source tells you which). The pills shell out to scripts/linecast-*.sh, which cache linecast's --oneline output under ~/.cache/; each panel runs its linecast <command> --json on first open and refetches when stale. Nothing here talks to the network directly — linecast does, to Open-Meteo, NOAA, and the other sources it documents.

scripts/vendor.sh v1.15.1 refreshes the bundled copy from a linecast tag.

License

MIT.