A synthwave / 8-bit-arcade terminal UI for discovering apps on
Flathub and managing your Flatpaks — without leaving the
terminal. Built in Rust with ratatui and themed to match the
Hyprwave synthwave84 palette, so it feels native to the distro instead of like a
generic package manager.
App stores are heavyweight GUIs; the flatpak CLI is powerful but unfriendly for
browsing. FlatArcade sits in between: the speed of a TUI with the discoverability of
a store, dressed up as a neon arcade cabinet. Verified developers earn a ✓ badge,
monthly install counts become the HI-SCORE, and installing an app is "inserting a
coin".
It talks to the Flathub HTTP API for browsing/search (no Flatpak required just to
look around) and shells out to the flatpak CLI for actual installs. If flatpak
isn't set up yet, FlatArcade keeps browsing and shows you exactly how to fix it.
Browse — neon app cards with verified badges, HI-SCORE install counts and category tags:
App details — summary, developer, license, tags and an arcade-button install action:
Detect & guide — flatpak missing? Keep browsing; get the exact setup commands on demand:
- 🎮 Browse the Popular / Trending / New / Updated feeds as neon app cards.
- 🔎 Search the entire Flathub catalogue (
/). - 📇 Details per app: summary, developer, license, tags, homepage.
- ⬇️ Install / uninstall / update through
flatpak, with a live block-progress panel. - 🗂️ Manage installed apps, spot pending updates, and
UPDATE ALLin one keystroke. - 🧭 Detect & guide — browsing works without flatpak; a setup prompt appears with the precise commands before any system change.
- 🎨 One-file theme — the whole palette lives in
src/theme.rs; swap it to re-skin.
Paste this one line into your terminal — it downloads FlatArcade, adds it to your
app launcher with an icon, and sets up your PATH for you. No Rust required.
curl -fsSL https://raw.githubusercontent.com/neon798/flatarcade/main/install.sh | bashThen launch FlatArcade from your app menu, or type flatarcade in a terminal.
Installs to
~/.local/binand adds a launcher entry + icon under~/.local/share. Nothing requiressudo. To remove it, see Uninstall.
Requires a modern stable Rust toolchain:
git clone https://github.com/neon798/flatarcade
cd flatarcade
cargo +stable install --path . --root ~/.local
+stableis needed because the dependency tree wants a recent compiler — if your distro's defaultrustcis older the build fails without it.--root ~/.localinstalls into~/.local/bin(already on mostPATHs); drop it to use the default~/.cargo/bin.
Or just run it without installing: cargo run --release.
Non-interactive helper modes:
cargo run -- --selftest # exercise the live Flathub client + flatpak detection
cargo run -- --shot # print splash / browse / setup as plain text
cargo run -- --shot-svg # regenerate the screenshots in screenshots/| Key | Action |
|---|---|
↑ ↓ / j k |
move selection |
← → / Tab |
switch pane (Browse) |
1–4 |
jump to a feed |
Enter |
open app details |
/ |
search Flathub |
i |
install / uninstall selected app |
u |
update selected app |
U |
update all (Manage screen) |
m |
manage installed apps |
x |
uninstall (Manage screen) |
? |
toggle help |
q / Esc |
back / quit |
FlatArcade browses fine without flatpak, but installing needs it set up:
sudo pacman -S flatpak
flatpak remote-add --if-not-exists flathub \
https://flathub.org/repo/flathub.flatpakreposrc/
main.rs terminal setup + event loop (+ --selftest/--shot debug modes)
app.rs state machine; async work dispatched to tokio, results via mpsc
events.rs keybindings → app intent
theme.rs synthwave84 palette + retro glyph/widget helpers
ui/ per-screen renderers (splash, browse, detail, manage) + overlays
flathub/ async Flathub API v2 client + serde models
flatpak/ CLI integration (detect, list, install/uninstall/update) + setup guide
Async API and flatpak calls run on tokio tasks and report back over a channel, so the render loop never blocks and the marquee/progress animations stay smooth.
synthwave84: deep purple #0d0221 / #240037, neon magenta #ff00ff, cyan #03edf9,
yellow #ffff66, hot pink #ff007f. Edit the constants in src/theme.rs to re-skin the
entire app.
rm -f ~/.local/bin/flatarcade \
~/.local/share/applications/flatarcade.desktop \
~/.local/share/icons/hicolor/scalable/apps/flatarcade.svgReleased under the MIT License.



