Git Product home page Git Product logo

spot's Introduction

Spot spot-snapshots

Gtk/Rust native Spotify client for the GNOME desktop. Only works with premium accounts!

Based on librespot.

Join the discussion on Matrix.

Spot screenshot

Installing

Download on Flathub

Usage notes

Credentials

It is recommended to install a libsecret compliant keyring application, such as GNOME Keyring (aka seahorse). This will allow saving your password securely between launches.

In GNOME, things should work out of the box. It might be a bit trickier to get it working in other DEs: see this ArchWiki entry for detailed explanations on how to automatically start the daemon with your session.

Bear special attention to the fact that to enable automatic login, you might have to use the same password for your user account and for the keyring, and that the keyring might need to be set as default.

See this comment for more details!

Login in with Facebook

...is not supported. However, you can update your account in order to be able to log in with a username and password as explained in this issue.

Settings

Spot can also be configured via gsettings if you want to change the audio backend, the song bitrate, etc.

Seek bar warping

It is possible to click on the seek bar to navigate to that position in a song. If you are having issues with this not working you may have gtk-primary-button-warps-slider set to false. In order to fix this issue set the value to true in your gtk configuration.

Scrobbling

Scrobbling is not supported directly by Spot. However, you can use a tool such a rescrobbled (see #85).

Lyrics

Similarly, Spot does not display lyrics for songs, but you can use osdlyrics (see #226).

Gtk theme

Spot uses the dark theme variant by default; this can be changed in the settings.

If you are using the flatpak version, don't forget to install your theme with flatpak as well. See this comment for details.

Similarly, snap also requires that you install the corresponding snap for your theme. See this comment for details.

Features

Only works with premium accounts!

  • playback control (play/pause, prev/next, seeking, shuffle, repeat (none, all, song))
  • selection mode: easily browse and select mutliple tracks to queue them
  • browse your saved albums and playlists
  • search albums and artists
  • view an artist's releases
  • view users' playlists
  • view album info
  • credentials management with Secret Service
  • MPRIS integration
  • playlist management (creation and edition)
  • liked tracks

Planned

  • GNOME search provider?
  • improved search? (track results)
  • recommendations?

Contributing

Contributions are welcome! If you wish, add yourself to the AUTHORS files when submitting your contribution.

For any large feature/change, please open an issue first to discuss implementation and design decisions.

Translating

Translations are managed using gettext and are available in the po/ subdirectory.

Please use POEditor to submit translations.

If you feel like it, you are welcome to open a PR to be added to the TRANSLATORS file!

Building

With GNOME Builder and flatpak

Pre-requisite: install the org.freedesktop.Sdk.Extension.rust-stable SDK extension with flatpak. Builder might do this for you automatically, but it will install an older version; make sure the version installed matches the version of the Freedesktop SDK GNOME uses.

Open the project in GNOME Builder and make the dev.alextren.Spot.development.json configuration active. Then build :)

Manually

Requires Rust (stable), GTK4, and a couple other things. Also requires libadwaita and blueprint-compiler: they are not packaged on all distros at the moment, you might have to build them yourself!

With meson:

meson target -Dbuildtype=debug -Doffline=false --prefix="$HOME/.local"
ninja install -C target
# to run test/linter/etc
meson test -C target  --verbose

This will install a .desktop file among other things, and the spot executable will be put in .local/bin (you might want to add it to your path).

To build an optimized release build, use -Dbuildtype=release instead.

Regenerating potfiles

When adding new msgids, don't forget to regenerate/update the potfiles.

ninja spot-pot -C target
ninja spot-update-po -C target

Pulling updated strings from POEditor

We are now using POEditor and the wonderful poeditor-sync tool.

poeditor pull

Regenerating sources for flatpak

Using flatpak-cargo-generator.py:

ninja cargo-sources.json -C target

Debugging

Set the RUST_LOG env variable to the appropriate level.

Debug builds (flatpak) are available from the master branch on Github (see the spot-snaphots action).

Spot caches images and HTTP responses in ~/.cache/spot.

Spot uses isahc, which uses libcurl, therefore you can set the https_proxy env variable to help with debugging. In debug mode, Spot skips SSL certificate verification.

spot's People

Contributors

abegert avatar alexmitter avatar alissonlauffer avatar alistair23 avatar alosarjos avatar bilelmoussaoui avatar c2yp71c avatar cho2 avatar colonial-dev avatar ctsk avatar daphipz avatar dependabot[bot] avatar diegovsky avatar douile avatar hegdenischay avatar hugogoncalves77 avatar jannuary avatar juxuanu avatar knokelmaat avatar nicolasfella avatar nn1ks avatar ondras12345 avatar sei0o avatar supremesnickers avatar toorero avatar totaldarkness-nrf avatar vistaus avatar xgzepto avatar xou816 avatar zaedus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spot's Issues

The app crashes when searching for an album in the Russian language

Steps to reproduce:

  1. Install from Flathub application.
  2. Login in your Spotify Premium Account.
  3. Try to search any russian album.

Backtrace (RUST_BACKTRACE=full):

home
search
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: http::Error(InvalidUri(InvalidUriChar))', src/app/backend/api.rs:251:18
stack backtrace:
   0:     0x55c36836e820 - <unknown>
   1:     0x55c36839430c - <unknown>
   2:     0x55c3683675a2 - <unknown>
   3:     0x55c368370ee5 - <unknown>
   4:     0x55c368370b88 - <unknown>
   5:     0x55c368371681 - <unknown>
   6:     0x55c3683711c7 - <unknown>
   7:     0x55c36836ecdc - <unknown>
   8:     0x55c368371129 - <unknown>
   9:     0x55c368391ac1 - <unknown>
  10:     0x55c3683918e3 - <unknown>
  11:     0x55c367ebf07d - <unknown>
  12:     0x55c367ebcaba - <unknown>
  13:     0x55c367eb964a - <unknown>
  14:     0x55c367eae92e - <unknown>
  15:     0x55c367e4fb74 - <unknown>
  16:     0x55c368347d72 - <unknown>
  17:     0x55c36834927a - <unknown>
  18:     0x7fcbc0d4c28b - g_main_context_dispatch
  19:     0x7fcbc0d4c538 - <unknown>
  20:     0x7fcbc0d4c603 - g_main_context_iteration
  21:     0x7fcbc0f7146d - g_application_run
  22:     0x55c367e9a98e - <unknown>
  23:     0x55c367e521c8 - <unknown>
  24:     0x7fcbc0d4d3b5 - g_main_context_invoke_full
  25:     0x55c367ec49a7 - <unknown>
  26:     0x55c367e750d3 - <unknown>
  27:     0x55c367e75519 - <unknown>
  28:     0x55c368371aa7 - <unknown>
  29:     0x55c367ec4ba2 - main
  30:     0x7fcbc09bd062 - __libc_start_main
  31:     0x55c367e4913e - <unknown>
  32:                0x0 - <unknown>

System info:
OS: Fedora 33
App version: 0.1.1

Login doesn't allow user to tab between inputs

Describe the bug
Login doesn't allow tabbing between fields

To Reproduce
Steps to reproduce the behavior:

  1. Go to login screen
  2. Select username
  3. Active element doesn't change

Expected behavior
Tab switches user selection between username, password and login fields

General information:

  • Distribution: Arch
  • Installation method [e. g. built from source, installed from Flathub...]: Flathub
  • Version [e.g. 0.1.0]: 0.1.7

Fedora postinstall script issue

I'm trying to build this from Fedora 33 and I'm running into issues with build-aux/meson/postinstall.py script

Updating icon cache...
gtk-update-icon-cache: Failed to open file /usr/local/share/icons/hicolor/.icon-theme.cache : No such file or directory
Updating desktop database...
Compiling GSettings schemas...
Error opening directory “/usr/local/share/glib-2.0/schemas”: No such file or directory

It seems like the path should be just /usr/share/ without local prefix. At least that's where I'm seeing icons and glib-2.0 contents on my system.

Support for offline playlist

Describe the feature
Is it possible to use offline playlist

General information:

  • Distribution: Ubuntu
  • Installation method [e. g. built from source, installed from Flathub...]: Flathub
  • Version [e.g. 0.1.0]: 0.1.7
  • Device used [e. g. desktop, phone...]: Desktop

Play-button looking wrong with Matcha GTK-Theme

I have installed Matcha-sea as my GTK-theme (I use Manjaro Gnome Edition).
With this theme, the play button looks a bit squashed. This is not the case when I use Adwaita as my desktop theme.

Bildschirmfoto vom 2021-02-18 14-52-27

Bildschirmfoto vom 2021-02-18 14-53-14

Amazing project!

Amazing!
I waited for this to happen in over 10 years now!

This is like Spotify was 2009 before it become bloated and now you brought it back! I really hate the > 2015 html5 bloated CEF client!

Thanks for building this 'time machine' I've tried to do for a decade!

No playlists from Spotify search

I have a few lists created in Spotify and it doesn't see them all. The message that appears is: An error occured. Check logs for details!
Captură de ecran de la 2021-02-17 19-01-35

About window doesn't close with close button

Describe the bug
Close button doesn't close the about tab

To Reproduce
Steps to reproduce the behavior:

  1. Go to about tab (burger menu -> about)
  2. Press the close button
  3. See error

Expected behavior
The about window closes

General information:

  • Distribution: Arch
  • Installation method [e. g. built from source, installed from Flathub...]: Flathub
  • Version [e.g. 0.1.0]: 0.1.7
  • Device used [e. g. desktop, phone...]: qtile

Stack trace:
If applicable, run the application from a terminal and paste relevant log output.
No errors outputted

Crashes on login

Hi there! I installed Spot via Flatpak, but every time I try to login it crashes and closes.

Here's my system info:

Linux ubuntu-spectre 5.8.0-38-generic #43-Ubuntu SMP Tue Jan 12 12:42:13 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Please let me know if you need any other details. Regards.

App volume control

It would be very convenient to have a slider integrated in the app to control the app volume independently from the general volume (I often lower it to prevent missing out other desktop/apps sounds, but I have to go through the audio settings - using Linux Mint 20).

P.S. Love the project! Merci

Cargo.toml libhandy git

Currently the Cargo.toml tries to fetch libhandy from the internet. The portage package manager (gentoo) doesn't allow this, I presume because of security. It would be really appreciated if this line:
libhandy = { git = "https://gitlab.gnome.org/World/Rust/libhandy-rs" }
Could be changed into, for example:
libhandy = "^1.0.3"

Thanks for reading!

Significant lag when switching to or maximizing window

Describe the bug
Window is laggy when switching to or maximizing window. It renders immediately but no buttons/updating occurs like changing shades when mousing over different tracks etc. Was 2-5 seconds at first but restarting and entering stacktrace made it about 500-1000 ms? but occasionally it is even ~4 seconds.
Testing it again with stacktrace, it is consistently 5+ seconds to load into the window at full screen. It does seem to change tracks if I change tracks, but only after the delay. It's like the window doesn't realize it was activated, since no mouseover events occur like the tracks/buttons changing color

To Reproduce
Steps to reproduce the behavior:

  1. Have XFCE (may be necessary, not sure)
  2. Run program
  3. alt tab out and back in or make full screen
  4. be sad it is delayed

Expected behavior
A clear and concise description of what you expected to happen.
Not so slow to render the window, unless it's a hardware issue
Screenshots
Not sure screenshots would help. Can attach video if necessary

General information:

  • Distribution: Xubuntu 20.04 (XFCE)
  • Installation method [e. g. built from source, installed from Flathub...]: Flathub
  • Version [e.g. 0.1.0]: 0.1.7
  • Device used [e. g. desktop, phone...]: low spec (could be pertinent? cpu usage is very low) laptopp

Stack trace:
If applicable, run the application from a terminal and paste relevant log output.

flatpak run --env=RUST_BACKTRACE=full dev.alextren.Spot

Additional context
Add any other context about the problem here.
I suppose my low end PC could have something to do with it (hence xubuntu), but CPU usage is very low, and other apps render fine. Willing to do any debugging necessary as I really miss listening to music 😢 and the official client is WAY too fat.

[RFE] Spotify Connect support

I am using spotify connect a lot to play music on different devices around the home (running mostly raspotify) and controlling them from other devices (phones, laptop) so it came as a disappointment that this client does not support the connect protocol, does not show up in the devices selection and can not allow me to control music playing on other device. I think this support is already in librespot so it should not be that complicated to add (but I did not investigate in detail).

Auto Replay

I am used to use shuffle in combination with auto replay, so I would love to see a auto replay option per song and per playlist

Increase size of search field

The search field is very short. Many artist names or album titles are longer than the fields.

Example:

If you are searching for "Lightspeed Champion" it is already too long. The text field should be wider.

Search box compared to other apps:
1: spot
2: lollypop
3: nautilus

Bildschirmfoto von 2021-01-25 16-57-49

[Feature] Add playlist sorting

Add sorting functionality for playlists like the official app has.
Ideally would be able to sort by:

  • title
  • recently added (time added to playlist)
  • artist
  • album

Both forward and reverse

Clicking on the notification area box does not open or focus the app

Describe the bug
When running Spot (or any media player in GNOME), a "notification" box shows up in the notifications area that allows easy access and control of music from anywhere. Screenshot:
image

The controls in this box work fine: play, pause, next, and previous. However, if I click anywhere else in the box (not on the controls) as I would a "normal" notification, I expect Spot to open, raise, or take focus. This does not happen.

To Reproduce
Steps to reproduce the behavior:

  1. Open Spot
  2. Start playing a song
  3. Focus another window and/or minimize Spot
  4. Open the GNOME activities area
  5. Click on the notification box for Spot (but not the playback controls)

Expected behavior
Spot should come forward and/or be focused.

General information:

  • Distribution: Pop!_OS 20.10
  • Installation method [e. g. built from source, installed from Flathub...]: Flatpak through Flathub
  • Version [e.g. 0.1.0]: 0.1.7
  • Device used [e. g. desktop, phone...]: laptop

Add playlist support

Having playlists displayed in the library and being able to search for playlists would be amazing.

Running on kde desktops.

Hi.
I know this may be out of scope, but how difficult would be running this on kde desktop?
If I install the flatpak it has tons of gnome dependencies, which I understand and I would be willing to install, just unsure if it will break my system.

(Running KDE Fedora)
Thanks

Issues with search

Video

spot-bug.mp4

Sidebar indicator wrong/confusing

When searching the search view is displayed out of nowhere. But the indicator on the left in the sidebar still indicates that you are in "Currently playing" or Library.

UI orientation issues

  1. focus the search (top middle)
  2. the search view slides in from the right, but does not cover the sidebar
  3. arrow to go back points left and resides above the sidebar, not the area covered by the search view

If the back button belongs to the search view it should on the left of the area, not above another unrelated area.

Possible fixes:

  • cover the sidebar with the search view
  • make the search an option in the sidebar

Search only displays album & and filter don't work

Moved to #35.
See video.

The filters should be next to the search input, if the popover is supposed to be a search filter. I can't tell.

Animation disruptive

The slide animation is pretty fast and disruptive. Doesn't feel good.

Maybe slide from the top aka from the search bar.

No keyboard navigation

Issue moved to #32.

Closing/opening search is not possible with the keyboard as far as i know.

Would have expected that Esc and alt+←(go back) work for closing and ctrl+f for opening.

Text field is too short

Moved to #34.

If you are searching for "Lightspeed Champion" it is already too long. The text field should be wider.

Search box compared to other apps:
1: spot
2: lollypop
3: nautilus

Bildschirmfoto von 2021-01-25 16-57-49

Build failure?

Describe the bug
A clear and concise description of what the bug is.
Following the manual build instructions in the README, it seems like everything ran fine. However, I get this message at the end:

[1/2] Generating spot_gresource with a custom command

It seems like there's suppose to be a second step that never happens? When I go directly to spot/target/src and issue ./spot I get the following error message:

thread 'main' panicked at 'Could not load resources: Error { domain: g-file-error-quark, code: 4, message: "Failed to open file “/home/barbarossa/.local/share/spot/spot.gresource”: open() failed: No such file or directory" }', src/main.rs:55:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To Reproduce
Steps to reproduce the behavior:
Install dependencies
run meson and then ninja commands
try to run the spot executable

Expected behavior
Running the spot executable should have everything running fine

Screenshots
If applicable, add screenshots to help explain your problem.

General information:

  • Distribution: Arch Linux
  • Installation method [e. g. built from source, installed from Flathub...]: Source
  • Version [e.g. 0.1.0]: 0.1.7 (git)
  • Device used [e. g. desktop, phone...]: desktop

Stack trace:
If applicable, run the application from a terminal and paste relevant log output.

thread 'main' panicked at 'Could not load resources: Error { domain: g-file-error-quark, code: 4, message: "Failed to open file “/home/barbarossa/.local/share/spot/spot.gresource”: open() failed: No such file or directory" }', src/main.rs:55:10
stack backtrace:
   0:     0x558c5e7096b0 - std::backtrace_rs::backtrace::libunwind::trace::hc8b42b9686bc0d07
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x558c5e7096b0 - std::backtrace_rs::backtrace::trace_unsynchronized::h839b1b3e096c7094
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x558c5e7096b0 - std::sys_common::backtrace::_print_fmt::h9f36d7c0c192ca75
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x558c5e7096b0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::haad7d3f8925bad2e
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x558c5e72d2bc - core::fmt::write::h7239b2f9a99358fb
                               at /build/rust/src/rustc-1.50.0-src/library/core/src/fmt/mod.rs:1078:17
   5:     0x558c5e702055 - std::io::Write::write_fmt::hf8c959f904cf1571
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/io/mod.rs:1517:15
   6:     0x558c5e70b955 - std::sys_common::backtrace::_print::h2c2d9abbb61e574c
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x558c5e70b955 - std::sys_common::backtrace::print::h1362a4690ddc5737
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x558c5e70b955 - std::panicking::default_hook::{{closure}}::h250793a7822001b5
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:208:50
   9:     0x558c5e70b4aa - std::panicking::default_hook::h888581adc5c27c77
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:225:9
  10:     0x558c5e70c0f1 - std::panicking::rust_panic_with_hook::h77f2fa3bf09efb3b
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:591:17
  11:     0x558c5e70bc37 - std::panicking::begin_panic_handler::{{closure}}::h3cafa059e2851c7f
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:497:13
  12:     0x558c5e709b6c - std::sys_common::backtrace::__rust_end_short_backtrace::h46c04e54576d0893
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/sys_common/backtrace.rs:141:18
  13:     0x558c5e70bb99 - rust_begin_unwind
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:493:5
  14:     0x558c5e72aa11 - core::panicking::panic_fmt::hb1f208d1d41afb98
                               at /build/rust/src/rustc-1.50.0-src/library/core/src/panicking.rs:92:14
  15:     0x558c5e72a833 - core::option::expect_none_failed::h5d536c1ceba4b362
                               at /build/rust/src/rustc-1.50.0-src/library/core/src/option.rs:1268:5
  16:     0x558c5d2e1ea0 - core::result::Result<T,E>::expect::h99b4e43ee2788aaf
                               at /build/rust/src/rustc-1.50.0-src/library/core/src/result.rs:933:23
  17:     0x558c5d23a723 - spot::setup_gtk::h6f1c5b8f6b5c75ad
                               at /home/barbarossa/spot/src/main.rs:54:15
  18:     0x558c5d23a30c - spot::main::h151af790995fc8bb
                               at /home/barbarossa/spot/src/main.rs:19:5
  19:     0x558c5d21cf6b - core::ops::function::FnOnce::call_once::hd74b7030723ffbc4
                               at /build/rust/src/rustc-1.50.0-src/library/core/src/ops/function.rs:227:5
  20:     0x558c5d382dde - std::sys_common::backtrace::__rust_begin_short_backtrace::h4067052d650c56ea
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/sys_common/backtrace.rs:125:18
  21:     0x558c5d33fe11 - std::rt::lang_start::{{closure}}::h736c908f18ab0bbb
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/rt.rs:66:18
  22:     0x558c5e70c517 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h5a27e92186d531b9
                               at /build/rust/src/rustc-1.50.0-src/library/core/src/ops/function.rs:259:13
  23:     0x558c5e70c517 - std::panicking::try::do_call::h8d3a36b2860fc4e2
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:379:40
  24:     0x558c5e70c517 - std::panicking::try::hefdcf6df93f20790
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panicking.rs:343:19
  25:     0x558c5e70c517 - std::panic::catch_unwind::h36ddc1c42bb74870
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/panic.rs:396:14
  26:     0x558c5e70c517 - std::rt::lang_start_internal::ha6cc4bb09c664b1a
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/rt.rs:51:25
  27:     0x558c5d33fde7 - std::rt::lang_start::h1a064a3b694e24e5
                               at /build/rust/src/rustc-1.50.0-src/library/std/src/rt.rs:65:5
  28:     0x558c5d23a97a - main
  29:     0x7f4be5b97b25 - __libc_start_main
  30:     0x558c5d1d30be - _start
  31:                0x0 - <unknown>

Additional context
Can this only be used for Gnome? I'm trying to build/run it on Qtile

Should prompt the user to unlock the keychain when it is locked

Describe the bug
When using a different password for gnome-keychain, than the login password. After logging in to spot, an error is shown saying failed to save password.

To Reproduce
Steps to reproduce the behavior:

  1. Open Spot
  2. Login Dialog shows
  3. Enter login details
  4. Dialog disappears
  5. Error dialog window displays saying "Failed to save password"

Expected behavior
When starting the app while the keychain is locked, a popup is displayed, asking you to unlock the keychain. For an example, Geary email app does this

Screenshots
None

General information:

  • Distribution: PostmarketOS
  • Installation method [e. g. built from source, installed from Flathub...]: Flathub
  • Version [e.g. 0.1.0]: 0.1.8
  • Device used [e. g. desktop, phone...]:Pinephone

Stack trace:
None

Additional context
None

Build Issue: Error compiling zvariant

Describe the bug
Error compiling zvariant v2.5.0 during the build

To Reproduce
Perform step provided in the README

General information:

  • Distribution: Arch Linux
  • Installation method: Manual Build
  • Version: 0.1.7
  • Device used: Desktop

Stack trace:
Compiling zvariant v2.5.0
Running rustc --crate-name zvariant --edition=2018 /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -Cembed-bitcode=no -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="enumflags2"' --cfg 'feature="gvariant"' -C metadata=6f0698eebe4c860f -C extra-filename=-6f0698eebe4c860f --out-dir /home/jake/build/build_dir/target/debug/deps -L dependency=/home/jake/build/build_dir/target/debug/deps --extern byteorder=/home/jake/build/build_dir/target/debug/deps/libbyteorder-dcc601046b163967.rmeta --extern enumflags2=/home/jake/build/build_dir/target/debug/deps/libenumflags2-5398423020f18af4.rmeta --extern serde=/home/jake/build/build_dir/target/debug/deps/libserde-222356bde02ec4c1.rmeta --extern zvariant_derive=/home/jake/build/build_dir/target/debug/deps/libzvariant_derive-9e206d956df11ffd.so --cap-lints allow
error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
73 | serialize_basic!(serialize_bool(bool) write_u32(u32));
| ------------------------------------------------------ in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
75 | serialize_basic!(serialize_i8(i8) write_i16(i16));
| -------------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
76 | serialize_basic!(serialize_i16(i16) write_i16);
| ----------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
77 | serialize_basic!(serialize_i64(i64) write_i64);
| ----------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
100 | serialize_basic!(serialize_u16(u16) write_u16);
| ----------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
101 | serialize_basic!(serialize_u32(u32) write_u32);
| ----------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
102 | serialize_basic!(serialize_u64(u64) write_u64);
| ----------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
104 | serialize_basic!(serialize_f32(f32) write_f64(f64));
| ---------------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: unexpected token: 0.
--> /home/jake/.cargo/registry/src/github.com-1ecc6299db9ec823/zvariant-2.5.0/src/dbus/ser.rs:52:18
|
52 | self.0.$write_method::(v as $as).map_err(Error::Io)
| -----^^
| | |
| | unexpected token
| help: try parenthesizing the first index: (self.0).
...
105 | serialize_basic!(serialize_f64(f64) write_f64);
| ----------------------------------------------- in this macro invocation
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

Extend search and add filters

Currently, only searching for albums is supported. The search should be extended and search for albums, titles, artists and playlists at once.

When this functionality exists it would be beneficial if filters could be used to limit the search (result) to all searches, or a combination.

UI inspiration/prior art:

Extend search box with drop down button:
Bildschirmfoto von 2021-01-25 19-14-23

Add pop over with check boxes:
Bildschirmfoto von 2021-01-25 19-14-11
(i know these are radio boxes, didn't find the correct image in time.)

Shuffling long playlists causes UI to freeze

Describe the bug
When toggling shuffle on a long playlist (e.g. 50+ songs) the UI freezes.

To Reproduce
Steps to reproduce the behavior:

  1. Play long playlist
  2. Press shuffle button (maybe a few times)
  3. UI unresponsive while shuffling

Expected behavior
UI remains responsive during shuffle. And also maybe button is disabled while it is shuffling.

General information:

  • Distribution: N/A
  • Installation method [e. g. built from source, installed from Flathub...]: source
  • Version [e.g. 0.1.0]: 0.1.8
  • Device used [e. g. desktop, phone...]: Desktop

Additional context
If possible shuffling should be done on a separate thread as it is quite intensive/time consuming.

Crash immediately after authenticating

Describe the bug
After running on a fresh install without config files, I am prompted to login, after which point the program crashes, and will no longer open. I do receive an email that there was a login to my spotify account.

To Reproduce
Steps to reproduce the behavior:

  1. Install from flathub on a fresh system
  2. Run the program
  3. Login

Expected behavior
The program runs.

Screenshots
N/A

General information:

  • Distribution: Ubuntu 20.04
  • Installation method [e. g. built from source, installed from Flathub...]: Flathub
  • Version [e.g. 0.1.0]: Flatpak reports the version as 0.1.7 (flatpak commit fd8ac20da582cc1ee4858f971e8c8ecf2bf666457d3f704932bfa208459e8257)
  • Device used [e. g. desktop, phone...]: Desktop

Stack trace:
If applicable, run the application from a terminal and paste relevant log output.

Gtk-Message: 20:39:16.107: Failed to load module "canberra-gtk-module"
Gtk-Message: 20:39:16.108: Failed to load module "canberra-gtk-module"
home
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/app/backend/api_models.rs:329:50
stack backtrace:
   0:     0x55d6a3b48230 - <unknown>
   1:     0x55d6a3b6bcdc - <unknown>
   2:     0x55d6a3b40e12 - <unknown>
   3:     0x55d6a3b4a4d5 - <unknown>
   4:     0x55d6a3b4a02a - <unknown>
   5:     0x55d6a3b4ac71 - <unknown>
   6:     0x55d6a3b4a787 - <unknown>
   7:     0x55d6a3b486ec - <unknown>
   8:     0x55d6a3b4a719 - <unknown>
   9:     0x55d6a3b694f1 - <unknown>
  10:     0x55d6a3b6943d - <unknown>
  11:     0x55d6a335943e - <unknown>
  12:     0x55d6a33aa8f7 - <unknown>
  13:     0x55d6a3389b73 - <unknown>
  14:     0x55d6a340c371 - <unknown>
  15:     0x55d6a340387e - <unknown>
  16:     0x55d6a33f490c - <unknown>
  17:     0x55d6a33e5bae - <unknown>
  18:     0x55d6a3346d64 - <unknown>
  19:     0x55d6a3b1b785 - <unknown>
  20:     0x55d6a3b1d09a - <unknown>
  21:     0x7f790103b53b - g_main_context_dispatch
  22:     0x7f790103b7e8 - <unknown>
  23:     0x7f790103b8b3 - g_main_context_iteration
  24:     0x7f790126158d - g_application_run
  25:     0x55d6a33b585e - <unknown>
  26:     0x55d6a3369408 - <unknown>
  27:     0x7f790103c665 - g_main_context_invoke_full
  28:     0x55d6a3438589 - <unknown>
  29:     0x55d6a3362873 - <unknown>
  30:     0x55d6a332b919 - <unknown>
  31:     0x55d6a3b4b097 - <unknown>
  32:     0x55d6a34389c2 - main
  33:     0x7f7900ca2062 - __libc_start_main
  34:     0x55d6a32fb13e - <unknown>
  35:                0x0 - <unknown>

Additional context

I can't seem to find all of the config files, so I can't delete them to get back to a login screen and continue troubleshooting, other than looking at terminal output. I logged in using an email and password. I had reinstalled recently for unrelated reasons, and this crash happens on both installs.

Crash on startup due to no playlist image

Hey there,

I installed Spot via Flathub on Arch Linux.
I am running sway as a compositor with some gnome-services started manually.
Everything was working fine until after login, where the program crashed.

Launching now gives me the following stacktrace:
flatpak run --env=RUST_BACKTRACE=full dev.alextren.Spot

home
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/app/backend/api_models.rs:329:50
stack backtrace:
   0:     0x5569fae73230 - <unknown>
   1:     0x5569fae96cdc - <unknown>
   2:     0x5569fae6be12 - <unknown>
   3:     0x5569fae754d5 - <unknown>
   4:     0x5569fae7502a - <unknown>
   5:     0x5569fae75c71 - <unknown>
   6:     0x5569fae75787 - <unknown>
   7:     0x5569fae736ec - <unknown>
   8:     0x5569fae75719 - <unknown>
   9:     0x5569fae944f1 - <unknown>
  10:     0x5569fae9443d - <unknown>
  11:     0x5569fa68443e - <unknown>
  12:     0x5569fa6d58f7 - <unknown>
  13:     0x5569fa6b4b73 - <unknown>
  14:     0x5569fa737371 - <unknown>
  15:     0x5569fa72e87e - <unknown>
  16:     0x5569fa71f90c - <unknown>
  17:     0x5569fa710bae - <unknown>
  18:     0x5569fa671d64 - <unknown>
  19:     0x5569fae46785 - <unknown>
  20:     0x5569fae4809a - <unknown>
  21:     0x7f46befac40b - g_main_context_dispatch
  22:     0x7f46befac6b8 - <unknown>
  23:     0x7f46befac783 - g_main_context_iteration
  24:     0x7f46bf1d246d - g_application_run
  25:     0x5569fa6e085e - <unknown>
  26:     0x5569fa694408 - <unknown>
  27:     0x7f46befad535 - g_main_context_invoke_full
  28:     0x5569fa763589 - <unknown>
  29:     0x5569fa68d873 - <unknown>
  30:     0x5569fa656919 - <unknown>
  31:     0x5569fae76097 - <unknown>
  32:     0x5569fa7639c2 - main
  33:     0x7f46bec13062 - __libc_start_main
  34:     0x5569fa62613e - <unknown>
  35:                0x0 - <unknown>

Which appears to be an issue related to fetching the image of a playlist?

Not sure how to deal with this.

Add about dialogue

Most applications have an about dialogue which contains:

  • logo
  • application name
  • version number important for bug reports
  • contributors
  • license

I think it would make sense to add this. Especially the version number and contributors are the most important pieces of information. It gives contributors visibility and makes it easier for users to provide better bug reports.

Add a separate "currently playing" view on devices with small widths

Overview

As discussed in #50 (comment), it might be a good idea to implement a seperate view for better mobile support. This view would show details of the currently playing song, thus enabling scrubbing, skipping songs and so on. Adding mobile support would probably make this the premier Spotify app/music player on mobile Linux devices, such as the PinePhone or Librem 5.

Current State

As of 2020-02-17, the UI is usable on mobile, but lacks proper song controls:

Proposed Changes

Lollypop does it in a similar fashion, hiding the current song view on desktop but showing it on mobile:

Screenshot from 2021-02-17 20-49-32

Following the approach taken by the two former implementations would also mean that new users feel right at home, as the UX would be quite close to the other Spotify clients.

Window to big for PinePhone

As you can see on the Picture the window is to large if you use the PinePhone in vertical rotation (or normal use). In horizontal rotation it works fine. The PinePhone uses as screen resolution 720 x 1440 px with double scale PhoshUI.

picture

Add keyboard navigation for search

There is currently no keyboard navigation for the search field and search view.

There are some keyboard combinations that are well established and are expected by many users.

Going back & forward

alt + ←

This is not only valid in the context of search, but also every other area of the app that has back buttons. (Forward i haven't seen yet).

Focus search field

ctrl+f is the best established combo, especially on GNOME.

closing search view / unfocus search field

esc or pressing ctrl+f again.

moving to search results

It would also be nice if the next logical item when pressing tab, is the first item in the results list, i haven't checked this, but i think it makes sense. :-)

Add longer seekbar when layout allows

When the window is large the seekbar doesn't expand to fill, which for super long tracks makes seeking difficult.

image

It would be nice to have the seekbar expand to fill the available horizontal space for this.

The playlist is short

Only 100 tracks are displayed in the playlist and can be listened to, the rest are unavailable

Add support for phone screen sizes

I tried this on my Pinephone, and it works pretty well in landscape mode. I'm not sure if this is a big priority, but it would be really nice to use it in vertical mode like the normal Spotify app as well. Currently, the right half of the app is cut off. If the left sidebar was made collapsible it could work.

Donation Link! :D

I would love to pay you for your software once I am able to switch away from the official Spotify app

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.