OpenRiot v6.0 — The Art of Privacy

“Privacy is not a crime. It is a feature.” — Ancient OpenBSD proverb, probably whispered through a Tor exit node


Release Overview

OpenRiot v6.0 is not an incremental update. It is a statement. A declaration that privacy can be beautiful, that security can be art, and that the people who build the tools matter as much as the tools themselves.

We are inspired by artists — not just the ones who paint walls, but also the ones who paint with code, with light, with mathematics. The ones who look at a problem everyone else accepts and say, “No. This can be better.” The cryptographers who turn prime numbers into shields. The OpenBSD developers who read every line of code like a poem, searching for the flaw that kills. The Monero contributors who proved that financial privacy is not a privilege for the paranoid — it is a right for everyone.

This release ships three things that sound unrelated but are spiritually identical: a cryptocurrency wallet that treats privacy as physics rather than marketing, a desktop that finally looks like someone cared, and a hundred small fixes that say “we were paying attention.”

Total changes: Monero mastery, visual rebirth, polybar resurrection, wallpaper sanity, and the PATH enlightenment.


💳 Monero Wallet: The Only Coin That Belongs on OpenBSD

The Problem: Every other “privacy” wallet is either a browser extension (lol), an Electron app (double lol), or requires JavaScript to function (we’re not even going to dignify that with a response). Monero is the only cryptocurrency where privacy isn’t bolted on as an afterthought — it is the default. Ring signatures. Stealth addresses. Confidential transactions. These are not buzzwords. These are mathematical proofs that your balance is yours alone, your history is yours alone, and your future is yours alone.

But building monero-gui on OpenBSD is a 4-hour CMake nightmare involving C++17 standards, HID API patches, Qt5 symlink hacks, and a link.txt linker patch that gets wiped every time CMake re-runs. In other words: the build is too brittle for distribution.

The Fix: We gave up on source builds and did what we should have done from day one: tarball extract, same model as pacman.tgz. The monero-wallet-gui, monerod, monero-wallet-cli, and monero-wallet-rpc binaries are pre-built and bundled in config/monero/monero.tgz. On install, they extract to ~/.local/bin.

Why Monero matters: Bitcoin is transparent. Ethereum is transparent. Every transaction you ever made is visible to anyone with an internet connection and a blockchain explorer. Monero is different. In Monero, every transaction is a black hole. You can prove you sent money if you choose to. You can prove you received money if you choose to. But by default, no one knows anything. This is not “privacy mode.” This is the mode.

Monero is the only cryptocurrency where “not your keys, not your coins” is actually enforceable — because even if someone gets your keys, they still cannot trace your past transactions. The blockchain remembers that a transaction happened. It does not remember who sent it, who received it, or how much was sent. This is not a feature you toggle. This is the protocol.

Runtime integration:

  • Qt5 QML packagesqtquickcontrols, qtquickcontrols2, qtgraphicaleffects, qtdeclarative are now in desktop.apps and auto-installed
  • Desktop entryconfig/applications/monero-wallet-gui.desktop sets QML2_IMPORT_PATH=/usr/local/lib/qt5/qml so the GUI finds Qt Quick modules at runtime
  • Polybarconfig/polybar/config.ini [module/crypto] now uses custom/script with --crypto-icon, which checks for ~/.config/crypto.toml. No config file = no icon shown. Clean.
  • Roficonfig/rofi/apps.txt includes Monero Wallet|monero-wallet-gui.desktop|
  • Window iconsconfig/window/icons.toml maps both monero-wallet-gui and monero to
  • Iconconfig/icons/monero.png generated via openriot --make-icon monero ""

“The only thing worse than a Bitcoin maxi is someone who thinks their favorite shitcoin is private because the marketing said so.”


🎨 Visual Rebirth: New Backgrounds, New Lock Screens

We completely refreshed every background and every lock screen for v6.0.

The old wallpapers were functional. They were fine. They were the desktop equivalent of a beige cubicle — inoffensive, forgettable, and slightly depressing. The new wallpapers are something else entirely. They are dark. They are deliberate. They are the visual equivalent of running OpenBSD on a ThinkPad in a coffee shop while wearing sunglasses indoors.

We are inspired by artists who understand that the tools you stare at for eight hours a day should not be an eyesore. That the lock screen — the first thing you see when you wake your machine — should not look like a Windows XP screensaver had a baby with a corporate PowerPoint template.

The new backgrounds are designed for the people who use this system: developers who care about precision, security researchers who care about auditability, and privacy advocates who care about the principle. They are high-contrast where they need to be. They are subtle where subtlety matters. They scale correctly across every monitor you own, because we fixed that too.

What changed:

  • All desktop backgrounds replaced with v6.0 art
  • All lock screen backgrounds replaced with matching v6.0 art
  • Images optimized for both 1080p and 1440p+ displays
  • Consistent dark aesthetic across the entire visual system

“Your desktop should look like someone designed it on purpose, not like someone gave up halfway through.”


🖱️ Polybar: Stop Clicking Into the Void

The Problem: On first i3 startup, polybar’s click areas are completely dead. You can see the icons, but clicking them does absolutely nothing — like shouting into a black hole and expecting an echo. The only fix was pkill -9 polybar and letting the i3 watchdog restart it.

