flecs icon indicating copy to clipboard operation
flecs copied to clipboard

Package for Flatpak

Open Grafcube opened this issue 9 months ago • 10 comments

Closes #737

This patch adds flatpak support. I built and installed it on my branch with these commands:

pnpm build
pnpm electron-builder --linux flatpak
flatpak install --bundle 'pack/YouTube Music-3.3.6-x86_64.flatpak'

A few things to note, I need to write a separate yml to publish to flathub which repeats a lot of metadata (electron builder doesn't currently have any way to publish to flathub automatically). According to the flatpak app submission guidelines:

Flathub is primarily intended as a service that is used by app developers to distribute their apps. Our goal is to give developers control of their apps and to allow them a closer relationship with their users without middlemen getting in the way. However, as part of setting up Flathub, some applications are being distributed on Flathub without the involvement of their developers. We would prefer that these applications are controlled by their authors.

I am perfectly fine with maintaining the flatpak myself.

The appstream metadata should probably contain content warnings since YT music also has explicit content. I've left it blank for now. It also needs to be packaged manually since electron builder doesn't yet support adding it (see electron-userland/electron-builder#1993). I'll manually include it in the manifest until that issue is resolved. The appstream file is useful for all linux packages, not just flatpak, which is why I've included it in the PR.

If you don't want to wait, you can checkout my branch and install it yourself with the above commands. Cheers!

Grafcube avatar May 11 '24 08:05 Grafcube

You can try using https://hughsie.github.io/oars/generate.html to generate the missing oars data

razzeee avatar May 11 '24 10:05 razzeee

You can try using https://hughsie.github.io/oars/generate.html to generate the missing oars data

Here's what I got. I'm unsure if it's accurate since it's only audio and not video.

  <content_rating type="oars-1.1">
    <content_attribute id="drugs-alcohol">mild</content_attribute>
    <content_attribute id="drugs-narcotics">mild</content_attribute>
    <content_attribute id="drugs-tobacco">mild</content_attribute>
    <content_attribute id="sex-nudity">mild</content_attribute>
    <content_attribute id="sex-themes">mild</content_attribute>
    <content_attribute id="language-profanity">moderate</content_attribute>
    <content_attribute id="social-info">intense</content_attribute>
    <content_attribute id="money-purchasing">intense</content_attribute>
    <content_attribute id="money-advertising">intense</content_attribute>
  </content_rating>

Grafcube avatar May 11 '24 10:05 Grafcube

is there any point in setting oars ratings to anything other than intense? we do not have control over youtube's content, so we cannot explicitly set age ratings

ArjixWasTaken avatar May 11 '24 15:05 ArjixWasTaken

Won't this also play video in some cases?

razzeee avatar May 12 '24 09:05 razzeee

Also social-info shouldn't be marked intense, anonymous users can use this app

MulverineX avatar May 16 '24 08:05 MulverineX

Also social-info shouldn't be marked intense, anonymous users can use this app

I'm pretty sure the algorithm still works for anonymous users.

From https://hughsie.github.io/oars/generate.html If the user is able to "enable" NSFW or "adult" content, then this should be included in the assessment even if it is turned off by default.

This makes me think that it should be the "worst case" for all the fields.

Grafcube avatar May 18 '24 11:05 Grafcube

Any update on this ? :) Would be really cool to see the app packaged as a Flatpak :+1:

Skythrew avatar Jun 18 '24 08:06 Skythrew

The app currently uses com.github.th_ch.youtube_music as its app id but according to this, it makes more sense to use io.github.th_ch.youtube_music. This is probably better suited for a separate issue but maybe all instances of the old app id should be changed?

https://docs.flathub.org/docs/for-app-authors/verification/#source-code-hosting-site

Apart from that, I'll try to make a manifest that can be used for submission into flathub whenever I get the time.

Grafcube avatar Jun 19 '24 11:06 Grafcube

Despite my best attempts it's been really complicated to build a flatpak. I think I'm going to give up and just manually update it when I need to. I'm going to leave some information here if anyone else wants to take a crack at it.

  • [ ] Generate a list of sources from pnpm-lock.yaml to include in the flatpak manifest sources.
  • [ ] electron-builder only generates a single-file bundle. I couldn't figure out a way to get it to build a directory.
  • [ ] Trying to package a regular linux build is more complicated because electron builder doesn't generate a desktop file for other package types (unless I just don't know how to do it).

Here's the changes I made to package.json to build a flatpak with the commands in my original comment.

"linux": {
  "icon": "assets/generated/icons/png",
  "category": "AudioVideo",
  "target": [
    "AppImage",
    "snap",
    "freebsd",
    "flatpak",
    "deb",
    "rpm"
  ]
},
"flatpak": {
  "runtimeVersion": "23.08",
  "baseVersion": "23.08",
  "useWaylandFlags": true,
  "finishArgs": [
    "--socket=wayland",
    "--socket=fallback-x11",
    "--share=ipc",
    "--device=dri",
    "--socket=pulseaudio",
    "--filesystem=xdg-music",
    "--share=network",
    "--talk-name=org.freedesktop.Notifications",
    "--talk-name=org.kde.StatusNotifierWatcher",
    "--talk-name=org.gnome.SettingsDaemon.MediaKeys",
    "--talk-name=com.canonical.AppMenu.Registrar",
    "--talk-name=org.gnome.SessionManager",
    "--own-name=org.mpris.MediaPlayer2.chromium.*"
  ]
},

Grafcube avatar Sep 02 '24 07:09 Grafcube

Added flatpak bundle starting in 3.6.1 and later https://github.com/th-ch/youtube-music/releases/tag/v3.6.1

JellyBrick avatar Oct 15 '24 04:10 JellyBrick

Any plans on publishing the flatpak in the flathub repo?

thalskarth avatar Dec 04 '24 18:12 thalskarth