explaingit

jpochyla/psst

9,394RustAudience · developerComplexity · 2/5Setup · moderate

TLDR

Psst is a lightweight, native Spotify client for Windows, Mac, and Linux built in Rust, avoiding the sluggishness of browser-based Electron apps while supporting playback, search, podcasts, and media keys.

Mindmap

mindmap
  root((psst))
    What it does
      Native Spotify client
      No Electron
      Cross-platform
    Supported features
      Playback and search
      Podcast support
      Media keys
      Dark theme
    Architecture
      Core Spotify session lib
      Druid GUI app
      CLI example tool
    Platforms
      Windows
      macOS
      Linux
    Audience
      Rust developers
      Power users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Use a fast, memory-efficient Spotify client on your desktop without the overhead of an Electron-based app.

USE CASE 2

Study how to build a cross-platform native GUI application in Rust using the Druid UI library.

USE CASE 3

Extend the Spotify client with missing features by contributing to the Rust source code.

Tech stack

RustDruidlibrespot

Getting it running

Difficulty · moderate Time to first run · 5min

Pre-built installers available for all platforms, building from source requires Rust toolchain and GTK/audio libraries on Linux.

In plain English

Psst is a Spotify client application built in Rust, with a native graphical interface that runs on Windows, Linux, and macOS. The key motivation behind the project is to avoid using Electron, a framework many desktop apps rely on that bundles a full web browser to render the interface. Building natively in Rust means the app is lighter and faster than Electron-based alternatives. A Spotify Premium account is required to use it. The app supports a range of Spotify features: playing tracks, browsing saved albums and playlists, searching for artists and albums, podcast playback, media key controls, volume control, loudness normalization, and a dark theme. The roadmap in the README makes clear that the project is still in early development. Several features are listed as not yet complete, including playlist management, reacting to headphone connect or disconnect events, improved caching, and a redesigned two-pane layout. Pre-built downloads are available for all three platforms from the GitHub Releases page, including a Debian package for Linux and a standard installer for macOS and Windows. Building from source requires a recent version of the Rust toolchain and, on Linux, a few system libraries related to GTK and audio output. The code is split into three parts: a core library that handles the Spotify network session, audio decoding, and playback queue, a GUI application built with a Rust-native UI library called Druid, and a small example command-line tool. The project draws heavily from an existing open-source Spotify library called librespot but takes a different approach to audio file retrieval and does not use asynchronous runtime libraries. Psst does not send any data to its own servers and does not store user credentials locally.

Copy-paste prompts

Prompt 1
I want to build on top of Psst's Spotify session handling in Rust. Show me how the core library manages authentication and the playback queue, and how I'd add a new feature like playlist creation.
Prompt 2
Walk me through building Psst from source on Linux, what Rust toolchain version and system libraries do I need, and how do I run it?
Prompt 3
I'm comparing Electron-based desktop apps with native Rust GUI apps. Use Psst vs a typical Electron Spotify client as a concrete example of the performance and memory trade-offs.
Prompt 4
Show me how Psst implements media key controls on macOS and how I'd add a global hotkey for shuffling the current playlist.
Prompt 5
Explain how Psst uses librespot under the hood and what the architecture looks like across its three components: core library, GUI app, and CLI example.
Open on GitHub → Explain another repo

← jpochyla on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.