The Fix: Added wm-restack = i3 to [bar/main] in config/polybar/config.ini. This tells polybar to register its window with i3’s stacking order, ensuring click regions are properly established before you start hammering the volume icon in frustration.

“The bar that looks clickable but isn’t is the UI equivalent of a barking dog with no teeth.”


🖼️ Wallpapers: One Size Per Monitor, Please

The Problem: When your laptop is 1920×1080 and your HDMI monitor is 2560×1440, feh --bg-fill wallpaper.png only knows about one display. The result? The HDMI background looks fine, but it’s actually scaled for the laptop’s resolution — and i3 windows snap to the wrong geometry because feh only informed the X server about one screen size.

The Fix: source/backgrounds/backgrounds.go now runs xrandr --listactivemonitors to count active displays, then passes one --bg-fill wallpaper.png per display to feh. Two monitors? feh --bg-fill img.png img.png. Each gets independently scaled. Each reports its own geometry to the X server. Windows snap correctly. The universe is in balance.

Applies to: Load(), Next(), Prev() — all wallpaper operations are now multi-monitor aware.

“Your wallpaper should scale like your ego: independently on every screen.”


🔧 Session Startup: The PATH Enlightenment

The Problem: Rofi doesn’t inherit fish’s PATH. If ~/.local/bin was only in ~/.config/fish/config.fish, rofi couldn’t find user-installed binaries (like Monero Wallet) until you re-logged. Monero would silently fail to launch from rofi with a command-not-found.

The Fix: Added export PATH="$HOME/.local/bin:$HOME/.local/share/openriot/install:$PATH" to both:

  • config/xinitrc/openriot-x11
  • config/xsession/openriot-xsession

Now ~/.local/bin is in PATH from the moment X11 starts, so rofi finds everything immediately after install.

Bonus fix: XDG_RUNTIME_DIR permissions. Qt apps complain when /tmp/$USER-runtime is 0755. Moved the chmod 0700 to be unconditional in:

  • config/fish/config.fish
  • config/xinitrc/openriot-x11
  • config/xsession/openriot-xsession

No more Qt whining about “insecure runtime directory.”

“If your PATH is wrong, nothing works. If your permissions are wrong, Qt yells at you. Both are now fixed.”


📖 README: Now With Actual Documentation

Added a full Monero Wallet section to the README covering:

  • Launch via rofi (Super + D)
  • Qt5 QML runtime requirements
  • QML2_IMPORT_PATH handling in the desktop entry
  • XDG_RUNTIME_DIR and PATH fixes
  • Polybar crypto module conditional behavior (hidden when no crypto.toml)
  • Screenshot: ![Monero Wallet](assets/xmr.png)

Also updated the feature list, TOC, rofi app table, and polybar module docs.

“We finally documented the thing we just spent four hours building. Revolutionary.”


🧾 Files Changed

File Nature of Change
source/backgrounds/backgrounds.go Multi-monitor feh scaling via xrandr --listactivemonitors
config/polybar/config.ini Added wm-restack = i3; [module/crypto] changed to custom/script with --crypto-icon
config/xinitrc/openriot-x11 Added ~/.local/bin to PATH; unconditional chmod 0700 $XDG_RUNTIME_DIR
config/xsession/openriot-xsession Added ~/.local/bin to PATH; unconditional chmod 0700 $XDG_RUNTIME_DIR
config/fish/config.fish Unconditional chmod 0700 $XDG_RUNTIME_DIR
config/applications/monero-wallet-gui.desktop Desktop entry with QML2_IMPORT_PATH and ~/.local/bin absolute path
config/rofi/apps.txt Added Monero Wallet entry
config/window/icons.toml Added monero-wallet-gui and monero icon mappings
config/monero/monero.tgz Pre-built Monero binaries (wallet-gui, monerod, wallet-cli, wallet-rpc)
config/icons/monero.png Monero icon generated via --make-icon
install/packages.yaml Added Qt5 QML packages; Monero config deployment; removed failed Xsetup attempt
README.md Monero section, feature bullet, TOC, rofi table, polybar docs
assets/xmr.png Screenshot of Monero Wallet GUI running on OpenRiot
config/backgrounds/* Completely refreshed desktop backgrounds for v6.0
config/lockscreens/* Completely refreshed lock screen backgrounds for v6.0

🗣️ Final Words

“We tried to build Monero from source. We failed. We tried to fix xenodm multi-monitor login. We failed harder. But we succeeded at the thing that actually matters: shipping a working Monero wallet on the most security-audited OS on the planet. And then we made it look good.”

This release is dedicated to the artists. The ones who write code like poetry. The ones who see a beige desktop and say, “No. This deserves to be beautiful.” The ones who understand that privacy is not a setting you toggle — it is a philosophy you live.

To the cryptographers who turned mathematics into shields. To the OpenBSD developers who audit every line like their lives depend on it. To the Monero contributors who proved that financial privacy is a human right, not a product feature. To everyone who ever said “I want my desktop to be private” and then installed Chrome.

We see you. We forgive you. But we’re also putting a Monero icon in your polybar.

And we’re making sure your wallpaper doesn’t look like it was chosen by a committee of middle managers.

Upgrade with the usual command:

curl -fsSL https://OpenRiot.org/setup.sh | sh

— The OpenRiot Crew

“Privacy is not a crime. It is a feature.”