Giter VIP home page Giter VIP logo

ubuntu-flutter-community / musicpod Goto Github PK

View Code? Open in Web Editor NEW
314.0 8.0 38.0 47.08 MB

Music, radio, television and podcast player for Ubuntu, Windows, MacOs and Android

License: GNU General Public License v3.0

Dart 92.61% CMake 2.52% C++ 3.86% C 0.20% Kotlin 0.02% Swift 0.45% Ruby 0.19% Shell 0.15%
android flutter internet-radio macos music music-player podcasts radio radio-station tv

musicpod's Introduction

Musicpod

Music, Radio, Television and Podcast player for Linux Desktop, MacOS, Windows and Android made with Flutter.

Install for Linux Desktop:

Get it from the Snap Store

Install For MacOS & Windows:

Release Page

Android release is WIP!

Dark Light

Credits

Thanks to all the MPV contributors!

Thank you @amugofjava for creating the very easy to use and reliable podcast_search!

Thanks @alexmercerind for the super performant Mediakit library and mpris_service dart implementation!

Thank you @KRTirtho for the very easy to use smtc_windows package!

Thank you @tomassasovsky for the dart implementation of radiobrowser-api!

Thank you @ClementBeal for the super fast, pure dart Audio Metadata Reader!

Thank you @escamoteur for creating get_it and watch_it, which made my application faster and the source code cleaner!

MusicPod Level 1

  • play local audio files
  • filter local files
  • set root directory
  • create and manage playlists
  • play internet radio streams
  • browse for radio stations
  • play podcasts
  • search for podcasts
  • load podcast charts
  • filter podcasts by country
  • filter podcasts by genre
  • save playlists
  • save liked songs
  • save settings on disk
  • notify when a new episode of your subscribed podcasts is available

