Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b8dd6d3
basic flatpak support
bryce-hoehn May 1, 2026
e804ede
only run on release publish, not every commit
bryce-hoehn May 1, 2026
142bac2
example deploy stage
bryce-hoehn May 1, 2026
9083192
switch to kde-6.9 to match flatpak manifest
bryce-hoehn May 1, 2026
8e677db
bump opencloud version & fixed paths
bryce-hoehn May 1, 2026
43d1ecd
Download libsecret dependency during buildtime
bryce-hoehn May 1, 2026
1432407
fixed path
bryce-hoehn May 1, 2026
65f4b0f
removed flat-manager step
bryce-hoehn May 1, 2026
571bc83
moved manifest to root directory per flathub requirements: https://do…
bryce-hoehn May 1, 2026
1b39750
auto-update flatpak manifest
bryce-hoehn May 2, 2026
bde0457
publish updated manifest to flathub repo
bryce-hoehn May 2, 2026
07170f6
adds .desktop file
bryce-hoehn May 2, 2026
83f39c9
use local .desktop file instead of url
bryce-hoehn May 2, 2026
aedc177
fixed line breaks
bryce-hoehn May 2, 2026
152f32c
single line sed
bryce-hoehn May 2, 2026
100e360
APPLICATION_REV_DOMAIN changed from eu.opencloud.desktop to eu.opencl…
bryce-hoehn May 2, 2026
8e545b5
only trigger on releases
bryce-hoehn May 2, 2026
9d38f88
fix release tag
bryce-hoehn May 2, 2026
f3c9e34
Delete .github/workflows/update-flathub.yml
bryce-hoehn May 2, 2026
cd4f518
ensure that update job completes before publishing to flathub
bryce-hoehn May 2, 2026
c2746e5
fix .desktop name
bryce-hoehn May 2, 2026
394ba93
push instead of pr so publish step can run
bryce-hoehn May 2, 2026
75b5fe9
test
bryce-hoehn May 2, 2026
506c07c
chore: update flatpak to 3.0.5
github-actions[bot] May 2, 2026
ce73613
testing ci
bryce-hoehn May 2, 2026
1ca6640
chore: update flatpak to 3.0.6
github-actions[bot] May 2, 2026
faea347
revert tests
bryce-hoehn May 2, 2026
1635dd8
cleaner .desktop name
bryce-hoehn May 2, 2026
8fe5c43
fix: flatpak version auto-derived from VERSION.cmake (updated automat…
bryce-hoehn May 20, 2026
3f7bfeb
fix: fixed broken stock icon tag
bryce-hoehn May 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/workflows/build-flatpak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Flatpak Builder

on:
workflow_dispatch:

env:
FLATPAK_ID: eu.opencloud.OpenCloudDesktop

jobs:
# from https://github.com/flatpak/flatpak-github-actions
# this builds the flatpak for testing purposes
# flathub builds from source once submitted: https://docs.flathub.org/docs/for-app-authors/requirements
# alternatively, flatpak/flatpak-github-actions/flat-manager@v6 can be used for deploying to custom flatpak repo
flatpak:
name: "Flatpak"
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.9
options: --privileged
strategy:
matrix:
variant:
- arch: x86_64
runner: ubuntu-24.04
- arch: aarch64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.variant.runner }}
steps:
- uses: actions/checkout@v6
- name: Download libsecret only
run: |
git clone --filter=blob:none --no-checkout --depth 1 https://github.com/flathub/shared-modules
cd shared-modules
git sparse-checkout set libsecret
git checkout
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: ${{ env.FLATPAK_ID }}.flatpak
manifest-path: ${{ env.FLATPAK_ID }}.yml
cache-key: flatpak-builder-${{ github.sha }}
arch: ${{ matrix.variant.arch }}
verbose: true
49 changes: 49 additions & 0 deletions .github/workflows/publish-flathub.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Publish to Flathub

on:
release:
types: [published]
workflow_dispatch:

permissions:
contents: read

env:
FLATPAK_ID: eu.opencloud.OpenCloudDesktop

jobs:
publish:
name: "Update Flathub"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6

- name: Get version from metainfo
id: version
run: |
VERSION=$(grep -oP '<release version="\K[^"]+' ${{ env.FLATPAK_ID }}.metainfo.xml)
echo "version=$VERSION" >> "$GITHUB_OUTPUT"

