You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unofficial builds of Psst are also available through the [AUR](https://aur.archlinux.org/packages/psst-git) and [Homebrew](https://formulae.brew.sh/cask/psst).
28
29
29
-
30
30
## Building
31
31
32
32
On all platforms, the **latest [Rust](https://rustup.rs/) stable** (at least 1.65.0) is required.
- Show time origin of cached data, allow to refresh
136
+
- Cache as many WebAPI responses as possible
137
+
- Visualize cache utilization
138
+
- Total cache usage in the config dialog
139
+
- Show time origin of cached data, allow to refresh
134
140
- [ ] Trivia on the artist page, Wikipedia links
135
141
- [ ] Downloading encrypted tracks
136
142
- [ ] Reporting played tracks to Spotify servers
137
143
- [ ] OS-specific application bundles
138
144
- UI
139
-
- [ ] Rethink the current design, consider a two-pane layout
140
-
- Left pane for browsing
141
-
- Right pane for current playback
142
-
- [ ] Detect light/dark OS theme
143
-
- [ ] Robust error states, ideally with a retry button
144
-
- [ ] Correct playback highlight
145
-
- Highlight now-playing track only in the correct album/playlist
146
-
- Keep highlighted track in viewport
147
-
- [ ] Paging or virtualized lists for albums and tracks
148
-
- [ ] Grid for albums and artists
149
-
- [ ] Robust active/inactive menu visualization
150
-
- [ ] Save playback state
151
-
145
+
- [ ] Rethink the current design, consider a two-pane layout
146
+
- Left pane for browsing
147
+
- Right pane for current playback
148
+
- [ ] Detect light/dark OS theme
149
+
- [ ] Robust error states, ideally with a retry button
150
+
- [ ] Correct playback highlight
151
+
- Highlight now-playing track only in the correct album/playlist
152
+
- Keep highlighted track in viewport
153
+
- [ ] Paging or virtualized lists for albums and tracks
154
+
- [ ] Grid for albums and artists
155
+
- [ ] Robust active/inactive menu visualization
156
+
- [ ] Save playback state
152
157
153
158
## Development
154
159
@@ -157,25 +162,23 @@ Here's the basic project structure:
157
162
158
163
- `/psst-core` - Core library, takes care of Spotify TCP session, audio file retrieval, decoding, audio output, playback queue, etc.
159
164
- `/psst-gui` - GUI application built with [Druid](https://github.com/linebender/druid)
160
-
- `/psst-cli` - Example CLI that plays a track. Credentials must be configured in the code.
165
+
- `/psst-cli` - Example CLI that plays a track. Credentials must be configured in the code.
161
166
- `/psst-protocol` - Internal Protobuf definitions used for Spotify communication.
162
167
163
-
164
168
## Privacy Policy
165
169
166
170
Psst connects only to the official Spotify servers and does not call home.
167
171
Caches of various things are stored locally and can be deleted anytime.
168
172
User credentials are not stored at all; instead, a re-usable authentication token from Spotify is used.
169
173
170
-
171
174
## Thanks
172
175
173
176
This project would not exist without the following:
174
177
175
-
- Big thank you to [`librespot`](https://github.com/librespot-org/librespot), 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:
176
-
- Spotify Connect (remote control) is not supported yet.
177
-
- Psst is completely synchronous, without `tokio` or other `async` runtime, although it will probably change in the future.
178
-
- Psst is using HTTPS-based CDN audio file retrieval, similar to the official Web client or [`librespot-java`](https://github.com/librespot-org/librespot-java), instead of the channel-based approach in `librespot`.
178
+
- Big thank you to [`librespot`](https://github.com/librespot-org/librespot), 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:
179
+
- Spotify Connect (remote control) is not supported yet.
180
+
- Psst is completely synchronous, without `tokio` or other `async` runtime, although it will probably change in the future.
181
+
- Psst is using HTTPS-based CDN audio file retrieval, similar to the official Web client or [`librespot-java`](https://github.com/librespot-org/librespot-java), instead of the channel-based approach in `librespot`.
179
182
- [`druid`](https://github.com/linebender/druid) native GUI library for Rust.
180
183
- [`ncspot`](https://github.com/hrkfdn/ncspot) cross-platform ncurses Spotify client written in Rust, using `librespot`.
0 commit comments