Skip to content

[Plugin]: TekTube #7679

Description

@TIerTek

Repository URL

https://github.com/TIerTek/omarchy-tektube

Category

Widgets

Tags

Media, Bar, Quickshell

Suggest a missing tag

No response

Maintainer notes

Bar widget + service that shows the user's own YouTube Music account (Home rows and mixes, playlists, live queue, synced lyrics, like/dislike, radio, search) in a theme-drawn panel. It works by driving a YouTube Music app window that the user signs into with a normal Google login; the plugin never handles credentials.

How it works, for review: bin/ytm-app launches the user's Chromium-family browser with --app=https://music.youtube.com, a dedicated --user-data-dir (~/.local/share/tiertek.ytm/profile) and --remote-debugging-port=0 (random loopback port, written by Chromium to the profile's DevToolsActivePort). bin/ytm-bridge (Python 3, standard library only, ~700 lines) attaches over that port, installs one function into the page (bin/page.js, ~230 lines) and serves a small JSON protocol on a unix socket in $XDG_RUNTIME_DIR (mode 0600). Every account request is executed inside the page by the site's own session via Runtime.callFunctionOn with typed arguments; the bridge only ever sees JSON results. Cookies and browser files are never read. Playback control is MPRIS, the same interface the built-in media widget uses. The user's everyday browser profile is untouched and never debuggable. SECURITY.md in the repo lists every process the plugin spawns and every input it validates (a closed id grammar enforced in both languages, with a test that keeps them identical).

Dependencies: a Chromium-family browser (Chrome, Brave, Chromium, Vivaldi or Edge — Firefox cannot be driven this way) and Python 3, both present on a stock install. Optional: cava for the spectrum bars; it is probed once with which and simply never used if absent.

Permissions: nothing elevates. No sudo/pkexec, no installer, no package-manager calls, no bundled binaries, no network beyond music.youtube.com (page context) and Google's image hosts for notification artwork (hostname allowlist). The service supervises the bridge process (service-management), spawns notify-send for track-change toasts and hyprctl dispatch_lua_expression with fixed argument arrays to park the app window in a special workspace.

Configuration: the plugin writes no user configuration. Optional keybindings ship as a snippet (hypr/ytm.lua) the user appends to ~/.config/hypr/bindings.lua themselves; the README says how to remove it. Removal leaves the sign-in profile in place and documents the one rm -rf that deletes it.

Tested on a single-monitor AMD laptop with a horizontal bar, Google Chrome as the browser; the other browsers' launch paths are covered by unit tests with stubs only, and multi-monitor / vertical-bar layouts are unverified — the README says so. Test suite: bash tests/run-all.sh (launcher, bridge against a fake DevTools endpoint, parsers, id grammar) — no browser or network needed.

Submission checklist

  • The repository is public and contains installation and removal instructions.
  • I have documented the plugin license and any external dependencies.
  • I confirm that I own or have permission to submit this plugin and its preview assets.
  • The plugin does not overwrite user configuration without explicit consent.
  • I understand that approval is for listing and is not a security review.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    submissionPlugin marketplace submissionvalidatedAutomated marketplace checks passed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions