Omahub
← All plugins
A

Formula 1 Schedule

by Anthony Poschen

F1 schedule for Omarchy: offline Formula 1 session times, live countdowns, and local alerts.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
7c89a80
Scanned
1 month 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

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
7c89a80
Reviewed
1 month ago

This is a self-contained F1 schedule widget with no install-time code or hidden network behavior. The only external actions are a user-triggered HTTPS calendar sync and an optional, scheme-validated link opened through the system handler, both appropriately constrained. No obfuscation, persistence, credential access, or destructive behavior was found, agreeing with the deterministic scan.

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/AnthonyPoschen/omarchy-f1-schedule --enable
Widgets #bar #quickshell
<h1 align="center">Formula 1 Schedule</h1> <p align="center"> <strong>Formula 1 timing, right in your Omarchy bar.</strong><br> Offline by default · live session state · local desktop alerts </p> <p align="center"> <img src="preview.png" alt="Formula 1 Schedule timetable and settings panel in Omarchy" width="820"> </p> <p align="center"> <img src="assets/README-demo.gif" alt="Formula 1 Schedule race-start lights transitioning to LIVE in the Omarchy bar" width="428"> </p>

Formula 1 Schedule is a fast, local-first Omarchy bar widget. It puts the next session at a glance, turns its white F1 mark red while a session is LIVE, and opens a full race-weekend timetable on click.

Everything needed for normal runtime ships with the plugin: no API key, no network polling, no background service, and no battery-hungry helper process. The season timetable is loaded once from the bundled data file and the display refreshes only as often as it needs to. An optional Sync calendar now action is available in Settings; it contacts Jolpica only after you click it.

Install

omarchy plugin add https://github.com/AnthonyPoschen/omarchy-f1-schedule --enable
omarchy bar move io.github.anthonyposchen.f1-schedule --section right

To remove it later:

omarchy plugin remove io.github.anthonyposchen.f1-schedule

Dependencies

  • Runtime: Omarchy (which provides the Quickshell bar environment). Desktop alerts use the standard notify-send command; the timetable and countdown continue to work if notifications are unavailable. The optional manual calendar sync uses curl, which is included with Omarchy.
  • Maintainers only: Go, used by scripts/update-season to generate the bundled annual timetable. It is not required by an installed plugin.

Manage and configure it with Omarchy

Omarchy manages installation, updates, enablement, and bar placement:

# Check whether the plugin is installed and enabled.
omarchy plugin list

# Update the installed plugin from its Git remote.
omarchy plugin update io.github.anthonyposchen.f1-schedule

# Temporarily hide or restore it.
omarchy plugin disable io.github.anthonyposchen.f1-schedule
omarchy plugin enable io.github.anthonyposchen.f1-schedule

# Place it in the desired bar section.
omarchy bar move io.github.anthonyposchen.f1-schedule --section right

Configure from the command line

Every widget preference can be set with omarchy bar set. Changes take effect in the running bar; right-click the F1 mark to inspect or fine-tune the same values visually.

# Minutes before an enabled session alert is sent (0–60; default: 15).
omarchy bar set io.github.anthonyposchen.f1-schedule alertLeadMinutes 15 --json

# Show a session as LIVE before its scheduled start (0–60; default: 0).
omarchy bar set io.github.anthonyposchen.f1-schedule earlyLiveMinutes 0 --json

# Extend or shorten the assumed LIVE duration (-30–60; default: 0).
omarchy bar set io.github.anthonyposchen.f1-schedule finishOffsetMinutes 0 --json

# Set race/sprint start-light audio volume (0–100; default: 0).
omarchy bar set io.github.anthonyposchen.f1-schedule startLightVolume 0 --json

# Reveal the Developer section, including a ten-second race-start preview (default: false).
omarchy bar set io.github.anthonyposchen.f1-schedule developerMode true --json

# Show or hide the next-session countdown beside the F1 mark (default: true).
omarchy bar set io.github.anthonyposchen.f1-schedule showNextEvent true --json

# Set when the countdown appears, from 1 minute to 1 day (default: 120 minutes).
omarchy bar set io.github.anthonyposchen.f1-schedule nextEventLeadMinutes 120 --json

# Show the F1 bar icon always (-1), when the countdown appears (0), or within 1–14 days (default: -1).
omarchy bar set io.github.anthonyposchen.f1-schedule f1MarkVisibleWithinDays -1 --json

# Open this web URL or registered app link when the hero is clicked (default: empty).
omarchy bar set io.github.anthonyposchen.f1-schedule watchLink "https://example.com/watch" --json

# Enable or disable alerts by session type.
omarchy bar set io.github.anthonyposchen.f1-schedule alertPractice false --json
omarchy bar set io.github.anthonyposchen.f1-schedule alertSprintQualifying true --json
omarchy bar set io.github.anthonyposchen.f1-schedule alertSprint true --json
omarchy bar set io.github.anthonyposchen.f1-schedule alertQualifying true --json
omarchy bar set io.github.anthonyposchen.f1-schedule alertRace true --json