MusicPod Level 2

  • Video Podcasts (#71)
  • Play TV Stations found on radiobrowser
  • Chromecast Support (#91)
  • streaming provider agnostic sharing links
  • option to download podcasts (#240)
  • reduced memory allocation
  • WebDav support (#248)
  • upnp/dlna support (#248)

Supported operating systems and package formats

  • Ubuntu Desktop
  • Windows Support
    • Windows Store
    • Exe
  • Android Support (Media Controls are WIP)
    • PlayStore
  • MacOs Support
    • Apple?Store?
    • DMG
  • iOS Support
    • AppStore

Contributing

Contributions are highly welcome. Especially translations. Please fork MusicPod to your GitHub namespace, clone it to your computer, create a branch named by yourself, commit your changes to your local branch, push them to your fork and then make a pull request from your fork to this repository. I recommend the vscode extension GitHub Pull Requests especially for people new to Git and GitHub.

Translations

For translations into your language change the corresponding app_xx.arb file where xx is the language code of your language in lower case. If the file does not exist yet please create it and copy the whole content of app_en.arb into it and change only the values to your translation but leave the keys untouched. The vscode extension arb editor by Google is highly recommended to avoid arb syntax errors. Also recommended is the Google Translate Extension.

Code contributions

If you find any error please feel free to report it as an issue and describe it as good as you can. If you want to contribute code, please create an issue first.

Testing

Test mocks are generated with Mockito. You need to run the build_runner command in order to re-generate mocks, in case you changed the signatures of service methods.

dart run build_runner build

Boring developer things

Under the flutter hood

MusicPod is basically a fancy front-end for MPV! Without it it would still look nice, but it wouldn't play any media :D!

The app, the player and each page have their own set of widgets, 1 view model and 1 service. There are additional view models for downloads or a service for all external path things but that's it.

Since all views need access to each other all the time, disposing the view models all the time makes no sense and is CPU intensive for no need so all services and view models are registered as singletons before the flutter tree is created.

Important services are also initialized once before the Flutter runApp call, the view models are initialized when the view is accessed but most of the internal calls are skipped when the views are accessed again after that.

flowchart LR

classDef view fill:#0e84207d
classDef viewmodel fill:#e9542080
classDef model fill:#77216f80

View["`
  **View**
  (Widgets)
`"]:::view--watch-->ViewModel["`
  **ViewModel**
  (ChangeNotifier)
`"]:::viewmodel--listen-->Model["`
  **(Domain) Model**
  (Service)
`"]:::model

ViewModel--notify-->View
Model--stream.add-->ViewModel

Dependency choices, dependency injection and state management

Regarding the packages to implement this architecture I've had quite a journey from provider to riverpod with get_it.

I found my personal favorite solution with get_it plus its watch_it extension because this fits the need of this application the most without being too invasive into the API of the flutter widget tree.

This way all layers are clearly separated and easy to follow, even if this brings a little bit of boilerplate code.

I am a big fan of the KISS principle (keep it simple, stupid), so when it comes to organizing software source code and choosing architectural patterns simplicity is a big goal for me.

Though performance is the biggest goal, especially for flutter apps on the desktop that compete against toolkits that are so slim and performant they could run on a toaster (exaggeration), so if simple things perform badly, I am willing to switch to more complicated approaches ;)

Persistence

For persisting both setting and application state I've chosen a home cooked solution inside the LibraryService and SettingsService that writes json files to disk. It is simple and fast and sufficient for the needs of this application. Eventually at some point it might make sense to switch to a real database though :).

musicpod's People

Contributors

12people avatar ahmuro avatar aleksrutins avatar bittin avatar defaultx-od avatar dmaliog avatar eboye avatar fanchou avatar feichtmeier avatar fsobolev avatar hrx03 avatar jpnurmi avatar jupi007 avatar kcpru avatar kenvandine avatar larsb24 avatar madsrh avatar mikropsoft avatar petrbalvin avatar philclifford avatar renovate[bot] avatar soumyadghosh avatar theshadowofhassen avatar tiagoflach avatar timo-schroeder avatar vistaus 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

musicpod's Issues

Feature Request: Search by Artist, Album or Title

Being able to search my collection by artist, or album or title would be very helpful.

First let me say I have 22,000 songs in my collection. When you first launch MusicPod your collection is in alphabetic order. Now if I want to play a ZZ Top song I have to scroll through 21,000 songs to view them. Being able to search my collection by artist, album or title would make this a lot less painful.

Best regards

Shuffle doesn't work with local tracks

When playing songs from local audio list, picked randomly. Pressing the next button, plays the next song in the order instead of shuffling the list and picking a random one with shuffle enabled.

HTML tags in podcast description shows as text

When viewing podcast details, if the description contains HTML tags these are shown as plain text. It would be good if the tags could either be stripped out or the HTML rendered. I can recommend the flutter_html package for rendering - it works really well.

Screenshot from 2023-03-13 19-19-47

This app is off to a great start and I'm really looking forward to seeing how it develops.

It doesn't import musics from child directories

Hi Dear Developers,
On Ubuntu 22.10 and 23.04, It imports musics perfectly if my music directory has no child directory inside it. Unfortunately, it doesn't import musics from a child directory. For example, if I have two directories inside my music directory, it only imports musics which are outside those two folders. Please fix this issue or let me know if there is something wrong with my snap sandbox permissions. Many thanks in advance.

Missing progress indication at initial start with huge collection

Very very low priority I know.
This could fall under the same title as "Slow initial start with huge collection". As eboye mentioned, the initial start takes a while with a huge local music collection. The spinner is good, but it just sits there. Is it possible to write the output? like "Indexing 324 out of 41.233". Or would be an idea to add some timed messages like:

"Hang on while we're indexing your local audio"
"Still working on it..."
"Wow! You've got a lot of music"
"There's some great songs in your music collection. Any second now."

πŸ€·β€β™‚οΈ You get my point πŸ˜„

Feature request: Ignore failed to import warning on startup

I have a few .wav files in my music folder that Musicpod does not support, but it warns me about these at every startup. Being lazy, I don't want to re-organise my files so Musicpod can't see them.

It would be really useful to have an option where having warned you once, you can click a 'do not tell me again' option.

Windows version

Hi, Flutter can make cross platform application.
Please make the Windows version.
Thanks πŸ™

Enable shuffle on an album with one track locks up UI

If you play an album that contains only one track and then click the shuffle button, the music continues to play in the background but the UI locks up. I'm guessing there is an infinite loop triggered by this scenario as the fans on my PC rev up when the UI freezes.

Feature request: view with most recent podcast episodes

I believe this to be a very common use case:

Users to looking for recent episodes of all the podcasts they subscribed. In order to do this the best way is to have a view/window displaying an ordered list of the most recent episodes for all the podcasts they subscribed, so that users can avoid to check each of them, and to miss, or forget or disable desktop notifications.

So what I'm requesting is for there to be a single window where there's such ordered list of the most recent podcasts episodes for all the subscribed podcasts.

Search is broken + the songs can't find all of my music

The search appears to be totally broken as I think I would need to keep scrolling in order for the app to find the music I'm looking for

When I look up Taylor Swift:
image
image

When I look up Eminem:
image
image

Another example, I know one of my favorites, "All Too Well" should be here, but the app can't seem to find it.
image
image

Reaching the end of an album causes repeat from last clicked track

When you get to the end of an album, rather than ending, Musicpod will go back to the last track you clicked on even with repeat off - unless I have miss-understood the repeat mechanism.

The easiest way to reproduce this is to click on the last track of an album. When Musicpod reaches the end of the track, it will start playing it again and repeat.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Repository problems

These problems occurred while renovating this repository. View logs.

  • WARN: Package lookup failures

Warning

Renovate failed to look up the following dependencies: Failed to look up dart package mpris_service, Failed to look up dart package phoenix_theme.

Files affected: pubspec.yaml


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/appimage.yml
  • actions/checkout v4
  • subosito/flutter-action v2
.github/workflows/ci.yaml
  • actions/checkout v4
  • subosito/flutter-action v2
  • actions/checkout v4
  • subosito/flutter-action v2
  • actions/checkout v4
  • subosito/flutter-action v2
  • actions/checkout v4
  • subosito/flutter-action v2
.github/workflows/snap.yaml
  • actions/checkout v4
  • subosito/flutter-action v2
  • snapcore/action-build v1
  • snapcore/action-publish v1
pub
pubspec.yaml
  • animated_emoji ^3.1.0
  • audio_metadata_reader ^0.0.5
  • audio_service ^0.18.12
  • basic_utils ^5.7.0
  • blur ^3.1.0
  • cached_network_image ^3.3.1
  • collection ^1.18.0
  • connectivity_plus ^6.0.3
  • cupertino_icons ^1.0.8
  • desktop_notifications ^0.6.3
  • dio ^5.4.3
  • file ^7.0.0
  • file_selector ^1.0.3
  • file_selector_linux ^0.9.2+1
  • flutter
  • flutter_cache_manager ^3.3.1
  • flutter_html ^3.0.0-beta.2
  • flutter_markdown ^0.6.23
  • flutter_tabler_icons ^1.27.0
  • github ^9.24.0
  • gtk ^2.1.0
  • handy_window ^0.4.0
  • http ^1.2.1
  • intl ^0.18.0
  • m3u_parser_nullsafe ^1.0.3
  • media_kit ^1.1.10
  • media_kit_libs_video ^1.0.4
  • media_kit_video ^1.2.4
  • mime ^1.0.5
  • mime_type ^1.0.0
  • mockito ^5.4.4
  • mpris_service
  • package_info_plus ^6.0.0
  • palette_generator ^0.3.3+3
  • path ^1.9.0
  • path_provider ^2.1.2
  • phoenix_theme
  • pls ^1.1.0
  • podcast_search ^0.6.9
  • radio_browser_api ^2.0.0+1
  • reorderableitemsview ^2.0.1
  • safe_change_notifier ^0.3.2
  • scroll_to_index ^3.0.1
  • shimmer ^3.0.0
  • smtc_windows ^0.1.2
  • super_drag_and_drop ^0.7.0
  • system_theme ^2.3.1
  • url_launcher ^6.2.5
  • watch_it ^1.4.1
  • window_manager ^0.3.8
  • xdg_directories ^1.0.4
  • yaru
  • yaru_window ^0.2.1
  • yaru_window_linux ^0.2.0
  • flutter_lints ^3.0.0
  • build_runner ^2.4.8
  • dart >=3.0.0 <4.0.0
  • flutter >=3.10.0

  • Check this box to trigger a request for Renovate to run again on this repository

Emojis are missing on Linux Arm

For some reason the 🐣 πŸ”Ž 🎡 ❓ icons are missing when running the snap on arm. Both my arm and x86 snaps are running on Mantic.

image

Podcast sync

Hello,

I just saw the app being featured on OMG Ubuntu. Looks really promising :-)

I'm a core contributor to AntennaPod and involved in an initiative to develop a new standard to sync podcasts (subscriptions & listening progress) between clients & servers.

Would you be interested in implementing such synchronisation (at some point)? We're still very much at the early stages and it'd be cool to have you engaged in the standard development if you're interested.

More info here: https://github.com/OpenPodcastAPI/api-specs

Let me know :-) (no pressure; don't hesitate to say no)

Fallback to file name of no metadata is present

It works now. The only remaining problem is that it doesn't import musics which have no metadata. I can manually add metadata, but it could be better if we were able to import those musics using their names if they had no metadata, as well. I think this is another issue that is opened by another person. So I'll be looking forward to that, as well. Thanks again for the great work.

Originally posted by @bfapps in #39 (comment)

Create a queue for everything and show queue in player view

In the player within the app and in the mpris, when the next or the previous button is pressed, it doesn't take us to the next or the previous song. I think this is a major issue. Also, the app doesn't autoplay the next song when one ends. Kindly fix it.

Blank screen after install

After installing the snap package on my raspberry pi 4 (arm64), and launching it with the desktop icon all i get is a blank screen, no controls nothing just a blank screen.

Ubuntu 23.04

Feature Request: Add Random Playlist

Having a Add Random Playlist button next to the playlist button would be very useful.

This is the idea. When you click the Add Random Playlist button a modal with 2 inputs (name, number of songs) and a Add button pops up. When the form is filled out and the Add button is clicked MusicPod will generate a new playlist with however may random songs you requested from your local music collection.

Best Regards.

Idea: efficient use of the `previous` button

Currently, when playing a playlist, the previous button takes to the previous song, of that playlist. But, what if when a single song is clicked from the tracks list of Local Audio, the next button now plays the next song, but how about adding the feature, when the previous button is pressed, in that scenario, the previous song will be played. If, it's the first song, then the last song from the local audio list can be played. Or, in that case, nothing can be done. Also, how about, when the previous button is pressed, the song that's playing currently will again play from the starting. And when pressed twice, the previous song will be played.

Slow initial start with huge collection

I've got a very big collection of music. When closing and starting the app it hangs for few minutes like this:

image

Is there a way it can load items from cache and sync in background?

This is the folder I'm using as collection in MusicPod

image

~45.000 files

Feature: support video podcasts

Some podcasts come with a full video + audio and not only audo
We should support this.
I made the flutter changes needed already in this branch/PR
#70
but the snapcraft needs changes in order to make this work I think

Auto builds miss libva-drm.so

ProblemType
Bug

Date
Thu Sep 14 23:09:45 2023

CurrentDesktop
ubuntu:GNOME

ProcEnviron
LANG=en_US.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=xterm-256color
XDG_RUNTIME_DIR=

DistroRelease
Ubuntu 23.04

Uname
Linux 6.2.0-32-generic x86_64

Architecture
amd64

Snap
musicpod 0+git.291662c (latest/stable)

SnapChanges
ID Status Spawn Ready Summary
11 Done 2023-09-14T23:05:07+02:00 2023-09-14T23:06:08+02:00 Install "musicpod" snap
13 Done 2023-09-14T23:07:52+02:00 2023-09-14T23:08:45+02:00 Refresh "musicpod" snap from "latest/edge" channel
14 Done 2023-09-14T23:09:17+02:00 2023-09-14T23:09:21+02:00 Refresh "musicpod" snap from "latest/stable" channel

SnapConnections
Interface Plug Slot Notes
audio-playback musicpod:audio-playback :audio-playback -
content[gnome-42-2204] musicpod:gnome-42-2204 gnome-42-2204:gnome-42-2204 -
content[gtk-3-themes] musicpod:gtk-3-themes gtk-common-themes:gtk-3-themes -
content[icon-themes] musicpod:icon-themes gtk-common-themes:icon-themes -
content[sound-themes] musicpod:sound-themes gtk-common-themes:sound-themes -
dbus - musicpod:dbus-musicpod -
desktop musicpod:desktop :desktop -
desktop-legacy musicpod:desktop-legacy :desktop-legacy -
gsettings musicpod:gsettings :gsettings -
home musicpod:home :home -
mpris - musicpod:mpris -
network musicpod:network :network -
network-manager-observe musicpod:network-manager-observe :network-manager-observe -
opengl musicpod:opengl :opengl -
removable-media musicpod:removable-media - -
wayland musicpod:wayland :wayland -
x11 musicpod:x11 :x11 -

SnapInfo.musicpod
name: musicpod
summary: Music, podcast and internet radio player for your Ubuntu Desktop
publisher: Frederik Feichtmeier
store-url: https://snapcraft.io/musicpod
contact: https://github.com/ubuntu-flutter-community/musicpod
license: MPL-2.0
description: |
Play local audio files, browse podcasts online or listen to internet radio
stations - all in one app!

  • Play local audio files (mp3, flac, m4a, mp4)
  • Find your local audio library sorted by metadata
  • Search for local audio files sorted by title, album and artist
  • Play internet radio stations and search them by tag, name or country
  • Play podcasts and find them by country, topic and name
  • Pin your favorite albums, podcasts and stations to the sidebar
  • Collect your favorite songs with the heart button

The podcast and radio features do currently need internet access and thus
the network-manager-observe permission is being used to display a
disconnect from the internet in the user interface.

MusicPod should automatically connect to the network-manager-observe
interface. If it didn't you can connect it with the following command:

sudo snap connect musicpod:network-manager-observe
commands:

  • musicpod
    snap-id: sxdOSGRbzsWhPmGrkYYAs68rzieTrIiv
    tracking: latest/stable
    refresh-date: 2023-09-14T23:09:17+02:00
    channels:
    latest/stable: 0+git.291662c 2023-09-11T14:16:24Z (479) 53MB -
    latest/candidate: ^
    latest/beta: ^
    latest/edge: 0+git.75f1d84 2023-09-05T10:53:42Z (477) 53MB -
    installed: 0+git.291662c (479) 53MB -

SnapInfo.core22
name: core22
summary: Runtime environment based on Ubuntu 22.04
publisher: Canonical**
store-url: https://snapcraft.io/core22
license: unset
description: |
The base snap based on the Ubuntu 22.04 release.
type: base
snap-id: amcUKQILKXHHTlmSa7NMdnXSx02dNeeT
tracking: latest/stable
refresh-date: 2023-04-18T22:37:22+02:00
channels:
latest/stable: 20230801 2023-08-30T22:10:06Z (864) 77MB -
latest/candidate: 20230801 2023-08-03T14:05:28Z (864) 77MB -
latest/beta: 20230801 2023-08-02T00:05:49Z (864) 77MB -
latest/edge: 20230914 2023-09-14T20:26:43Z (910) 77MB -
installed: 20230325 (607) 76MB base

SnapInfo.gtk-common-themes
name: gtk-common-themes
summary: All the (common) themes
publisher: Canonical**
store-url: https://snapcraft.io/gtk-common-themes
license: unset
description: |
A snap that exports the GTK and icon themes used on various Linux distros.
snap-id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
tracking: latest/stable/ubuntu-23.04
refresh-date: 2023-04-18T22:37:25+02:00
channels:
latest/stable: 0.1-81-g442e511 2022-06-28T18:10:06Z (1535) 96MB -
latest/candidate: 0.1-81-g442e511 2022-06-24T16:30:46Z (1535) 96MB -
latest/beta: 0.1-81-g442e511 2022-06-24T16:30:46Z (1535) 96MB -
latest/edge: ^
installed: 0.1-81-g442e511 (1535) 96MB -

SnapInfo.gnome-42-2204
name: gnome-42-2204
summary: Shared GNOME 42 Ubuntu stack
publisher: Canonical**
store-url: https://snapcraft.io/gnome-42-2204
license: unset
description: |
This snap provides the GNOME 42 stack to other snaps that use it. It shares
the base GNOME libraries and desktop integration components through the
content interface. This helps reduce the size of snaps and helps developers
to easily snap desktop applications.

For users

This snap is automatically installed and removed when needed. Manually
adding or removing this snap is not recommended
and might break things.

  • If you are having issues with snaps using GNOME, please contact the
    experts on the Snapcraft forum: https://forum.snapcraft.io/
  • If you want to install the GNOME Desktop Environment, then you are in the
    wrong place. Please take a look at https://www.gnome.org/ for more
    information on how to get it.

For developers

  • The gnome extension is the recommended way to use this in your own
    snap: https://snapcraft.io/docs/gnome-extension
  • You can report issues with this content snap on GitHub:
    https://github.com/ubuntu/gnome-sdk/issues
  • The source code of this snap is available on GitHub in the
    gnome-42-2204 branch:
    https://github.com/ubuntu/gnome-sdk/tree/gnome-42-2204
    snap-id: lATO8HzwVvrAPrlZRAWpfyrJKlAJrZS3
    tracking: latest/stable/ubuntu-23.04
    refresh-date: 2023-04-18T22:37:23+02:00
    channels:
    latest/stable: 0+git.ff35a85 2023-08-09T05:10:04Z (126) 509MB -
    latest/candidate: 0+git.ff35a85 2023-09-14T15:29:23Z (132) 521MB -
    latest/beta: ^
    latest/edge: 0+git.ff35a85 2023-09-14T15:29:23Z (132) 521MB -
    installed: 0+git.e7d97c7 (87) 482MB -

SnapGitOwner
ubuntu-flutter-community

SnapGitName
musicpod

CrashDB
snap-github

NonfreeKernelModules
nvidia_modeset nvidia

InstallationMedia
Ubuntu 23.04 "Lunar Lobster" - Release amd64 (20230418)

Tags
lunar

InstallationDate
Installed on 2023-09-14 (0 days ago)

UpgradeStatus
No upgrade log present (probably fresh install)

ProcVersionSignature
Ubuntu 6.2.0-32.32-generic 6.2.16

ProcCpuinfoMinimal
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 140
model name : 11th Gen Intel(R) Core(TM) i7-11390H @ 3.40GHz
stepping : 2
microcode : 0x2c
cpu MHz : 4296.478
cache size : 12288 KB
physical id : 0
siblings : 8
core id : 3
cpu cores : 4
apicid : 7
initial apicid : 7
fpu : yes
fpu_exception : yes
cpuid level : 27
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l2 invpcid_single cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves split_lock_detect dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid movdiri movdir64b fsrm avx512_vp2intersect md_clear ibt flush_l1d arch_capabilities
vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple pml ept_mode_based_exec tsc_scaling
bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs eibrs_pbrsb gds
bogomips : 5836.80
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:

ApportVersion
2.26.1-0ubuntu2

CasperMD5CheckResult
pass

Release a Flatpak version

It'd be great to have a Flatpak version of this app as well.

It's relatively simple, though not particularly well documented. Basically, it's just about downloading the app's compiled binaries, potentially also native libraries that the app depends on, and setting the right sandboxing permissions.

This Github repo contains an example project. And, of course, there are various existing Flutter projects on Flathub that can also serve as inspiration. (To see their Flatpak manifest, just click on "See details" under publisher and then, in the GithubΒ repo that links to, switch to the "Code" view.)

Translation support

It would be great if the app could be translated. I'll provide the Dutch translation then! πŸ™‚

Make an Arm64 release

I have Ubuntu 22.10 installed on my raspberry pi, I have flutter installed via snap packages. Please release an arm64 version so people such as myself can enjoy your product. Flutter is advertised as cross-platform so why only the amd64 download?

Is it be possible to have default desktop font as interface font?

Many user use different fonts as their interface font (I use inter for example). Can musicpod use this default font as interface font instead of ubuntu?

Install method: Snapstore
Distro: Fedora kde spin

I am really enjoying the app, it is very snappy πŸ˜‰ and the podcast integration is really amazing. Have a good day.

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.