- name: Checkout Flathub repo
uses: actions/checkout@v6
with:
repository: flathub/${{ env.FLATPAK_ID }}
token: ${{ secrets.FLATHUB_TOKEN }}
path: flathub

- name: Copy updated files
run: |
cp ${{ env.FLATPAK_ID }}.metainfo.xml flathub/
cp ${{ env.FLATPAK_ID }}.yml flathub/

- name: Create Pull Request to Flathub
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.FLATHUB_TOKEN }}
path: flathub
title: "Update to ${{ steps.version.outputs.version }}"
body: |
Automated update to [v${{ steps.version.outputs.version }}](https://github.com/opencloud-eu/desktop/releases/tag/v${{ steps.version.outputs.version }}).
branch: update-${{ steps.version.outputs.version }}
commit-message: "Update to ${{ steps.version.outputs.version }}"
delete-branch: true
73 changes: 73 additions & 0 deletions .github/workflows/update-flatpak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Update Flatpak

on:
push:
branches:
- main
paths:
- VERSION.cmake
workflow_dispatch:

permissions:
contents: write

env:
FLATPAK_ID: eu.opencloud.OpenCloudDesktop

jobs:
update:
name: "Update Flatpak files"
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6

- name: Read version from VERSION.cmake
id: release
run: |
MAJOR=$(grep 'MIRALL_VERSION_MAJOR' VERSION.cmake | grep -oP '\d+')
MINOR=$(grep 'MIRALL_VERSION_MINOR' VERSION.cmake | grep -oP '\d+')
PATCH=$(grep 'MIRALL_VERSION_PATCH' VERSION.cmake | grep -oP '\d+')

VERSION="${MAJOR}.${MINOR}.${PATCH}"
TAG="v${VERSION}"
DATE=$(date +%Y-%m-%d)
COMMIT="${{ github.sha }}"

echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "date=$DATE" >> "$GITHUB_OUTPUT"
echo "commit=$COMMIT" >> "$GITHUB_OUTPUT"

echo "## Release info" >> "$GITHUB_STEP_SUMMARY"
echo "Tag: \`$TAG\`" >> "$GITHUB_STEP_SUMMARY"
echo "Version: \`$VERSION\`" >> "$GITHUB_STEP_SUMMARY"
echo "Date: \`$DATE\`" >> "$GITHUB_STEP_SUMMARY"
echo "Commit: \`$COMMIT\`" >> "$GITHUB_STEP_SUMMARY"

- name: Update metainfo.xml
run: |
sed -i \
-e 's|<release version="[^"]*" date="[^"]*">|<release version="${{ steps.release.outputs.version }}" date="${{ steps.release.outputs.date }}">|' \
${{ env.FLATPAK_ID }}.metainfo.xml

echo "Updated ${{ env.FLATPAK_ID }}.metainfo.xml:"
grep '<release version=' ${{ env.FLATPAK_ID }}.metainfo.xml

- name: Update Desktop.yml
run: |
# Update the tag and commit for the opencloud-desktop module source
sed -i \
-e '/name: opencloud-desktop/,/^ - name:/{ s|tag: v.*|tag: ${{ steps.release.outputs.tag }}|; s|commit: [a-f0-9]\{40\}|commit: ${{ steps.release.outputs.commit }}|; }' \
${{ env.FLATPAK_ID }}.yml

echo "Updated ${{ env.FLATPAK_ID }}.yml:"
grep -A2 'name: opencloud-desktop' ${{ env.FLATPAK_ID }}.yml | head -1
grep -E '^\s+tag:|^\s+commit:' ${{ env.FLATPAK_ID }}.yml | tail -2

- name: Commit and push to main
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add ${{ env.FLATPAK_ID }}.metainfo.xml ${{ env.FLATPAK_ID }}.yml
git commit -m "chore: update flatpak to ${{ steps.release.outputs.version }}"
git push origin HEAD:main
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ admin/win/nsi/l10n/pofiles/*.po
*.swp
*~$
build*
!build-flatpak.yml
cscope.*
tags
t1.cfg
Expand Down
2 changes: 1 addition & 1 deletion OPENCLOUD.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set( APPLICATION_SHORTNAME "OpenCloud" )
set( APPLICATION_EXECUTABLE "opencloud" )
set( APPLICATION_VENDOR "OpenCloud" )
set( APPLICATION_ICON_NAME "opencloud" )
set( APPLICATION_REV_DOMAIN "eu.opencloud.desktop" )
set( APPLICATION_REV_DOMAIN "eu.opencloud.OpenCloudDesktop" )

if(BETA_CHANNEL_BUILD)
set( APPLICATION_NAME "${APPLICATION_NAME} Beta")
Expand Down
41 changes: 41 additions & 0 deletions eu.opencloud.OpenCloudDesktop.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>eu.opencloud.OpenCloudDesktop</id>
<name>Opencloud Desktop Client</name>
<project_license>GPL-2.0+</project_license>
<summary>Sync and collaborate on your desktop or laptop</summary>
<metadata_license>CC0-1.0</metadata_license>
<developer id="eu.opencloud">
<name>Heinlein Group</name>
</developer>
<description>
<p>The OpenCloud desktop client keeps photos and documents always up to date, enabling you to work like you always did.
Any file you add, modify or delete in the synced folders on your desktop or laptop will show up, change or disappear on the server and all other connected devices.</p>
</description>
<icon>eu.opencloud.OpenCloudDesktop</icon>
<categories>
<category>Network</category>
<category>Utility</category>
</categories>
<launchable type="desktop-id">eu.opencloud.OpenCloudDesktop.desktop</launchable>
<screenshots>
<screenshot type="default">
<caption>The options dialog</caption>
<image>https://opencloud.eu/sites/default/files/styles/416x233/public/2025-01/OpenCloud_Filesharing_Desktop_mobil_Hauptscreen.webp</image>
</screenshot>
</screenshots>
<branding>
<color type="primary" scheme_preference="light">#0082c9</color>
<color type="primary" scheme_preference="dark">#0082c9</color>
</branding>
<url type="homepage">https://opencloud.eu</url>
<url type="bugtracker">https://github.com/opencloud-eu/desktop/issues</url>
<url type="faq">https://docs.opencloud.eu/docs/user/intro/</url>
<url type="vcs-browser">https://github.com/opencloud-eu/desktop</url>
<releases>
<release version="3.0.3" date="2025-12-08">
<description></description>
</release>
</releases>
<content_rating type="oars-1.1"/>
</component>
130 changes: 130 additions & 0 deletions eu.opencloud.OpenCloudDesktop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
app-id: eu.opencloud.OpenCloudDesktop

runtime: org.kde.Platform
runtime-version: "6.9"
sdk: org.kde.Sdk

base: io.qt.qtwebengine.BaseApp
base-version: "6.9"

command: opencloud

finish-args:
- --device=dri
- --socket=wayland
- --socket=fallback-x11
- --share=network
- --share=ipc
- --filesystem=home:rw
- --filesystem=xdg-run/opencloud:create
- --talk-name=org.freedesktop.Notifications
- --talk-name=org.freedesktop.secrets
- --talk-name=org.kde.StatusNotifierWatcher
- --own-name=eu.opencloud.OpenCloudDesktop
- --talk-name=org.kde.kwalletd5
- --talk-name=org.kde.kwalletd6
- --env=TMPDIR=/var/tmp

cleanup:
- /lib/*.a
- /lib/*.la
- /lib/x86_64-linux-gnu/pkgconfig
- /share/doc
- /share/icons/hicolor/1024x1024
cleanup-commands:
- /app/cleanup-BaseApp.sh

modules:
- shared-modules/libsecret/libsecret.json

- name: qtkeychain
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_INSTALL_LIBDIR=lib
- -DBUILD_TRANSLATIONS=NO
- -DBUILD_WITH_QT6=1
cleanup:
- /include
- /mkspecs
- /lib/cmake
sources:
- type: archive
url: https://github.com/frankosterfeld/qtkeychain/archive/0.15.0.tar.gz
sha256: f4254dc8f0933b06d90672d683eab08ef770acd8336e44dfa030ce041dc2ca22
x-checker-data:
type: anitya
url-template: https://github.com/frankosterfeld/qtkeychain/archive/$version.tar.gz
stable-only: true
project-id: 4138

- name: rsvg-convert-shim
buildsystem: simple
build-commands:
- ln -s /usr/bin/rsvg-convert /app/bin/inkscape
cleanup:
- "*"

- name: libp11
config-opts:
- --with-enginesdir=${FLATPAK_DEST}/lib/engines-3/
- --with-modulesdir=${FLATPAK_DEST}/lib/ossl-modules/
cleanup:
- /include
sources:
- type: archive
url: https://github.com/OpenSC/libp11/releases/download/libp11-0.4.16/libp11-0.4.16.tar.gz
sha256: 97777640492fa9e5831497e5892e291dfbf39a7b119d9cb6abb3ec8c56d17553

- name: libre-graph-api
buildsystem: cmake
subdir: client
config-opts:
- -DCMAKE_INSTALL_LIBDIR=lib
- -DBUILD_SHARED_LIBS=ON
sources:
- type: git
url: https://github.com/opencloud-eu/libre-graph-api-cpp-qt-client.git
tag: v1.0.7
commit: 72b89ddd9a5dab2a837d1ab078d6088fa0727695

- name: kdsingleapplication
buildsystem: cmake
config-opts:
- -DCMAKE_INSTALL_LIBDIR=lib
- -DBUILD_TRANSLATIONS=NO
- -DBUILD_WITH_QT6=1
sources:
- type: git
url: https://github.com/KDAB/KDSingleApplication.git
tag: v1.2.0
commit: 3186a158f8e6565e89f5983b4028c892737844ff

- name: opencloud-desktop
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_LIBDIR=lib
- -DNO_SHIBBOLETH=1
- -DBUILD_SHELL_INTEGRATION_DOLPHIN=0
- -DBUILD_SHELL_INTEGRATION_NAUTILUS=0
- -DBUILD_UPDATER=OFF
- -DPLUGIN_INSTALL_DIR=/app/lib/plugins
- -DPLUGINDIR=/app/lib/plugins
- -DQT_MAJOR_VERSION=6
cleanup:
- /include
post-install:
- install -Dm644 -t /app/share/metainfo eu.opencloud.OpenCloudDesktop.metainfo.xml
sources:
- type: git
url: https://github.com/opencloud-eu/desktop
tag: v3.0.3
commit: 72fe8fb78e3e8b7dc9d2e54dfb497660e729cec3
x-checker-data:
type: json
url: https://api.github.com/repos/opencloud-eu/desktop/releases/latest
tag-query: .tag_name
version-query: $tag | sub("^[vV]"; "")
timestamp-query: .published_at
- type: file
path: eu.opencloud.OpenCloudDesktop.metainfo.xml
4 changes: 2 additions & 2 deletions opencloud.desktop.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
Categories=Utility;X-SuSE-SyncUtility;
Type=Application
Exec=@APPLICATION_EXECUTABLE@ --showsettings
Name=@APPLICATION_NAME@ desktop sync client
Comment=@APPLICATION_NAME@ desktop synchronization client
Name=@APPLICATION_NAME@
Comment=Desktop synchronization client
GenericName=Folder Sync
Icon=@APPLICATION_ICON_NAME@
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ - (instancetype)init
// - Be prefixed with the code signing Team ID
// - Then infixed with the sandbox App Group
// - The App Group itself must be a prefix of (or equal to) the application bundle identifier
// We end up in the official signed client with: 9B5WD74GWJ.eu.opencloud.desktop.socketApi
// We end up in the official signed client with: 9B5WD74GWJ.eu.opencloud.OpenCloudDesktop.socketApi
// With ad-hoc signing (the '-' signing identity) we must drop the Team ID.
// When the code isn't sandboxed (e.g. the OC client or the legacy overlay icon extension)
// the OS doesn't seem to put any restriction on the port name, so we just follow what
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = YES;
OC_APPLICATION_NAME = OpenCloud;
OC_APPLICATION_REV_DOMAIN = eu.opencloud.desktop;
OC_APPLICATION_REV_DOMAIN = eu.opencloud.OpenCloudDesktop;
OC_OEM_SHARE_ICNS = "";
OC_SOCKETAPI_TEAM_IDENTIFIER_PREFIX = "";
ONLY_ACTIVE_ARCH = YES;
Expand Down Expand Up @@ -486,8 +486,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
OC_APPLICATION_NAME = OpenClud;
OC_APPLICATION_REV_DOMAIN = eu.opencloud.desktop;
OC_APPLICATION_NAME = OpenCloud;
OC_APPLICATION_REV_DOMAIN = eu.opencloud.OpenCloudDesktop;
OC_OEM_SHARE_ICNS = "";
OC_SOCKETAPI_TEAM_IDENTIFIER_PREFIX = "";
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down
Loading