mirror of
https://github.com/socatlolmeow/drift.git
synced 2026-11-03 19:27:19 +00:00
81 lines
2.5 KiB
Markdown
81 lines
2.5 KiB
Markdown
<div align="center">
|
|
|
|
<h1>Drift</h1>
|
|
|
|
### A music streaming client using Vim keybinds built in Rust.
|
|
|
|
Stream your favourite music from YouTube Music — all in one client, in your terminal.
|
|
|
|
</div>
|
|
|
|
---
|
|
|
|
<div align="center">
|
|
<img src="https://github.com/socatlolmeow/drift/blob/main/examples/showcase.gif" alt="Drift showcase" />
|
|
</div>
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
- **YouTube Music streaming** — search and stream tracks directly from YouTube Music via `yt-dlp` and `mpv`
|
|
- **Vim-style keybinds** — navigate with `j`/`k`, enter commands with `:`, quit with `q`
|
|
- **Queue management** — add, remove, reorder, and clear tracks in your queue
|
|
- **Playlists** — save, load, append, and delete named playlists; import from YouTube/YouTube Music URLs
|
|
- **Shuffle & repeat** — toggle shuffle and cycle through off / repeat-all / repeat-one modes
|
|
- **Volume & seek control** — adjust volume and seek with configurable step sizes
|
|
- **Session restore** — automatically restores your queue and playback position on next launch
|
|
- **Artist search** — drill into an artist's discography from the results view
|
|
- **Command palette** — full `:command` interface (`:search`, `:play`, `:volume`, `:seek`, `:save`, `:load`, `:import`, and more)
|
|
- **Autoplay** — optionally keep playing through results when the queue ends
|
|
- **TOML config** — persistent config at `~/.local/share/drift/config.toml`; comments are preserved across restarts
|
|
|
|
---
|
|
|
|
## Installation
|
|
|
|
### Dependencies
|
|
|
|
- [mpv](https://mpv.io/) — audio playback
|
|
- [yt-dlp](https://github.com/yt-dlp/yt-dlp) — YouTube stream extraction
|
|
- [Rust](https://rustup.rs/) (build only)
|
|
|
|
Install them with your package manager, e.g. on Arch:
|
|
```
|
|
sudo pacman -S mpv yt-dlp
|
|
```
|
|
|
|
### Build & install
|
|
|
|
```bash
|
|
git clone https://github.com/socatlolmeow/drift.git
|
|
cd drift
|
|
sudo make install
|
|
```
|
|
|
|
This installs `drift` to `/usr/local/bin`. To install to `/usr/bin` instead:
|
|
```bash
|
|
sudo make install PREFIX=/usr
|
|
```
|
|
|
|
### Other make targets
|
|
|
|
| Command | Description |
|
|
|---|---|
|
|
| `make` | Build (debug skipped, release only) |
|
|
| `make build` | Same as above |
|
|
| `sudo make install` | Build and install to `$PREFIX/bin` |
|
|
| `sudo make uninstall` | Remove the installed binary |
|
|
| `make clean` | Remove build artifacts |
|
|
|
|
---
|
|
|
|
## Star History
|
|
|
|
[](https://star-history.com/#socatlolmeow/drift)
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
[Drift](https://github.com/socatlolmeow/drift) is FOSS, released under the [GNU General Public License version 3 or later](https://www.gnu.org/licenses/gpl-3.0.html).
|