𝙘𝘿𝙫𝘿
𝙾𝚕𝚍-𝚜𝚌𝚑𝚘𝚘𝚕 𝚜𝚌𝚛𝚎𝚎𝚗𝚜𝚊𝚟𝚎𝚛 𝚒𝚗 𝚝𝚎𝚛𝚖𝚒𝚗𝚊𝚕 |
𝙰 𝚝𝚒𝚗𝚢 𝙲 / 𝚗𝚌𝚞𝚛𝚜𝚎𝚜 𝚎𝚢𝚎𝚌𝚊𝚗𝚍𝚢 for command line, 𝚍𝚛𝚊𝚠𝚜 𝚊 𝚋𝚘𝚞𝚗𝚌𝚒𝚗𝚐 𝙳𝚟𝙳 𝚕𝚘𝚐𝚘 𝚠𝚒𝚝𝚑 𝚊 𝚏𝚎𝚠 𝚎𝚡𝚝𝚛𝚊 𝚏𝚎𝚊𝚝𝚞𝚛𝚎𝚜.
Tip
Important
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
I'm planning on releasing this package via as many sources as possible, official/non-official repos, package managers, and more.
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
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
Tip
Details on usage and available options
cdvd [-f fps] [-s speed] [-t decay_sec] [-L logo.txt] [--info] [--mask-edges|--mask-blanks]
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 |
Action | Key(s) |
---|---|
Toggle trail | t |
Toggle info HUD | i |
Speed ± | ← / → |
FPS ± | ↑ / ↓ |
Decay ± | y / u |
Important
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 \
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
- Provide your own ASCII/UTF‑8 art via
-L path/to/logo.txt
at runtime.
⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⡀ ⠀⢠⣿⣿⡿⠀⠀⠈⢹⣿⣿⡿⣿⣿⣇⠀⣠⣿⣿⠟⣽⣿⣿⠇⠀⠀⢹⣿⣿⣿ ⠀⢸⣿⣿⡇⠀⢀⣠⣾⣿⡿⠃⢹⣿⣿⣶⣿⡿⠋⢰⣿⣿⡿⠀⠀⣠⣼⣿⣿⠏ ⠀⣿⣿⣿⣿⣿⣿⠿⠟⠋⠁⠀⠀⢿⣿⣿⠏⠀⠀⢸⣿⣿⣿⣿⣿⡿⠟⠋⠁⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣸⣟⣁⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣠⣴⣶⣾⣿⣿⣻⡟⣻⣿⢻⣿⡟⣛⢻⣿⡟⣛⣿⡿⣛⣛⢻⣿⣿⣶⣦⣄⡀⠀ ⠉⠛⠻⠿⠿⠿⠷⣼⣿⣿⣼⣿⣧⣭⣼⣿⣧⣭⣿⣿⣬⡭⠾⠿⠿⠿⠛⠉⠀
- Make sure your terminal font supports the characters you use.
Caution
DETAILS
- A POSIX‑y environment (Linux, BSD, macOS).
ncursesw
,gcc
/clang
, andmake
(if using the Makefile).- UTF‑8 locale (e.g.,
LANG=en_US.UTF-8
).
- 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!