Tinder for your Music Library
Sift is a keyboard-driven music library weeder for GNOME. It plays the chorus of each track in your library and lets you quickly decide to keep it, trash it, or skip it — all without lifting your hands from the keyboard.
app-running-example.mp4 |
![]() |
Sift scans a folder you choose, then plays the most recognisable part of each track — the chorus — so you can make a fast judgement call:
| Key | Action |
|---|---|
→ |
Keep the song |
← |
Trash it |
↓ |
Skip for now |
Space |
Play / pause |
Ctrl+Z |
Undo last action |
I |
View song info |
Ctrl+D |
Open library dashboard |
Chorus detection uses LRCLIB synced lyrics where available, falling back to librosa RMS energy analysis. Results are shown as a live mel-spectrogram visualiser.
Your kept and trashed songs are saved to a workspace folder (~/Music/sift-workspace by default), so your decisions persist across sessions.
- Automatic chorus detection via LRCLIB synced lyrics or librosa energy analysis
- Live mel-spectrogram visualiser with playhead
- Dashboard to review liked and trashed songs, restore from trash, or delete files
- Configurable workspace folder for storing your lists
- Session memory — resumes where you left off
- Full song metadata viewer
- Keyboard-first design — judge an entire library without touching the mouse
Download sift.flatpak from the latest release and install it:
flatpak install sift.flatpakThen launch it from your GNOME app launcher or run:
flatpak run io.github.IdleEndeavor.SiftTo uninstall:
flatpak uninstall io.github.IdleEndeavor.SiftDependencies:
pip install librosa soundfile mutagen requests send2trash numba --break-system-packagesInstall local icons and desktop entry:
bash install-local.shRun:
python3 sift.pyYou'll need flatpak-builder and the GNOME Platform/SDK runtime:
sudo dnf install flatpak-builder
flatpak install flathub org.gnome.Platform//47 org.gnome.Sdk//47Then build and install:
flatpak-builder --force-clean --install --user build-dir io.github.IdleEndeavor.Sift.jsonNote: All Python dependency wheels are fetched automatically from PyPI during the build. No manual downloads required.
By default Sift stores your liked list, trash list, and session state in:
~/Music/sift-workspace/
You can change this in Menu → Preferences → Workspace. The workspace path itself is saved to ~/.config/sift/config.json.
- GTK4 + Libadwaita — UI
- GStreamer — audio playback
- librosa — audio analysis and mel-spectrogram
- LRCLIB — synced lyrics for chorus detection
- mutagen — audio tag reading
- send2trash — safe file deletion
GPL-3.0 — see LICENSE for details.
