UBports Robot Logo UBports Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Futify Remix: a native Spotify client for Ubuntu Touch

    Scheduled Pinned Locked Moved App Development
    8 Posts 3 Posters 303 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • brenno.almeidaB Offline
      brenno.almeida
      last edited by brenno.almeida

      Download here:

      https://open-store.io/app/futify.brennoflavio

      Somewhere last year, Spotify changed some of its API deprecating some fields and redirects, breaking Futify. Around 3 months ago I submited some patches to keep the app alive, but it is not merged / released yet.

      This fork applies those patches so people can continue using the app while upstream is not updated.

      Contributions are welcome to make it build with noble framework, currently this app uses a umantained qml-go binding, that only allow building for focal. Luckly the focal build works on noble without issues.

      Give it a try and leave feedback!

      P 1 Reply Last reply Reply Quote 1
      • P Offline
        projectmoon @brenno.almeida
        last edited by

        @brenno.almeida tried logging in. The app crashes after completing oauth flow and crashes on open every time afterwards. Oddly, there's no exception in the logs?

        brenno.almeidaB 1 Reply Last reply Reply Quote 1
        • brenno.almeidaB Offline
          brenno.almeida @projectmoon
          last edited by

          @projectmoon something similar happened to me when I forgot to disable app suspension on UT tweak tool. Could that be your case? If so, can you clear cache, data, disable suspension and try again?

          P 1 Reply Last reply Reply Quote 0
          • P Offline
            projectmoon @brenno.almeida
            last edited by

            @brenno.almeida same result. Browser shows error empty response. And then connection refused on refresh (because app crashed).

            A 1 Reply Last reply Reply Quote 0
            • A Offline
              AmauryDBZ @projectmoon
              last edited by

              @brenno.almeida same here

              brenno.almeidaB 1 Reply Last reply Reply Quote 0
              • brenno.almeidaB Offline
                brenno.almeida @AmauryDBZ
                last edited by

                @AmauryDBZ any logs?

                A 1 Reply Last reply Reply Quote 0
                • A Offline
                  AmauryDBZ @brenno.almeida
                  last edited by AmauryDBZ

                  @brenno.almeida sure.
                  I've registered in web browser where I got an error. I cannot explain why I was redirected to a 127.0.0.1 page.
                  I don't know if it granted access but when I try to launch futify app it crashes instantly with theses logs.
                  (app unconfined of course)

                  [07/05/2026 09:58] Env $XDG_CACHE_HOME set use it = /home/phablet/.cache/futify.brennoflavio
                  [07/05/2026 09:58] Env $XDG_CONFIG_HOME no set use default = /home/phablet/.config/futify.brennoflavio/
                  [07/05/2026 09:58] library "eglSubDriverAndroid.so" not found
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: Creating a QMirClientScreen now
                  [07/05/2026 09:58] before create context
                  [07/05/2026 09:58] before set spotSession
                  [07/05/2026 09:58] before create window
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: error calling result "An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.857\" (uid=32011 pid=631010 comm=\"futify\" label=\"futify.brennoflavio_futify_1.6.3 (enforce)\") interface=\"com.lomiri.libertine.Service.Operations\" member=\"list\" error name=\"(unset)\" requested_reply=\"0\" destination=\"com.lomiri.libertine.Service\" (uid=32011 pid=4872 comm=\"/usr/bin/python3 /usr/bin/libertined\" label=\"unconfined\")"
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: error calling result "An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.857\" (uid=32011 pid=631010 comm=\"futify\" label=\"futify.brennoflavio_futify_1.6.3 (enforce)\") interface=\"com.lomiri.libertine.Service.OperationsMonitor\" member=\"running\" error name=\"(unset)\" requested_reply=\"0\" destination=\"com.lomiri.libertine.Service\" (uid=32011 pid=4872 comm=\"/usr/bin/python3 /usr/bin/libertined\" label=\"unconfined\")"
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: lastError - no arguments?
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: error calling result "An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.857\" (uid=32011 pid=631010 comm=\"futify\" label=\"futify.brennoflavio_futify_1.6.3 (enforce)\") interface=\"com.lomiri.libertine.Service.OperationsMonitor\" member=\"last_error\" error name=\"(unset)\" requested_reply=\"0\" destination=\"com.lomiri.libertine.Service\" (uid=32011 pid=4872 comm=\"/usr/bin/python3 /usr/bin/libertined\" label=\"unconfined\")"
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: lastError - no arguments?
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: error calling result "An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.857\" (uid=32011 pid=631010 comm=\"futify\" label=\"futify.brennoflavio_futify_1.6.3 (enforce)\") interface=\"com.lomiri.libertine.Service.OperationsMonitor\" member=\"result\" error name=\"(unset)\" requested_reply=\"0\" destination=\"com.lomiri.libertine.Service\" (uid=32011 pid=4872 comm=\"/usr/bin/python3 /usr/bin/libertined\" label=\"unconfined\")"
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: lastError - no arguments?
                  [07/05/2026 09:58] 2026/05/07 09:58:19 .:0: virtual QMediaService* AalServicePlugin::create(const QString&) "org.qt-project.qt.mediaplayer"
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: Using Hybris video sink
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual QMediaPlayer::State AalMediaPlayerControl::state() const
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual QMediaPlayer::MediaStatus AalMediaPlayerControl::mediaStatus() const
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: propsReply "An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.727\" (uid=32011 pid=631010 comm=\"futify\" label=\"futify.brennoflavio_futify_1.6.3 (enforce)\") interface=\"org.freedesktop.DBus.Properties\" member=\"GetAll\" error name=\"(unset)\" requested_reply=\"0\" destination=\"org.freedesktop.NetworkManager\" (uid=0 pid=2004 comm=\"/usr/sbin/NetworkManager --no-daemon\" label=\"unconfined\")"
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: nmReply "An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.727\" (uid=32011 pid=631010 comm=\"futify\" label=\"futify.brennoflavio_futify_1.6.3 (enforce)\") interface=\"org.freedesktop.NetworkManager\" member=\"GetDevices\" error name=\"(unset)\" requested_reply=\"0\" destination=\"org.freedesktop.NetworkManager\" (uid=0 pid=2004 comm=\"/usr/sbin/NetworkManager --no-daemon\" label=\"unconfined\")"
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: "Object path cannot be empty"
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual void AalMediaPlayerControl::stop()
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: void AalMediaPlaylistProvider::disconnect_signals()
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: void AalMediaPlaylistProvider::connect_signals()
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: Track list doesn't exist so can't clear it!
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual void AalMediaPlaylistControl::setPlaybackMode(QMediaPlaylist::PlaybackMode)
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: PlaybackMode: Sequential
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual void AalMediaPlaylistControl::setCurrentIndex(int)
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: position:  -1 , mediaCount:  0
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual void AalMediaPlayerControl::setMedia(const QMediaContent&, QIODevice*)
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: setMedia() media:  QUrl("")
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: setMedia() headers empty:  true
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: Same media as current
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: virtual void AalMediaPlayerControl::play()
                  [07/05/2026 09:58] 2026/05/07 09:58:20 .:0: void AalMediaPlayerService::play()
                  [07/05/2026 09:58] 2026/05/07 09:58:20 Player.qml:30: player state changed 1
                  [07/05/2026 09:58] 2026/05/07 09:58:20 PlayerView.qml:18: file:////opt/click.ubuntu.com/futify.brennoflavio/1.6.3/qml/components/PlayerView.qml:18:5: QML QQuickItem: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
                  [07/05/2026 09:58] 2026/05/07 09:58:20 Settings.qml:15: OnComplete 945
                  [07/05/2026 09:58] 2026/05/07 09:58:20 Main.qml.:365: OnComplete
                  [07/05/2026 09:58] Playlists don't exsit UserPlaylists
                  [07/05/2026 09:58] 2026/05/07 09:58:21 couldn't get UserTracks: spotify: couldn't decode error: (119) [The user is not registered for this application. Please check your settings on https://developer.spotify.com/dashboard.]
                  

                  Then I got to this web page developer.spotify.com and I was well connected

                  P 1 Reply Last reply Reply Quote 0
                  • P Offline
                    projectmoon @AmauryDBZ
                    last edited by

                    @AmauryDBZ the redirect to 127.0.0.1 is to redirect back to the application for oauth finalization. The app runs its own server to capture the callback from Spotify. But it shouldn't crash :).

                    1 Reply Last reply Reply Quote 0

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    • First post
                      Last post