Omahub
← All plugins
C

Ultimate Guitar Tabs

by Carmine Paolino

Shows the Ultimate Guitar tab for whatever you are playing. It picks the track up from your media player, finds the best-rated tab for it, and renders it in the bar with auto-scroll, a version switcher, and text sizing.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
c0645db
Scanned
6 hours 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
c0645db
Reviewed
6 hours ago

The plugin is a well-scoped Ultimate Guitar tab reader: it watches MPRIS, fetches public pages through a Python helper with strict HTTPS allowlisting, redirect re-checking, size limits, and safe cache handling, and renders tab text as plain/escaped rich text. No obfuscation, destructive install steps, credential access, or hidden persistence was found. The deterministic scan found no issues and the independent review agrees.

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/crmne/omarchy-ultimate-guitar --enable
Widgets #bar #quickshell #media

Ultimate Guitar Tabs for Omarchy

Whatever is playing, its tab is one click away in the bar.

The widget picks up whatever you are playing, finds the best-rated tab for it on Ultimate Guitar, and renders it right in the shell: chords colored, columns aligned, with auto-scroll for when both your hands are on the guitar.

https://github.com/user-attachments/assets/5707ef71-4145-4ad7-be4e-b41d56e6759e

Music in the film: "What Child Is This? (Greensleeves)", played by Derek K. Miller, CC BY 2.5 Canada.

Ultimate Guitar Tabs in the Omarchy bar

guitar icon · song + artist · instrument picker · version switcher · auto-scroll · text size

Why

I play guitar in the gaps, usually while a coding agent is off doing something. The tab for whatever is already playing should be right there in the bar, not three clicks and a browser tab away, because that gap is exactly where the looking-it-up cost stops you from picking the guitar up at all.

It earns its keep when friends come over too. Somebody puts something on, and the tab is up before anyone asks for it. That is why the version switcher and the text size sit in the panel: the person reading is not always the person at the keyboard.

Install

omarchy plugin add https://github.com/crmne/omarchy-ultimate-guitar.git --enable --yes
omarchy bar move crmne.ultimate-guitar --section right --before omarchy.tray

Requirements

  • Omarchy Quattro with its Quickshell-based shell.
  • Any media player that tells the desktop what it is playing (the standard MPRIS interface, which nearly all of them speak).
  • /usr/bin/python3 for the fetch helper. No extra packages, no account.

Using it

Action What it does
left click open the tab reader
right click open the tab on ultimate-guitar.com
middle click look the song up again, ignoring the cache

Inside the reader: pick the instrument, pick another version, start auto-scroll and set its speed, or step the text size up and down. Scrolling by hand stops auto-scroll. The instrument, text size, scroll speed, and whether the reader was expanded are remembered in ~/.local/state/omarchy/settings/ultimate-guitar.json.

The reader opens compact; the button in its header gives the tab more room. Bar settings expose the starting instrument, the expanded size, and whether the widget hides when nothing is playing.

Instruments

The picker covers everything Ultimate Guitar serves as text: guitar tab, guitar chords, bass, ukulele, and drums. Pick one and it sticks, so the next song comes up on the same instrument.

A search returns every type at once, so switching instrument costs no extra request -- it only changes which result is picked. Plenty of songs have never been tabbed for bass or drums; those fall back to guitar rather than showing an empty panel, and the header names the type you actually got.

Official tabs

Ultimate Guitar's Official tabs are not text. They are Guitar Pro-style binaries that only Ultimate Guitar's own interactive player can render, so the reader cannot show them. When a song has one, the reader shows an Official tab available button that opens it in your browser, where your Ultimate Guitar session already is. Everything else -- Chords, Tabs, Bass, Ukulele, Drums -- is plain text and renders in the shell.

IPC

omarchy-shell crmne.ultimate-guitar status     # what is playing and what was found
omarchy-shell crmne.ultimate-guitar toggle     # open or close the reader
omarchy-shell crmne.ultimate-guitar show       # open the reader
omarchy-shell crmne.ultimate-guitar hide       # close the reader
omarchy-shell crmne.ultimate-guitar refresh    # look the song up again
omarchy-shell crmne.ultimate-guitar open       # open the tab in the browser
omarchy-shell crmne.ultimate-guitar official   # open the official tab in the browser

Bind toggle to a key in ~/.config/hypr/bindings.conf to summon the reader without reaching for the bar.

Remove

omarchy plugin remove crmne.ultimate-guitar --yes

Development

Put or link this repository at ~/.config/omarchy/plugins/crmne.ultimate-guitar and run:

omarchy-shell shell rescanPlugins
omarchy plugin enable crmne.ultimate-guitar --section right --before omarchy.tray

Saving any file under ~/.config/omarchy/plugins/ reloads the plugin.

The fetch helper is usable on its own, which is the quickest way to see what the shell is working with:

bin/ug-tabs search "artist song"
bin/ug-tabs tab https://tabs.ultimate-guitar.com/tab/...

Matching, ranking, and rendering live in Model.js as pure functions, and the fetch helper's URL guard has its own tests:

node --test tests/model.test.js
python3 -m unittest discover -s tests

Tab URLs and redirects come from remote page state, so they are treated as input rather than as addresses. Only https on ultimate-guitar.com and its subdomains is fetched, every redirect hop is re-checked, and the same guard runs before any URL is handed to the browser, so a control labelled as an Ultimate Guitar link cannot open somewhere else. Pages are size-limited before and after decompression, search results, versions and tab text are capped, and the shell collects at most 2 MiB of the helper's output.

Responses are cached under ~/.cache/omarchy/ultimate-guitar -- searches for six hours, tabs for a week. Pass --no-cache to bypass it. The cache directory is private to you, entries are read without following symlinks or waiting on anything that is not a regular file, and they are written to a private temporary file and renamed into place.

License

MIT. Tabs belong to their contributors and to Ultimate Guitar; this plugin only displays the public pages their site already serves.