Veronica README

The project's README from github.com/namannn04/Veronica. As one markdown file: README.md.

Veronica

A native desktop control center for Ubuntu. Veronica replaces a shelf of single-purpose utilities with one application.

Free and open source under the GPL-3.0. Every feature is in the one app. No licence key, no account, no paid tier.

Veronica is a port of Edith, a macOS control center, to Linux. It keeps Edith's models — the capability map, the extension catalogue, the rate-limit maths, the usage schema — and reimplements the platform layer against Linux services. The usage collector is shared verbatim, so the numbers are identical on both platforms.

Requires Ubuntu 24.04 or later on x86_64, with GNOME Shell 46 through 50.

See docs/RUNNING.md for how to run it, use the notch, and troubleshoot.

Install

The Debian package is the recommended route on Ubuntu. This command downloads the latest GitHub release, verifies its published SHA-256 checksum, and installs it through apt (which may ask for your sudo password):

curl -fsSL https://namannn04.github.io/Veronica/install | bash

It also turns on the GNOME Shell extension and opens Veronica. GNOME only loads new extensions at login, so log out and back in once to see the notch. Running the same command again later updates to the newest release.

See screenshots, shortcuts and download choices on the Veronica website.

To install a package you downloaded yourself instead:

sudo apt install ./Veronica_0.1.19_amd64.deb

That installs the app, the vr command line tool, the desktop entry, the AppStream metadata and the tray icon, and pulls in jq, which the usage collector needs, plus curl for the on-demand update check.

An AppImage is also published for other distributions:

chmod +x Veronica_0.1.19_amd64.AppImage
./Veronica_0.1.19_amd64.AppImage

Ubuntu 24.04 and later no longer ship the FUSE 2 runtime an AppImage needs to mount itself. Either install it once with sudo apt install libfuse2t64, or run the image without it:

./Veronica_0.1.19_amd64.AppImage --appimage-extract
./squashfs-root/AppRun

The AppImage is the desktop app only. It does not install the vr command or the GNOME Shell extension, so the compact top-bar notch, clipboard capture, Focus Dim, keystroke display and paste-in-place are unavailable. It also relies on host tools such as jq and Bun or Node for usage collection. Use the Debian package for Veronica's complete Ubuntu integration.

Flatpak

Veronica is also published as a Flatpak from its own signed repository:

flatpak install --user https://namannn04.github.io/Veronica/flatpak/veronica.flatpakref
flatpak run io.github.namannn04.Veronica

flatpak update picks up new releases from then on. Each release also attaches Veronica_<version>_x86_64.flatpak for offline installs (flatpak install --user ./Veronica_0.1.19_x86_64.flatpak).

Veronica controls the computer it runs on, so the Flatpak is not a confined app: it has access to your home directory and runs PipeWire, GNOME Shell, apt, ssh and your terminals on the host through flatpak-spawn --host. On first launch it copies its GNOME Shell extension into ~/.local/share/gnome-shell/extensions; log out and back in once, then enable it from Veronica. The process list only shows processes inside the sandbox.

Features

Agent usage

Alerts

Quinjet

Site Audit

Herdr

This computer

Calendar

Media

Machines

Global shortcuts

Clipboard

Color Picker

Emoji Picker

Keystroke Highlight

Audio

Database

App Maintenance

Disk cleaner

Presenter

Focus Dim

Appearance

Getting around

Top bar

Media

Notch

Command line

Installing Veronica installs vr, which reaches the same operations as the UI.