For example, to show the icon as LIVE 10 minutes early and notify 20 minutes before qualifying:

omarchy bar set io.github.anthonyposchen.f1-schedule earlyLiveMinutes 10 --json
omarchy bar set io.github.anthonyposchen.f1-schedule alertLeadMinutes 20 --json

At a glance

In the bar In the timetable
White F1 mark becomes red during a LIVE session Current race weekend with every session time
Full next-session label appears inside your configured lead time Minute detail appears only in the final two hours
Hover for the current or next session and its countdown Date and time formatting follows Omarchy's 12/24-hour clock choice
Click to open the timetable Next three rounds, with a compact remaining-rounds indicator
Middle-click to recompute from the local schedule Local alerts for the sessions you choose
Right-click to open settings Countdown becomes a seconds display in the final two minutes

The widget updates hourly when the next session is more than two hours away, every minute inside two hours, and every second for the final two minutes. It also gives the just-started moment a short, deliberate LIGHTS OUT / SESSION STARTED cue before settling into LIVE.

Settings and alerts

Right-click the bar widget to open its settings panel. You can choose:

  • How far ahead alerts appear.
  • How early a session should be shown as LIVE.
  • A finish offset for broadcast overruns.
  • Race and sprint start-light audio volume.
  • Whether the next-session countdown appears beside the F1 bar mark, and how early it appears (up to one day).
  • Whether the F1 mark stays visible always, follows the event-label window, or appears within 1–14 days of a session; hidden marks reveal in Omarchy's muted style while the bar is hovered.
  • A web URL or registered app link to open when the hero is clicked.
  • Alert types: practice, sprint qualifying, sprint, qualifying, and race.

Use Send test alert in that panel to check desktop notifications without waiting for a session. Click anywhere outside the settings panel to close it.

Developer mode

Developer mode keeps testing controls out of the regular settings panel. Enable it with omarchy bar set io.github.anthonyposchen.f1-schedule developerMode true --json; then use Preview race start to run an in-memory race exactly ten seconds away. It does not change the saved timetable or schedule state. Turn it off again with the same command using false.

Watch link

Paste a web URL or a registered app link into Watch link in Settings to make the hero clickable. The tooltip shows the exact configured link, and clicking opens it with your default browser or app handler. The same setting is available from the command line as watchLink. Empty, invalid, and unsafe local/content schemes are ignored; the plugin never runs a command from this setting.

Manual calendar sync

Choose Sync calendar now in Settings to request the current season's JSON schedule from https://api.jolpi.ca/ergast/f1/<year>.json. The button has a tooltip showing the exact request URL. It never runs automatically, sends no credentials, validates the received data, and atomically saves a user-local override at $XDG_DATA_HOME/omarchy-f1-schedule/data/<year>.json (or ~/.local/share/omarchy-f1-schedule/data/<year>.json).

The override takes priority over the bundled schedule and survives plugin updates. A failed download or invalid response leaves the currently displayed schedule untouched.

Local development

Make changes in this checkout, then mirror them into the installed plugin — no deploy or push required:

plugin_target="${XDG_CONFIG_HOME:-"$HOME/.config"}/omarchy/plugins/io.github.anthonyposchen.f1-schedule"
mkdir -p "$plugin_target"
rsync -a --delete --exclude='.git' ./ "$plugin_target/"
omarchy-shell shell rescanPlugins
omarchy restart shell

This replaces the chosen installed copy with the checkout while preserving its .git directory, then recreates the shell so all QML and asset changes take effect. Do not edit that installed copy directly.

Run the complete local checks before handing off a change:

go test ./...
tests/test-view-model.sh
omarchy plugin validate .
qmllint BarWidget.qml Panel.qml PlainText.qml Model.js tests/test-model.qml
git diff --check

The detailed contributor workflow is in docs/agents/local-development.md.

Timetable maintenance

The widget normally runs from the bundled data/<year>.json without network access. The optional Settings sync is a user-triggered override only. Each release still bundles a reviewed timetable; the Go maintainer tool produces it from the published Jolpica schedule:

scripts/update-season --year 2027
tests/test-view-model.sh
git diff -- data/2027.json

Review the generated schedule before committing — calendars can change. The annual workflow, including offline fixture testing and the scheduled GitHub update, is documented in docs/agents/local-development.md.

Releases

Releases use Calendar Versioning. The manifest version and annotated Git tag must describe the same commit:

manifest.json: 2026.8.22
Git tag:       v2026.8.22

See the release versioning guide for same-day releases and the pre-publish checklist.

License

MIT

Trademark notice

Formula 1 and the F1 mark are trademarks of Formula One Licensing B.V. This unofficial plugin is not affiliated with Formula 1, the FIA, or their subsidiaries. The bundled F1 mark is a theme-tinted raster derived from the Wikimedia Commons F1 logo, identified there as public-domain text-logo artwork; trademark rights still apply.