| Crates.io | coffeevis |
| lib.rs | coffeevis |
| version | 0.6.1 |
| created_at | 2022-06-12 03:46:16.608579+00 |
| updated_at | 2025-11-09 01:26:25.329379+00 |
| description | Personal graphical/console music visualizer for Linux. |
| homepage | |
| repository | https://github.com/khoidauminh/coffeevis_rs |
| max_upload_size | |
| id | 604344 |
| size | 239,318 |
A personal GUI + TUI music visualizer written in Rust.
Terminal mode is back and enabled by default!
Minifb support has been removed!
Controls have been remapped. I'm currently preparing to introduce more complex visualizers that allow inputs.
A little post-processing effect has been added to window mode which should make the animations a little more smooth looking.

Coffeevis works on Linux. Windows support is being planned.
cargo install coffeevis
Coffeevis does not remember settings and does not generate config files (feature won't be implemented unless requested).
To get around this, make a user script that runs coffeevis with flags
E.g:
#!/bin/bash
/path/to/coffeevis --fps 60 --no-auto-switch --size 40x40
To force Coffeevis to run in Xwayland, unset WAYLAND_DISPLAY
WAYLAND_DISPLAY= coffeevis
Coffeevis supports temporary options at launch
| Option | Value(s) | Description |
|---|---|---|
| --ascii --block --braille |
run in the terminal | |
| --no-auto-switch | disable automatic visualizer switching | |
| --size | 80x80 | set resolution in window mode |
| --scale | 2 | upscale in window mode |
| --fps | 60 | set refresh rate (by default coffeevis will try to query your monitor's refresh rate) |
| --resizable | allow resizing in window mode | |
| --max-con-size | 50x50 | set maximum resolution in terminal mode |
| --vis | spectrum | launche coffeevis with the specified visualizer |
| --effect | crt | blank out every other horizontal line to simulate CRT effect |
| --effect | interlaced | (default) interlace fields together to make the visualizer appear smoother (the number of fields is the scale value) |
| --effect | none | rendering is scaled and presented as is |
Upon launch coffeevis will grab your default audio source, use an audio
config tool to direct your desired source to coffeevis (e.g. pavucontrol).
On Wayland, coffeevis cannot set itself on top so you will have to rely on an external tool. For example, on KDE Plasma, you can use the window rules feature.
When input is quiet, the visualizer will try to amplify the input so that the visualizers don't become boring.
Coffeevis prints text directly to stdout, rendering may be heavy depending on your terminal.
A terminal with GPU-accelerated support is recommended (i.e Alacritty, Kitty, Wezterm, ...)
A maximum resolution is built into the console mode (default: 50x50). Coffeevis will render in the center of the screen if terminal dimensions are larger than the limit.
It looks the smoothest when you're in a dark room with low monitor brightness. But don't do that lol
| Key | Description |
|---|---|
| n | iterate forward through visualizers (wraps around) |
| b | iterate backward (wraps around) |
| m | switche through sets of visualizers (wraps around) |
| q | exit |
| \ | toggle auto switching (default: ON, 8 seconds) |
| Key | Description |
|---|---|
| . | toggle between ascii rendering, block rendering and braille rendering |
| 9 / 0 | decrease/increase maximum resolution |
| 7 / 8 | decrease/increase fps by 5 (default: 60) |
| 1 .. 6 | change fps to 10 ... 60 respectively |
Please don't look at my code. No I'm not hiding anything in there it's all garbage code idk how to do gpu programming so it's all cpu code uh uhhh