Skip to content

Szmelc-INC/cdvd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cDvD

𝙘𝘿𝙫𝘿

𝙾𝚕𝚍-𝚜𝚌𝚑𝚘𝚘𝚕 𝚜𝚌𝚛𝚎𝚎𝚗𝚜𝚊𝚟𝚎𝚛 𝚒𝚗 𝚝𝚎𝚛𝚖𝚒𝚗𝚊𝚕

𝙰 𝚝𝚒𝚗𝚢 𝙲 / 𝚗𝚌𝚞𝚛𝚜𝚎𝚜 𝚎𝚢𝚎𝚌𝚊𝚗𝚍𝚢 for command line, 𝚍𝚛𝚊𝚠𝚜 𝚊 𝚋𝚘𝚞𝚗𝚌𝚒𝚗𝚐 𝙳𝚟𝙳 𝚕𝚘𝚐𝚘 𝚠𝚒𝚝𝚑 𝚊 𝚏𝚎𝚠 𝚎𝚡𝚝𝚛𝚊 𝚏𝚎𝚊𝚝𝚞𝚛𝚎𝚜.

stars forks contributors pull requests last commit discord youtube website


Tip

Demo 🎬

Gif / Asciimation

Recorded with ASCIINEMA

short demo long

Important

Quick Install

Clone

git clone https://github.com/Szmelc-INC/cdvd.git && cd cdvd

Build, install into /bin/cdvd and clean build artifacts

make && sudo make install && make clean

Note

Info

Distribution

I'm planning on releasing this package via as many sources as possible, official/non-official repos, package managers, and more.

📦 Packaging

Main Linux / UNIX distros

Status System/Family Target repo(s)
Arch / Endeavour / Manjaro AUR (PKGBUILD)
Debian (stable/testing/unstable) Debian archive (mentors → NEW)
Ubuntu / Pop!_OS / Mint Ubuntu archive
Ubuntu / Pop!_OS / Mint Launchpad PPA
Fedora Fedora official
Fedora / RHEL family COPR (can target EPEL)
RHEL / Rocky / Alma EPEL
openSUSE Tumbleweed/Leap OBS → openSUSE repos
Gentoo ::gentoo (main tree)
Gentoo ::guru overlay
Alpine aports: community/testing
Void Linux void-packages
Slackware SlackBuilds.org (SBo)
Solus Solus repo
Mageia Core / Updates / Backports
NixOS / any Linux w/ Nix nixpkgs
Nix (community) NUR
GNU Guix guix (main channel)
FreeBSD Ports → pkg
OpenBSD ports → packages
NetBSD / cross-OS pkgsrc

Extras & cross-platform

Status Platform Target repo(s)
macOS + Linux Homebrew/homebrew-core
macOS MacPorts
Universal Snap Store
Universal Flathub (Flatpak)
Universal AppImage + AppImageHub
Windows winget
Windows Scoop
Windows Chocolatey
Python/conda users conda-forge
HPC Spack
Multi-distro builder OBS project
RPM builder COPR
Containers Docker/OCI on ghcr.io

🤝 Contribute

Looking for a project to contribute?

I kinda need help with repackaging & maintaining it for different platforms, If you want to help, hit me up on Discord, Email or by any means.
Email Discord


Tip

Details on usage and available options

Usage

cdvd [-f fps] [-s speed] [-t decay_sec] [-L logo.txt] [--info] [--mask-edges|--mask-blanks]

Flags

Flag Description
-f <fps> Frames per second
-s <speed> Cells per second (movement speed)
-t <sec> Ghost‑trail decay time (0 = off)
-L <path> Load a UTF‑8 logo file at runtime
--info Show status HUD line
--mask-edges / --mask-blanks Edge/blank masking modes

Hotkeys (at runtime)

Action Key(s)
Toggle trail t
Toggle info HUD i
Speed ± /
FPS ± /
Decay ± y / u

Important

Compiling

You can change logo to anything you preffer before compilation, to bake it into binary, or with a -L flag in runtime
Make sure you have logo.txt with ASCII art before compiling \

Buld

With Makefile:

#   make                 # build
#   make run             # run with nice defaults
#   sudo make install    # install to /bin/cdvd  (override BINDIR/INSTALL_NAME)
#   sudo make uninstall  # remove installed binary
#   make clean           # clean artifacts

Alternatively run bash compile.sh
Or manually: Convert logo.txt to inc before compilation

xxd -i -n dvd_logo logo.txt > logo.inc

Compile

export LANG=en_US.UTF-8
gcc -O2 -Wall -Wextra -std=c11 dvd_ascii.c -lncursesw -lm -o dvd

Note

Custom logos

  • Provide your own ASCII/UTF‑8 art via -L path/to/logo.txt at runtime.

Default logo.txt

⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⡀
⠀⢠⣿⣿⡿⠀⠀⠈⢹⣿⣿⡿⣿⣿⣇⠀⣠⣿⣿⠟⣽⣿⣿⠇⠀⠀⢹⣿⣿⣿
⠀⢸⣿⣿⡇⠀⢀⣠⣾⣿⡿⠃⢹⣿⣿⣶⣿⡿⠋⢰⣿⣿⡿⠀⠀⣠⣼⣿⣿⠏
⠀⣿⣿⣿⣿⣿⣿⠿⠟⠋⠁⠀⠀⢿⣿⣿⠏⠀⠀⢸⣿⣿⣿⣿⣿⡿⠟⠋⠁⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣸⣟⣁⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣠⣴⣶⣾⣿⣿⣻⡟⣻⣿⢻⣿⡟⣛⢻⣿⡟⣛⣿⡿⣛⣛⢻⣿⣿⣶⣦⣄⡀⠀
⠉⠛⠻⠿⠿⠿⠷⣼⣿⣿⣼⣿⣧⣭⣼⣿⣧⣭⣿⣿⣬⡭⠾⠿⠿⠿⠛⠉⠀

Or bake it in at compile time using the xxd step above.

  • Make sure your terminal font supports the characters you use.

Warning

Logos / Banners

Images / Logos

Banners
long

long

Logos
long

long
---

Caution

DETAILS

Requirements

  • A POSIX‑y environment (Linux, BSD, macOS).
  • ncursesw, gcc/clang, and make (if using the Makefile).
  • UTF‑8 locale (e.g., LANG=en_US.UTF-8).

📝 Notes

  • Terminal size affects bounce boundaries (resizing is handled on the fly).
  • For best visuals, use a font with good box‑drawing / block character coverage.
  • Also, Important to note is, this project was mostly just Vibe Coded with much help from an A.I assistant,
  • while I took it as a learning opportunity with a project that does not neceaseaarly have to be fully understood right away and memory safe!