Skip to content

neon798/flatarcade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlatArcade icon

FlatArcade ◉

the flathub arcade — for hyprwave

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.

FlatArcade splash screen


Why

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.

Screenshots

Browse — neon app cards with verified badges, HI-SCORE install counts and category tags:

Browse screen

App details — summary, developer, license, tags and an arcade-button install action:

Detail screen

Detect & guide — flatpak missing? Keep browsing; get the exact setup commands on demand:

Setup prompt

Features

  • 🎮 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 ALL in 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.

Install

⭐ Easy install (recommended)

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 | bash

Then launch FlatArcade from your app menu, or type flatarcade in a terminal.

Installs to ~/.local/bin and adds a launcher entry + icon under ~/.local/share. Nothing requires sudo. To remove it, see Uninstall.

Build from source (developers)

Requires a modern stable Rust toolchain:

git clone https://github.com/neon798/flatarcade
cd flatarcade
cargo +stable install --path . --root ~/.local

+stable is needed because the dependency tree wants a recent compiler — if your distro's default rustc is older the build fails without it. --root ~/.local installs into ~/.local/bin (already on most PATHs); 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/

Controls

Key Action
↑ ↓ / j k move selection
← → / Tab switch pane (Browse)
14 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

Enabling installs

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.flatpakrepo

How it works

src/
  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.

Theme

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.

Uninstall

rm -f ~/.local/bin/flatarcade \
      ~/.local/share/applications/flatarcade.desktop \
      ~/.local/share/icons/hicolor/scalable/apps/flatarcade.svg

License

Released under the MIT License.


Made for Hyprwave · press any key to insert coin

About

Synthwave 8-bit arcade TUI for browsing Flathub and managing Flatpaks, built for Hyprwave. Rust + ratatui.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors