[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5517":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},5517,"psst","jpochyla\u002Fpsst","jpochyla","Fast and multi-platform Spotify client with native GUI","",null,"Rust",9424,261,49,116,0,1,16,37,7,38.25,"MIT License",false,"main",[],"2026-06-12 02:01:11","# Psst\n\nA fast Spotify client with a native GUI written in Rust, without Electron.\nPsst is still very early in development, lacking in features, stability, and general user experience.\nIt's fully cross-platform, supporting Windows, Linux, and macOS.\nContributions are welcome!\n\n**Note:** A Spotify Premium account is required.\n\n[![Build](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Factions)\n\n![Screenshot](.\u002Fpsst-gui\u002Fassets\u002Fscreenshot.png)\n\n## Download\n\nGitHub Actions automatically builds and releases new versions when changes are pushed to the `main` branch.\nYou can download the latest release for Windows, Linux, and macOS from the [GitHub Releases page](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest).\n\n| Platform               | Download Link                                                                            |\n| ---------------------- | ---------------------------------------------------------------------------------------- |\n| Linux (x86_64)         | [Download](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest\u002Fdownload\u002Fpsst-linux-x86_64)  |\n| Linux (aarch64)        | [Download](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest\u002Fdownload\u002Fpsst-linux-aarch64) |\n| Debian Package (amd64) | [Download](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest\u002Fdownload\u002Fpsst-amd64.deb)     |\n| Debian Package (arm64) | [Download](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest\u002Fdownload\u002Fpsst-arm64.deb)     |\n| macOS                  | [Download](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest\u002Fdownload\u002FPsst.dmg)           |\n| Windows                | [Download](https:\u002F\u002Fgithub.com\u002Fjpochyla\u002Fpsst\u002Freleases\u002Flatest\u002Fdownload\u002FPsst.exe)           |\n\nUnofficial builds of Psst are also available through the [AUR](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fpsst-git) and [Homebrew](https:\u002F\u002Fformulae.brew.sh\u002Fcask\u002Fpsst).\n\n## Building\n\nOn all platforms, the **latest [Rust](https:\u002F\u002Frustup.rs\u002F) stable** (at least 1.65.0) is required.\nFor platform-specific requirements, see the dropdowns below.\n\n\u003Cdetails>\n\u003Csummary>Linux\u003C\u002Fsummary>\n\nOur user-interface library, Druid, has two possible backends on Linux: GTK and pure X11, with a Wayland backend in the works.\nThe default Linux backend is GTK.\nBefore building on Linux, make sure the required dependencies are installed.\n\n### Debian\u002FUbuntu\n\n```shell\nsudo apt-get install libssl-dev libgtk-3-dev libcairo2-dev libasound2-dev\n```\n\n### RHEL\u002FFedora\n\n```shell\nsudo dnf install openssl-devel gtk3-devel cairo-devel alsa-lib-devel\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>OpenBSD (WIP)\u003C\u002Fsummary>\n\nOpenBSD support is still a WIP, and things will likely not function as intended.\nSimilar to Linux, Druid defaults to GTK while also providing a pure X11 backend.\nFurthermore, bindgen must be able to find LLVM through the expected environment variable.\nOnly OpenBSD\u002Famd64 has been tested so far.\n\n```shell\ndoas pkg_add gtk+3 cairo llvm\nexport LIBCLANG_PATH=\u002Fusr\u002Flocal\u002Flib\n```\n\nIn case rustc(1) fails building bigger crates\n\n```shell\nmemory allocation of xxxx bytes failed\nerror: could not compile `gtk`\nCaused by:\n  process didn't exit successfully: `rustc --crate-name gtk [...]` (signal: 6, SIGABRT: process abort signal)\nwarning: build failed, waiting for other jobs to finish...\n```\n\ntry increasing your user's maximum heap size:\n\n```shell\nulimit -d $(( 2 * `ulimit -d` ))\n```\n\n\u003C\u002Fdetails>\n\n---\n\n#### Build from Source\n\n```shell\ncargo build\n# Append `--release` for a release build.\n```\n\n#### Run from Source\n\n```shell\ncargo run --bin psst-gui\n# Append `--release` for a release build.\n```\n\n#### Build Installation Bundle (i.e., macOS .app)\n\n```shell\ncargo install cargo-bundle\ncargo bundle --release\n```\n\n## Roadmap\n\n- [x] Vorbis track playback\n- [x] Browsing saved albums and tracks\n- [x] Save \u002F unsave albums and tracks\n- [x] Browsing followed playlists\n- [x] Search for artists, albums, and tracks\n- [x] Podcast support\n- [x] Media keys control\n- [x] Open Spotify links through the search bar\n- [x] Audio volume control\n- [x] Audio loudness normalization\n- [x] Genre playlists and \"For You\" content\n- [x] Dark theme\n- [x] Credits support\n- [ ] Resilience to network errors (automatically retry timed-out requests)\n- [ ] Managing playlists\n  - Follow\u002Funfollow\n  - Add\u002Fremove tracks\n  - Reorder tracks\n  - Rename playlist\n  - Playlist folders\n- [x] Playback queue\n- [ ] React to audio output device events\n  - Pause after disconnecting headphones\n  - Transfer playback after connecting headphones\n- [ ] Better caching\n  - Cache as many WebAPI responses as possible\n  - Visualize cache utilization\n    - Total cache usage in the config dialog\n    - Show time origin of cached data, allow to refresh\n- [ ] Trivia on the artist page, Wikipedia links\n- [ ] Downloading encrypted tracks\n- [ ] Reporting played tracks to Spotify servers\n- [ ] OS-specific application bundles\n- UI\n  - [ ] Rethink the current design, consider a two-pane layout\n    - Left pane for browsing\n    - Right pane for current playback\n  - [ ] Detect light\u002Fdark OS theme\n  - [ ] Robust error states, ideally with a retry button\n  - [ ] Correct playback highlight\n    - Highlight now-playing track only in the correct album\u002Fplaylist\n    - Keep highlighted track in viewport\n  - [ ] Paging or virtualized lists for albums and tracks\n  - [ ] Grid for albums and artists\n  - [ ] Robust active\u002Finactive menu visualization\n  - [ ] Save playback state\n\n## Development\n\nContributions are very welcome!  \nHere's the basic project structure:\n\n- `\u002Fpsst-core` - Core library, takes care of Spotify TCP session, audio file retrieval, decoding, audio output, playback queue, etc.\n- `\u002Fpsst-gui` - GUI application built with [Druid](https:\u002F\u002Fgithub.com\u002Flinebender\u002Fdruid)\n- `\u002Fpsst-cli` - Example CLI that plays a track. Credentials must be configured in the code.\n\n## Privacy Policy\n\nPsst connects only to the official Spotify servers and does not call home.\nCaches of various things are stored locally and can be deleted anytime.\nUser credentials are not stored at all; instead, a re-usable authentication token from Spotify is used.\n\n## Thanks\n\nThis project would not exist without the following:\n\n- Big thank you to [`librespot`](https:\u002F\u002Fgithub.com\u002Flibrespot-org\u002Flibrespot), the Open Source Spotify client library for Rust. Most of `psst-core` is directly inspired by the ideas and code of `librespot`, although with a few differences:\n  - Spotify Connect (remote control) is not supported yet.\n  - Psst is completely synchronous, without `tokio` or other `async` runtime, although it will probably change in the future.\n  - Psst is using HTTPS-based CDN audio file retrieval, similar to the official Web client or [`librespot-java`](https:\u002F\u002Fgithub.com\u002Flibrespot-org\u002Flibrespot-java), instead of the channel-based approach in `librespot`.\n- [`druid`](https:\u002F\u002Fgithub.com\u002Flinebender\u002Fdruid) native GUI library for Rust.\n- [`ncspot`](https:\u002F\u002Fgithub.com\u002Fhrkfdn\u002Fncspot) cross-platform ncurses Spotify client written in Rust, using `librespot`.\n- ...and of course other libraries and projects.\n","Psst 是一个使用 Rust 语言编写的快速且跨平台的 Spotify 客户端，具有原生图形用户界面。该项目不依赖 Electron，旨在提供更高效的性能和更好的用户体验。它支持 Windows、Linux 和 macOS 系统，并通过 Druid 库实现跨平台的 GUI 渲染。尽管目前仍处于早期开发阶段，在功能完整性和稳定性方面还有待提升，但 Psst 已经能够满足基本的音乐播放需求。对于希望在多种操作系统上获得流畅 Spotify 体验的用户来说，尤其是那些偏好非 Electron 应用程序或对系统资源占用有较高要求的人群，Psst 是一个不错的选择。需要注意的是，使用 Psst 需要拥有 Spotify Premium 账号。",2,"2026-06-11 03:03:45","top_language"]