{"id":36965008,"url":"https://github.com/ebithril/relax-player","last_synced_at":"2026-01-13T19:50:32.875Z","repository":{"id":328994636,"uuid":"1116399247","full_name":"ebithril/relax-player","owner":"ebithril","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-31T06:50:27.000Z","size":12642,"stargazers_count":66,"open_issues_count":2,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-04T07:52:32.659Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ebithril.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-14T19:29:35.000Z","updated_at":"2026-01-03T21:54:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ebithril/relax-player","commit_stats":null,"previous_names":["ebithril/relax-player"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ebithril/relax-player","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebithril%2Frelax-player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebithril%2Frelax-player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebithril%2Frelax-player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebithril%2Frelax-player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebithril","download_url":"https://codeload.github.com/ebithril/relax-player/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebithril%2Frelax-player/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28397930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-13T19:50:32.172Z","updated_at":"2026-01-13T19:50:32.869Z","avatar_url":"https://github.com/ebithril.png","language":"Rust","funding_links":[],"categories":["Table of Contents"],"sub_categories":[],"readme":"# Relax Player\n\n![Crates.io Version](https://img.shields.io/crates/v/relax-player)\n\n A lightweight, distraction-free alternative to web-based ambient players. Features individual volume control for Rain, Thunder, and Campfire sounds with an alsamixer-style TUI interface.\n\n![Made with VHS](https://vhs.charm.sh/vhs-1tIt9gPS1g7zelND58jSaZ.gif)\n\n## Why relax-player?\nI built this because I wanted a simpler way to manage my focus environment:\n* **No more YouTube tabs:** Tired of manually balancing volumes for different \"Rain \u0026 Thunder\" videos every time.\n* **Lightweight:** Uses minimal CPU/RAM compared to a browser or heavy electron app.\n* **100% Offline:** Once sounds are downloaded, you don't need an internet connection. No tracking, no ads, just focus.\n\n## Features\n\n- Play multiple looping ambient sounds simultaneously\n- Individual volume control for each sound (0-100%)\n- Master volume control\n- Mute/unmute individual sounds\n- Alsamixer-style vertical bar UI\n- Persistent configuration (volumes and mute states saved automatically)\n- Cross-platform (Linux, Windows, macOS)\n- Vim-style keybindings\n\n## Installation\n\n### Prerequisites\n\n**Linux users:** ALSA development libraries are required to build the application:\n\n```bash\n# Debian/Ubuntu\nsudo apt-get install libasound2-dev\n\n# Fedora/RHEL\nsudo dnf install alsa-lib-devel\n\n# Arch Linux\nsudo pacman -S alsa-lib\n```\n\n### From crates.io (recommended)\n\n```bash\ncargo install relax-player\n```\n\n### From Arch User Repository(AUR)\n\n```bash\nparu -S relax-player\n```\n\nOn first run, the application will automatically download the sound files for you.\n\n### From source\n\n```bash\ncargo build --release\n./target/release/relax-player\n```\n\nDebug builds check `./sounds/` in the current directory first, making local development easier. If sounds aren't found in CWD, they fall back to downloading from GitHub like release builds.\n\n**Release builds**: Sound files are automatically downloaded when you first run the application. They are stored in a platform-specific data directory and will be reused between sessions.\n\n## Sound Management\n\n### Automatic Downloads\n\n- **First install**: Sounds are automatically downloaded on first run\n- **Version updates**: When you update to a new version, you'll be prompted to download updated sounds\n- **Storage location**:\n  - **Linux**: `~/.local/share/relax-player/sounds/`\n  - **Windows**: `%APPDATA%\\relax-player\\sounds\\`\n  - **macOS**: `~/Library/Application Support/relax-player/sounds/`\n\n## Controls\n\n### Navigation\n- `←` / `→` or `h` / `l` - Select previous/next channel\n- Channels: Rain → Thunder → Campfire → Master\n\n### Volume Control\n- `↑` / `↓` or `k` / `j` - Increase/decrease volume (±5%)\n- Volume range: 0-100%\n\n### Mute\n- `m` - Toggle mute for selected sound (not available for Master)\n\n### Other\n- `q` - Quit application\n\n## Configuration\n\nSettings are automatically saved to a configuration file when changed:\n\n- **Linux**: `~/.config/relax-player/config.json`\n- **Windows**: `%APPDATA%\\relax-player\\config.json`\n- **macOS**: `~/Library/Application Support/relax-player/config.json`\n\nThe config file stores:\n- Individual volume levels for each sound\n- Mute states\n- Master volume\n- Downloaded sounds version (for update tracking)\n\n## License\n\nThe source code for **Relax Player** is licensed under the **MIT License**.\n\n**Audio Assets:**\nThe ambient sounds (Rain, Thunder, Campfire) are sourced from Pixabay and are subject to the **Pixabay License**. They are free to use within this application but **cannot be redistributed or sold as standalone audio files**.\n\nSee [LICENSE](LICENSE) and [CREDITS.md](CREDITS.md) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febithril%2Frelax-player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febithril%2Frelax-player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febithril%2Frelax-player/lists"}