SamloaderKotlin icon indicating copy to clipboard operation
SamloaderKotlin copied to clipboard

Publish the Linux version to Flathub

Open IverCoder opened this issue 1 year ago • 2 comments

Is your feature request related to a problem? Please describe. Having to use .tar.gz archives for running apps on immutable distros and non-Debian distros results in a subpar user experience. There are no app drawer entries and you have to manually navigate to your download every time you want to launch the app.

Describe the solution you'd like If the app gets published to Flathub, it can be installed with just one click click on any distro, even immutable ones. The app drawer entries will automatically be added too. The app also has a chance to end up on the front page of GNOME Software, KDE Discover, Linux Mint's Software Manager, and other app stores in many cases.

Describe alternatives you've considered Manually running the app inside the archive, but it does not result in a good user experience.

Additional context Here are the Flatpak and Flathub docs.

IverCoder avatar Jul 17 '24 10:07 IverCoder

Bifrost uses Conveyor to build the desktop apps, which doesn't currently support creating Flatpaks. It's on their radar, but not a priority.

It seems like it might be possible to create a Flatpak from a compiled binary, but the documentation really isn't clear to me on how to actually do this, and no one seems to have simple explanations on how Flatpak manifests work.

zacharee avatar Aug 05 '24 01:08 zacharee

Bifrost uses Conveyor to build the desktop apps, which doesn't currently support creating Flatpaks. It's on their radar, but not a priority.

It seems like it might be possible to create a Flatpak from a compiled binary, but the documentation really isn't clear to me on how to actually do this, and no one seems to have simple explanations on how Flatpak manifests work.

https://docs.flatpak.org/en/latest/manifests.html

ghost avatar Jan 08 '25 17:01 ghost

I have written a flatpak manifest - it builds and runs fine for me. Require the metainfo file to be changed to pass appstream validation and a custom desktop file path which is why I included them here.

id: tk.zwander.samsungfirmwaredownloader
runtime: org.freedesktop.Platform
runtime-version: '24.08'
sdk: org.freedesktop.Sdk
command: bifrost
rename-icon: bifrost
finish-args:
  - --share=ipc
  - --share=network
  - --socket=x11
  - --device=dri
modules:
  - name: bifrost
    buildsystem: simple
    build-commands:
      - mv bin lib share -t /app
      - mv -f tk.zwander.samsungfirmwaredownloader.metainfo.xml /app/share/metainfo/
      - mv -f tk.zwander.samsungfirmwaredownloader.desktop /app/share/applications/
      - rm -rf /app/share/icons/hicolor/1024x1024/
    sources:
      - type: archive
        url: https://github.com/zacharee/SamloaderKotlin/releases/download/1.20.2/bifrost-1.20.2-linux-amd64.tar.gz
        sha256: dd5f1f0f96c4b8f28890785d08f4afcedf93b30efe4c6721bd6177200415259f
      - type: file
        path: tk.zwander.samsungfirmwaredownloader.metainfo.xml
      - type: file
        path: tk.zwander.samsungfirmwaredownloader.desktop
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
    <id>tk.zwander.samsungfirmwaredownloader.desktop</id>
    <name>Bifrost</name>
    <summary>Graphical firmware downloader for Samsung devices</summary>
    <url type="homepage">https://github.com/zacharee/SamloaderKotlin</url>
    <metadata_license>FSFAP</metadata_license>
    <project_license>MIT</project_license>
    <content_rating type="oars-1.0" />
    <description>
    <p>
      This is yet another firmware downloader for Samsung devices, but it has some special features.
      For one, it's cross-platform. Bifrost runs on Windows, Linux, macOS, and even Android!
      Bifrost is also a graphical program, with a shared UI across all supported platforms.
      Most of the functionality in Bifrost is based on Samloader. The Python code has been converted to Kotlin and tweaked to take advantage of some of Kotlin's features.
      Bifrost uses Jetpack Compose, JetBrains Compose for Desktop, and Kotlin Multiplatform to create a shared codebase for all supported platforms.
    </p>
    </description>

    <launchable type="desktop-id">tk.zwander.samsungfirmwaredownloader.desktop</launchable>

    <provides>
      <binary>bifrost</binary>
    </provides>

    <releases>
      <release version="1.20.2" date="2021-01-01">
        <description>
          <p>
            - Fix an issue where picking directories on Linux might just not do anything.
            - Work on addressing an issue where moving the window across displays would cause it to reset.
            - Update TACs.
            - UI tweaks.
          </p>
        </description>
      </release>
    </releases>
</component>
[Desktop Entry]
Categories=GTK;Gnome;
Exec=/app/bin/bifrost
Icon=bifrost
Name=Bifrost
StartupWMClass=MainKt
Terminal=false
Type=Application
# Version of the .desktop spec this file conforms with.
Version=1.4

MagicalDrizzle avatar Jul 07 '25 13:07 MagicalDrizzle