CeeDee Ripper is a Linux desktop application for extracting audio CDs to common music formats. It detects an inserted disc, looks up album metadata through MusicBrainz, previews album art, and rips selected tracks to FLAC, MP3, WAV, or Ogg Vorbis.
The application is written in Rust and supports two desktop front ends:
egui-uigtk-ui, using GTK4 and Libadwaita
Default builds include both front ends. The active interface can be selected at runtime and saved for later launches.
Building CeeDee Ripper requires the Rust toolchain, native desktop libraries, optical disc utilities, metadata libraries, and audio encoders.
On supported Linux systems, you'll need that to start modding. The helper script installs the aforementioned neccesary libs and Rust.
CeeDee-Ripper ver. 1.1.0 is final. Mostly miscellaneous updates going forth once I upload it.
Have a look and go ahead, grab a fork.
It's beautiful.
scripts/install-deps.shThe installer selects package names for Fedora, Debian/Ubuntu/Kali, and both Slax
editions (Debian or Slackware). It also retains Arch and openSUSE support.
Run it as your normal user with sudo available, or directly as root.
To remove packages installed by this script, use either option:
scripts/install-deps.sh --remove
scripts/install-deps.sh -RNew installations record newly added packages, including automatically installed
dependencies, under /var/lib/ceedee-ripper/install-deps/. Repeated runs preserve
that record, and failed installations record any packages added before failure.
Removal targets only recorded packages that are still installed and prompts for
confirmation. Review the package manager's transaction because other software
may now depend on those packages. Packages already present before installation
are not recorded; upgrades are not rolled back. Installations made with older
versions of this script cannot be identified retroactively and are left alone.
Avoid running unrelated package installations concurrently with this script,
which compares the installed package inventory before and after its run.
Development packages install their matching runtime libraries on Debian/Ubuntu,
including releases that renamed runtime packages with a t64 suffix.
Some examples of the distribution-specific package mappings:
| Dependency | Debian / Ubuntu / Kali / Debian Slax | Fedora | Slackware / Slackware Slax |
|---|---|---|---|
| C/C++ compiler | build-essential |
gcc, gcc-c++ |
gcc, gcc-g++ |
| Clang tools and headers | clang, clang-tools, clang-tidy, clang-format, libclang-dev |
clang, clang-tools-extra, clang-devel |
llvm |
| Rust and Cargo | rustc, cargo |
rust, cargo |
rust |
| GTK4 headers and runtime | libgtk-4-dev |
gtk4-devel |
gtk4 |
| Libadwaita headers and runtime | libadwaita-1-dev |
libadwaita-devel |
libadwaita |
| Disc ID library | libdiscid-dev |
libdiscid-devel |
libdiscid |
| Eject tool | eject |
util-linux |
util-linux |
Slackware needs configured slackpkg mirrors and additional packages from
release-compatible third-party repositories through slackpkg+, or locally
built packages. Its stock repositories do not provide every development and
packaging tool in this script. slackpkg does not resolve dependencies; a full
Slackware installation is recommended, and additional packages require their
own dependencies. The script reports any packages still missing and exits with
an error instead of claiming success. See the Slax package management guide
and SlackBuilds repository.
Important runtime tools and libraries include:
cdparanoiacd-discidejectflaclamevorbis-toolslibdiscid- GStreamer base, good, and ugly plugins
- GTK4 and Libadwaita for the GTK interface
The user running the application may need permission to read the optical drive.
On many Linux systems, that means membership in the cdrom group, followed by a
new login session:
sudo usermod -aG cdrom "$USER"Build the normal release binary:
cargo build --release --features "gtk-ui egui-ui"Run with the saved default interface:
cargo run --features "gtk-ui egui-ui"Select an interface for a single launch:
cargo run --features "gtk-ui egui-ui" -- --ui egui
cargo run --features "gtk-ui egui-ui" -- --ui gtkThe selected UI is saved in the application configuration. By default, CeeDee
Ripper uses ~/.config/ceedee-ripper/config.toml, unless a repository-local
configuration file or CEEDEE_RIPPER_CONFIG is used.
The CD device defaults to /dev/sr0. It can be changed in the configuration
file or overridden at launch:
CD_DEVICE=/dev/sr0 ceedee-ripperPackaging files live under packaging/ Additional notes are kept in
docs/PACKAGING.md and Distribution Instructions.md.
The most straightforward local targets are:
- Debian/Ubuntu
.deb - AppImage
- Arch/AUR recipe
- Fedora/RPM recipe
Debian package metadata is also present in Cargo.toml.
Flatpak and Snap recipes are present, but they remain more complicated than the native packaging paths for this application.
— CONFINEMENT —
CeeDee Ripper is not merely a self-contained graphical program — has a GUI and not only a CLI.
It needs low-level access to an optical drive, reads disc table-of-contents data, calls CD helper tools, uses GStreamer encoders, contacts MusicBrainz, retrieves cover art, and writes music files to user-visible locations. Sandboxed package formats make each of those requirements more explicit:
- device access to
/dev/cdrom,/dev/sr0,/dev/sr1, and possibly/dev/sg*must be granted; - udev, removable-media, and drive permissions may differ by distribution;
- command-line helpers and codecs must be staged inside the sandbox;
- GStreamer plugin availability must match the application's expectations;
- network access is required for metadata and cover art;
- output folders must be exposed deliberately;
- reproducible Rust and Cargo dependency vendoring is required for Flathub-style builds.
The Flatpak manifest currently grants broad device and filesystem permissions
for local testing and vendors Cargo sources through generated-sources.json.
That is useful during development. A Flathub-ready version, however, still
needs careful permission review, stable source generation, and validation on
clean systems.
The Snap recipe uses strict confinement and plugs such as optical-drive,
removable-media, mount-observe, network, wayland, and x11. That is the
right general shape. Even so, optical-drive access and desktop/media integration
may require manual connections or target-system testing before the package
behaves like a native install.
For now, Flatpak and Snap should be treated as experimental packaging paths for this particular application. Native packages and AppImage are the simpler release artifacts to validate first.
CeeDee Ripper is released under the MIT License. See LICENSE.


