#music #graphics #visualizer #audio

app coffeevis

Personal graphical/console music visualizer for Linux

7 releases (4 breaking)

Uses new Rust 2024

0.6.1 Nov 9, 2025
0.6.0 Nov 8, 2025
0.5.1 Sep 10, 2024
0.5.0 Aug 23, 2024
0.2.1 Jun 12, 2022

#63 in Visualization

GPL-3.0-only

150KB
3.5K SLoC

Logo of Coffeevis

Coffee Music Visualizer

A personal GUI + TUI music visualizer written in Rust.

What's new in v0.6.0

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.

Examples:

Console Terminal

Platform support

Coffeevis works on Linux. Windows support is being planned.

Installation

cargo install coffeevis

Configuration

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

Flags

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

Notes

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

Keyboard shortcuts

Global

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)

Terminal

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

Dependencies

~9–48MB
~659K SLoC