{"id":15566995,"url":"https://github.com/khoidauminh/coffeevis_rs","last_synced_at":"2025-06-13T10:34:10.107Z","repository":{"id":38014657,"uuid":"441702006","full_name":"khoidauminh/coffeevis_rs","owner":"khoidauminh","description":"Coffeevis, a personal music visualizer","archived":false,"fork":false,"pushed_at":"2025-04-06T03:37:02.000Z","size":8928,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-23T23:48:43.789Z","etag":null,"topics":["audio","audio-visualizer","console","graphics","gui","linux","music","music-visualizer","rust-lang","tui","visualization"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khoidauminh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-25T15:03:06.000Z","updated_at":"2025-04-21T18:30:59.000Z","dependencies_parsed_at":"2023-11-28T08:27:19.206Z","dependency_job_id":"09542c32-3bb3-4986-8a47-15c0e9d82520","html_url":"https://github.com/khoidauminh/coffeevis_rs","commit_stats":{"total_commits":140,"total_committers":4,"mean_commits":35.0,"dds":0.5357142857142857,"last_synced_commit":"e4935633e232a07a0c4d83bef17671538080c8e1"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoidauminh%2Fcoffeevis_rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoidauminh%2Fcoffeevis_rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoidauminh%2Fcoffeevis_rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khoidauminh%2Fcoffeevis_rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khoidauminh","download_url":"https://codeload.github.com/khoidauminh/coffeevis_rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250535107,"owners_count":21446506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-visualizer","console","graphics","gui","linux","music","music-visualizer","rust-lang","tui","visualization"],"created_at":"2024-10-02T17:09:31.829Z","updated_at":"2025-06-13T10:34:10.085Z","avatar_url":"https://github.com/khoidauminh.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Logo of Coffeevis](./assets/coffeevis_icon.svg)\n\n# Coffee Music Visualizer\nA personal GUI + TUI music visualizer written in Rust.\n\n## About this project\nI decided to write the visualizer because existing projects didn't suit me.\nSome too slow, some didn't have the visualizer I like, some take up too much cpu usage, etc.\n\nThis project also serves as my playground, so you'll see a lot of weird implementations in the source files.\n\n## What's new in v0.6.0\n\n#### YOU CAN NOW WRITE COFFEEVIS VISUALIZERS *OUTSIDE* OF COFFEEVIS\n\nGuess what? I got bored 4 something days before my statistsics exam and\nwrote an interface for foreign programs to communicate with coffeevis lol\n\nSee [README.md](src/data/README.md)\n\n### Other changes\n\nTerminal mode is back and enabled by default!\n\nMinifb support has been removed!\n\nTwo new features have been added: 'window_only' and 'console_only` that\nrespectively disables terminal mode and winit mode if you don't want it.\n\nA little post-processing effect has been added to window mode which should\nmake the animations a little more smooth looking.\n\nNew visualizers: TODO!\n\nConfiguration changes: TODO!\n\n## Examples:\n\n![Console](https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExMWwydzQydHVhdG9nbTZwZnZyNHEyazduNmp0aGFib21xYjFtc2F3YSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/flPyMMxHiSpo73kpEg/giphy.gif)\n![Terminal](https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExeThkNGxieWVxcGhhM3RibXZ5aGNzczN1YzF5aGRuNmVyYzBlYjc4NiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/5FZtC9GbiOrXrhnMON/giphy.gif)\n\n## Platform support\nCoffeevis so far only runs on Linux.\nWindows, MacOS and BSD support is not available.\n\n## Installation\n\n```\ncargo install coffeevis\n```\n\nTo disable winit, use:\n\n```\ncargo install coffeevis --features console_only\n```\n\nTo disable console mode, use:\n\n```\ncargo install coffeevis --features window_only\n```\n\n## Configuration\n\nCoffeevis does not remember settings and does not generate config files\n(feature won't be implemented unless requested).\n\nTo get around this, make a user script that runs coffeevis with flags\n\nE.g:\n```\n#!/bin/bash\n\n/path/to/coffeevis --fps 60 --no-auto-switch --size 40x40\n\n```\n\nTo force Coffeevis to run in Xwayland, unset `WAYLAND_DISPLAY`\n\n```\nWAYLAND_DISPLAY= coffeevis\n```\n\n## Flags\nCoffeevis supports temporary options at launch\n\n| Option | Value (example) | Description |\n| ------ | ------ | ------ |\n| --ascii\u003cbr /\u003e--block\u003cbr /\u003e--braille | | runs in the terminal |\n| --no-auto-switch | | disables automatic visualizer switching |\n| --size | 80x80 | sets resolution in window mode |\n| --scale | 2 | upscales in window mode |\n| --fps | 60 | sets refresh rate (by default coffeevis will try to query your monitor's refresh rate) |\n| --resizable | | allows resizing in window mode |\n| --max-con-size | 50x50 | sets maximum resolution in terminal mode |\n| --vis | spectrum | launches coffeevis with the specified visualizer |\n\n## Experimental\n\n| Option | Value (example) | Description |\n| ------ | ------ | ------ |\n| --foreign | | instructs coffeevis to send out audio and listens to input commands see [Foreign Communicator](src/data/README.md) |\n| --desktop-file | | (Specifically for GNOME) creates a desktop file so that it gets an icon |\n\n## Notes\n\nUpon launch coffeevis will grab your default audio source, use an audio\nconfig tool to direct your desired source to coffeevis (e.g. `pavucontrol`).\n\nOn 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.\n\nWhen input is quiet, the visualizer will try to amplify the input so that the visualizers don't become boring.\n\nCoffeevis prints text directly to stdout, rendering may be heavy depending on your terminal.\n\nA terminal with GPU-accelerated support is recommended (i.e Alacritty, Kitty, Wezterm, ...)\n\nA 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.\n\n## Keyboard shortcuts\n\n### Global\n|  Key | Description |\n| ------ | ------ |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e | iterates forward through visualizers (wraps around) |\n| \u003ckbd\u003eb\u003c/kbd\u003e | iterates backward (wraps around) |\n| \u003ckbd\u003eq\u003c/kbd\u003e | exits |\n| \u003ckbd\u003e/\u003c/kbd\u003e | resets all settings |\n| \u003ckbd\u003e-\u003c/kbd\u003e / \u003ckbd\u003e+\u003c/kbd\u003e | decreases/increases input volume |\n| \u003ckbd\u003e\\[\u003c/kbd\u003e / \u003ckbd\u003e\\]\u003c/kbd\u003e | decreases/increases spectrum roughness |\n| \u003ckbd\u003e;\u003c/kbd\u003e / \u003ckbd\u003e'\u003c/kbd\u003e | decreases/increases amount of samples into input (works for some wave-based visualizers only) |\n| \u003ckbd\u003e\\\\\u003c/bkd\u003e | toggles auto switching (default: ON, 8 seconds) |\n| \u003ckbd\u003en\u003c/kbd\u003e | switches through sets of visualizers (wraps around) |\n| \u003ckbd\u003ef\u003c/kbd\u003e | (when launched with foreign communicator) switches between foreign visualizer and built-in. |\n\n### Terminal\n|  Key | Description |\n| ------ | ------ |\n| \u003ckbd\u003e.\u003c/kbd\u003e | toggles between ascii rendering, block rendering and braille rendering |\n| \u003ckbd\u003e9\u003c/kbd\u003e / \u003ckbd\u003e0\u003c/kbd\u003e | decreases/increases maximum resolution |\n| \u003ckbd\u003e7\u003c/kbd\u003e / \u003ckbd\u003e8\u003c/kbd\u003e | decreases/increases fps by 5 (default: 60) |\n| \u003ckbd\u003e1\u003c/kbd\u003e .. \u003ckbd\u003e6\u003c/kbd\u003e | changes fps to 10 ... 60 respectively |\n\n\u003csup\u003e\u003csub\u003ePlease 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\u003c/sub\u003e\u003c/sup\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhoidauminh%2Fcoffeevis_rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhoidauminh%2Fcoffeevis_rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhoidauminh%2Fcoffeevis_rs/lists"}