vr diagnose                  the resolved session, capabilities and extensions
vr usage summary             the same totals the dashboard shows
vr usage projects --chats    spend by project, with its chats
vr usage calendar --days 30  the spend calendar in the terminal
vr usage refresh --progress  run the collector
vr usage limits              rate-limit gauges, with pace and countdowns
vr usage export --card activity   branded PNG cards, safe to post
vr media status              what is playing, on any MPRIS player
vr media toggle              play or pause; also next, previous, stop
vr media players             every player registered on the session bus
vr calendar list             your agenda, grouped by day, with join links
vr calendar next             the next event and how long until it starts
vr machines ls               the fleet, with live CPU, memory and disk
vr machines stats <id>       one machine's vital signs in full
vr machines add <ssh-host>   add a machine; discover finds config aliases
vr machines containers <id>  Docker or Podman containers; logs tails one
vr machines power <id> restart --confirm   restart or shut down a machine
vr machines wake <id>        a Wake-on-LAN packet, for a machine that is off
vr clipboard list            the clipboard history, searchable
vr clipboard get <id>        one entry's full text, for piping onward
vr usage alerts              what the notifier would post right now, as a dry run
vr alerts test               post one banner, to check notifications arrive
vr alerts state              what the notifier is comparing against
vr color pick                sample a pixel; copies and records it
vr color list                the swatch history
vr color show <id>           one swatch in every format
vr presenter status          the blur state, and what detection sees
vr presenter start           blur now; also stop, enable, disable, dismiss
vr focus-dim on              dim behind the focused window; also off, intensity
vr keystroke-highlight on    show key presses on screen; also off, duration
vr emoji list shrug          search the catalogue; copy puts one on the clipboard
vr emoji recents             the emoji you reach for most
vr system audio list         the per-application mixer, with volumes
vr system bluetooth          adapters and devices, with their batteries
vr system ps                 running processes, by CPU or memory
vr power lid-awake on --for 30m  keep running with the lid shut for 30 minutes
vr herdr board               the live agent board, in Edith's lanes
vr quinjet projects          Quinjet's review workspaces; open prints the command
vr audit site example.com    crawl a sitemap and check every page's metadata
vr companion list            your notes and voice memos, searchable
vr media library             the local music library under ~/Music
vr maintenance updates       what apt, snap and flatpak could update
vr maintenance remove <pkg>  what removing it would take with it
vr database connections      your saved databases; add takes a password on stdin
vr database query <c> "…"    run a statement that reads; a write is refused
vr database mutations preview   what a change would do, and a one-shot token
vr database mcp              two read-only tools for an agent, over stdio
vr cleaner scan              what could be reclaimed, per category
vr cleaner clean --yes       move it to the Trash; --root sweeps a project tree
vr backup export             back up settings and persistent app data
vr backup inspect <file>     verify and describe an archive without restoring
vr backup import <file> --confirm  validate and restore an archive atomically
vr extensions                what can run on this session, and why not
vr tools                     the command line programs the extensions need
vr tools install <tool>      fetch one, when there is a route Veronica can drive
vr config set <key> <value>  every setting the UI exposes

Every read command takes --json, stdout is exactly one document, logs go to stderr, and exit codes are reliable, so an agent can drive Veronica headlessly.

What works on your session

Veronica resolves each of its 31 capabilities against the running session and reports the result, with the service it talks to, on the Diagnostics page and in vr diagnose. Nothing is silently disabled.

Compositor-owned features ask for permission or the GNOME extension when the session requires it. Local music, keyboard cleaning and Companion all have native Linux implementations and no longer need external integration.

A note on the calendar: GNOME's calendar server expands recurring events but does not pass an event's location or description through, so Veronica reads those per event from Evolution Data Server to recover join links. That costs one D-Bus call per event, which is why the notch's agenda skips it and the Calendar page does not.

Clipboard history and Focus Dim were restricted until the shell extension existed. Capture and dimming now happen inside the compositor, which is the only thing a Wayland session lets read the selection or place one window behind another. Veronica reports a capability it has not built as needing integration rather than as available, so the Extensions page never shows "Ready" for a switch that would do nothing.

Companion is local-first: notes and searchable voice-memo metadata are stored under the XDG data directory, recordings use PipeWire, and the complete folder is included in Veronica backup/restore. It needs no Docker service or account.

