Skip to content

About

Audio CD Ripper

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CeeDee Ripper

CeeDee Ripper

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-ui
  • gtk-ui, using GTK4 and Libadwaita

Default builds include both front ends. The active interface can be selected at runtime and saved for later launches.

Screenshots

CeeDee Ripper main window

CeeDee Ripper ripping view

Final mentions

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

The 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 -R

New 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:

  • cdparanoia
  • cd-discid
  • eject
  • flac
  • lame
  • vorbis-tools
  • libdiscid
  • 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 and Run

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 gtk

The 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-ripper

Packaging

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

Notes on Flatpak and Snap

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.

License

CeeDee Ripper is released under the MIT License. See LICENSE.

About

Audio CD Ripper

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages