See and manage every app installed on your Linux system โ apt, Flatpak, and Snap โ in one clean, native desktop app.
Showcase is a desktop application for Ubuntu (and other Linux desktops) that gives you a single, visual place to browse every installed graphical application across all the ways software gets installed โ system packages (apt/dpkg), Flatpak, and Snap โ inspect each app's details, and uninstall the ones you no longer want, with a proper graphical password prompt.
No more remembering whether you installed something with apt, flatpak, or snap. Showcase finds them all, shows them together, and lets you remove them safely.
apt, Flatpak, and Snap in one grid, each tagged by source.apt package may also remove things that depend on it.snapd) is unavailable, the rest still load.apt/dpkg (always present). flatpak and snapd are optional โ Showcase simply shows whichever are installed.Prebuilt packages for Ubuntu 22.04+ (amd64) are published with every release.
Go to the Releases page and open the latest release.
Download the .deb and the SHA256SUMS file into the same directory.
Verify the download, then install:
sha256sum -c SHA256SUMS --ignore-missing
sudo apt install ./Showcase_*_amd64.deb
Prefer a portable, no-install binary? Grab the AppImage from the same release and run it directly:
chmod +x Showcase_*.AppImage
./Showcase_*.AppImage
Add the signed Showcase APT repository once, then receive updates through apt like any other package:
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/showcase-archive-keyring.gpg https://rabiulislam-xyz.github.io/showcase/showcase-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/showcase-archive-keyring.gpg] https://rabiulislam-xyz.github.io/showcase stable main" | sudo tee /etc/apt/sources.list.d/showcase.list
sudo apt update && sudo apt install showcase
This path is available only after the maintainer has completed the one-time setup in docs/DISTRIBUTING.md. If
apt updatecan't reach the repository, use the direct download above instead.
For maintainers: see docs/DISTRIBUTING.md for how releases are built and how to enable the signed APT repository.
Tauri needs a few GTK/WebKit development libraries:
./scripts/setup-deps.sh
This runs sudo apt-get install for libwebkit2gtk-4.1-dev, libgtk-3-dev, libayatana-appindicator3-dev, librsvg2-dev, and pkg-config.
npm install
npm run tauri dev
The first build compiles the Rust backend and can take a couple of minutes.
npm run tauri build
This produces a .deb and an AppImage under src-tauri/target/release/bundle/. Install the .deb with:
sudo apt install ./src-tauri/target/release/bundle/deb/showcase_*_amd64.deb
Then launch Showcase from your applications menu.
About permissions: Showcase itself runs unprivileged. Removal is escalated per action through polkit.
aptand Snap removals run viapkexec(so the system password dialog appears); Flatpak uses its own native uninstall (no password needed for per-user installs).
.desktop entries are the source of truth for "what is an app" (exactly what appears in your applications menu). Each entry is classified by location into a source.apt via dpkg-query (version, size, essential flag), Flatpak via flatpak list, Snap via the local snapd REST socket (version, size, install date).list_apps, get_app_details, uninstall_app. Sources sit behind a command-runner seam, so all parsing/merging logic is unit-tested with fixtures and never touches the live system in tests.showcase/
โโโ src/ # SvelteKit frontend (Svelte 5 + TypeScript)
โ โโโ lib/
โ โ โโโ components/ # AppCard, AppGrid, Header, AppDetail, ConfirmDialog, Toast โฆ
โ โ โโโ types.ts api.ts filter.ts stores.ts format.ts theme.css
โ โโโ routes/ # +page.svelte (the app), +layout.svelte
โโโ src-tauri/ # Rust backend (crate: showcase_lib)
โ โโโ src/ # model, desktop, runner, dpkg, snapd, icons,
โ # sources/{apt,flatpak,snap}, aggregate, commands, uninstall
โโโ scripts/setup-deps.sh # one-time system build deps
โโโ docs/superpowers/ # design specs + phased implementation plans
cargo test --manifest-path src-tauri/Cargo.toml # Rust unit + gated integration tests
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets # lint (clean)
npm test # frontend (Vitest)
npm run check # svelte-check / TypeScript
The project was built in three reviewed phases โ (1) backend enumeration core, (2) browse UI, (3) uninstall โ each documented under docs/superpowers/specs/ and docs/superpowers/plans/.
Essential apt packages and base/core snaps before any privileged call.Tauri v2 ยท Rust ยท SvelteKit (Svelte 5) ยท TypeScript ยท WebKitGTK ยท PackageKit/polkit
MIT ยฉ 2026 Rabiul Islam