Keystroke Highlight, the emoji picker's insert-in-place and paste-in-place all run through the shell extension for the same reason clipboard capture and dimming do: on Wayland only the compositor may observe or synthesise input for a window it does not own. Each says so on the Diagnostics page rather than appearing to work and doing nothing.

Everything else has a working route: PipeWire for audio, the per-application mixer and mic mute, BlueZ for Bluetooth, logind for prevent-sleep and lid-awake, MPRIS for media, Evolution Data Server for calendar, and the desktop portal for colour picking, camera, global shortcuts and screen-share detection.

Privacy

Usage history never leaves this computer. Provider rate-limit checks go straight from this machine to the provider, using the OAuth token your agent CLI already holds, and nothing is proxied through Veronica. There is no Veronica account and no telemetry. Network access otherwise happens only for features that inherently need it or that you explicitly run: checking GitHub for an update, auditing a website, connecting to a remote machine or database, and downloading a tool you asked Veronica to install. Background provider checks run only when their alert switches are enabled. Veronica reads your local agent history from ~/.claude, ~/.codex, ~/.cursor and ~/.commandcode, and writes its own state under the XDG directories, which vr diagnose prints.

Building from source

Needs Rust, Bun and the Tauri system dependencies:

sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev librsvg2-dev \
  libayatana-appindicator3-dev libjavascriptcoregtk-4.1-dev \
  libsoup-3.0-dev libxdo-dev patchelf

cargo test --workspace
cd apps/desktop && bun install && bunx tauri build --bundles deb

See docs/ARCHITECTURE.md for the crate layout, the capability model, and why this is a reimplementation rather than a Swift port.

Licence

Veronica is free software licensed under the GNU General Public License v3.0, matching Edith, from which its models are derived.

Veronica (namannn04/Veronica)

Searching Database…

What is this?Veronica is a native desktop control center for Ubuntu. It combines agent usage tracking, system utilities, media control, clipboard history, an emoji picker and GNOME integration in one app.
Is it a port of something else?Yes. It is a port of Edith, a macOS control center, to Linux. It keeps Edith's models and reimplements the platform layer on Linux services.
How do I install it on Ubuntu?Use the Debian package, which the README recommends on Ubuntu. The install command downloads the latest GitHub release, checks its SHA-256 checksum and installs it with apt. Then log out and back in once so GNOME loads the extension.
What does it need to run?Ubuntu 24.04 or later on x86-64, with GNOME Shell 46 through 50. The Debian package pulls in jq, which the usage collector needs, and curl for update checks.
Is the AppImage as complete as the Debian package?No. The AppImage is desktop-only. It has no vr command and no GNOME Shell extension, so the top-bar notch, clipboard capture, Focus Dim, keystroke display and paste-in-place are missing. Use the Debian package for full integration.
Does it send my usage history anywhere?No. Claude, Codex, Cursor and Command Code accounting stays on the machine. Alerts are off by default and make no request to any provider while off. Site audits fetch only the pages you give them.
What does the agent usage section show?Local accounting of Claude, Codex, Cursor and Command Code activity by machine, repository and chat. It also shows live rate-limit rings for Claude and Codex windows, with pace-based risk readings.
Can it manage other machines over SSH?Yes. The Machines view reaches any host you can already reach over SSH. It shows CPU, memory, disks, temperatures, GPUs and busiest processes from one probe, with no agent on the remote side. It can also control Docker or Podman containers and send a Wake-on-LAN packet.
What global shortcuts does it register?Ctrl+Alt+V opens Veronica, Ctrl+Alt+B opens Clipboard, Ctrl+Alt+M toggles the microphone, Ctrl+Alt+P picks a colour, Ctrl+Alt+E opens the emoji picker, and Ctrl+Alt+K enters keyboard-cleaning mode.
Creator
namannn04
Size
3.5 MB
Stars
837
Age
2mo
Commits · 90 Days