Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
b256550
build: remove snap version
lklimek Feb 17, 2026
f732889
build: add Flatpak packaging and CI workflow
lklimek Feb 17, 2026
6134e70
build: address review findings for Flatpak packaging
lklimek Feb 17, 2026
e15ea4c
build: simplify CI workflows for Linux-only releases
lklimek Feb 17, 2026
e8f7602
build: attach to existing releases instead of creating new ones
lklimek Feb 17, 2026
6b3aeb5
revert: restore release.yml to original v1.0-dev version
lklimek Feb 17, 2026
4d9fefa
fix: address CodeRabbit review comments
lklimek Feb 17, 2026
77a2cef
docs: add Flatpak install instructions to README
lklimek Feb 17, 2026
d0ccdd6
fix: match StartupWMClass to Flatpak app_id
lklimek Feb 17, 2026
4544074
fix: use ** glob for branch trigger to match feat/flatpak
lklimek Feb 17, 2026
4d61c95
feat: add aarch64 Flatpak build and caching to CI
lklimek Feb 17, 2026
d8cdba8
fix: convert desktop and metainfo files to LF line endings
lklimek Feb 17, 2026
b606676
build: cancel in-progress Flatpak builds on new push
lklimek Feb 17, 2026
f23c4b4
fix: address PR review findings for Flatpak packaging
lklimek Feb 17, 2026
756d25d
chore: workflow timeout and perms
lklimek Feb 17, 2026
f463fff
fix: move permissions to job level in Flatpak workflow
lklimek Feb 17, 2026
227ea0d
Merge remote-tracking branch 'origin/v1.0-dev' into feat/flatpak
lklimek Feb 17, 2026
f82602f
build: cache Cargo registry and target in Flatpak CI
lklimek Feb 17, 2026
4cf27cd
fix: scope cargo cache bind-mount sed to build-args only
lklimek Feb 17, 2026
7246fad
Apply suggestions from code review
lklimek Feb 18, 2026
99e661e
Merge branch 'v1.0-dev' into feat/flatpak
lklimek Feb 18, 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
132 changes: 132 additions & 0 deletions .github/workflows/flatpak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: Build Flatpak

on:
push:
branches:
- "**flatpak**"
release:
types:
- published
workflow_dispatch:

concurrency:
group: flatpak-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
build-flatpak:
name: Build Flatpak (${{ matrix.arch }})
permissions:
contents: write
strategy:
matrix:
include:
- arch: x86_64
runs-on: ubuntu-latest
protoc-zip: protoc-25.2-linux-x86_64.zip
protoc-sha256: 78ab9c3288919bdaa6cfcec6127a04813cf8a0ce406afa625e48e816abee2878
- arch: aarch64
runs-on: ubuntu-24.04-arm
protoc-zip: protoc-25.2-linux-aarch_64.zip
protoc-sha256: 07683afc764e4efa3fa969d5f049fbc2bdfc6b4e7786a0b233413ac0d8753f6b

runs-on: ${{ matrix.runs-on }}
timeout-minutes: 20

steps:
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Install Flatpak and Flatpak Builder
run: |
sudo apt-get update
sudo apt-get install -y flatpak flatpak-builder

- name: Add Flathub remote
run: |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

- name: Install Flatpak SDK and runtime
run: |
sudo flatpak install -y --noninteractive flathub \
org.freedesktop.Platform//25.08 \
org.freedesktop.Sdk//25.08 \
org.freedesktop.Sdk.Extension.rust-stable//25.08 \
org.freedesktop.Sdk.Extension.llvm21//25.08
echo "=== Disk space after SDK install ==="
df -h

- name: Patch manifest for architecture
run: |
sed -i "s|protoc-25.2-linux-x86_64.zip|${{ matrix.protoc-zip }}|g" flatpak/org.dash.DashEvoTool.yml
sed -i "s|sha256: 78ab9c3288919bdaa6cfcec6127a04813cf8a0ce406afa625e48e816abee2878|sha256: ${{ matrix.protoc-sha256 }}|" flatpak/org.dash.DashEvoTool.yml

- name: Prepare Cargo cache
run: mkdir -p cargo-cache/registry cargo-cache/git cargo-target

- name: Restore Cargo cache
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: |
cargo-cache
cargo-target
key: cargo-flatpak-${{ matrix.arch }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-flatpak-${{ matrix.arch }}-

- name: Bind-mount Cargo cache into Flatpak sandbox
run: |
WORKSPACE="$(pwd)"
sed -i "/^ build-args:$/,/--share=network/{
/--share=network/a\\
- --bind-mount=/run/build/dash-evo-tool/cargo=${WORKSPACE}/cargo-cache\\
- --bind-mount=/run/build/dash-evo-tool/target=${WORKSPACE}/cargo-target
}" flatpak/org.dash.DashEvoTool.yml

- name: Cache Flatpak builder
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: .flatpak-builder
key: flatpak-builder-${{ matrix.arch }}-${{ hashFiles('flatpak/org.dash.DashEvoTool.yml', 'Cargo.lock') }}
restore-keys: |
flatpak-builder-${{ matrix.arch }}-

- name: Build Flatpak
run: |
flatpak-builder --force-clean --repo=flatpak-repo build-dir flatpak/org.dash.DashEvoTool.yml

- name: Create Flatpak bundle
run: |
flatpak build-bundle flatpak-repo dash-evo-tool-linux-${{ matrix.arch }}.flatpak org.dash.DashEvoTool

- name: Clean Cargo cache for storage
run: |
rm -rf cargo-target/release/incremental
rm -rf cargo-cache/registry/src
echo "=== Cargo cache sizes ==="
du -sh cargo-cache cargo-target || true

- name: Save Cargo cache
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: |
cargo-cache
cargo-target
key: cargo-flatpak-${{ matrix.arch }}-${{ hashFiles('Cargo.lock') }}

- name: Upload Flatpak bundle as artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: dash-evo-tool-linux-${{ matrix.arch }}-flatpak
path: dash-evo-tool-linux-${{ matrix.arch }}.flatpak

- name: Attach bundle to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: dash-evo-tool-linux-${{ matrix.arch }}.flatpak
Comment thread
coderabbitai[bot] marked this conversation as resolved.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ build-test/

# Build artifacts
*.snap
*.flatpak
.flatpak-builder/
flatpak-repo/
build-dir/

# Dot env file
.env
Expand Down
37 changes: 34 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ The tool supports both Mainnet and Testnet networks. Check out the [documentatio

## Table of Contents

- [Install via Flatpak (Linux)](#install-via-flatpak-linux)
- [Prerequisites](#prerequisites)
- [Rust Installation](#rust-installation)
- [Dependencies](#dependencies)
- [Windows Runtime Dependencies](#windows-runtime-dependencies)
- [Dash Core Wallet Setup](#dash-core-wallet-setup)
- [Installation](#installation)
- [Build from Source](#build-from-source)
- [Getting Started](#getting-started)
- [Start the App](#start-the-app)
- [Application directory](#application-directory)
Expand All @@ -31,8 +32,38 @@ The tool supports both Mainnet and Testnet networks. Check out the [documentatio
- [Support](#support)
- [Security Note](#security-note)

## Install via Flatpak (Linux)

The easiest way to run Dash Evo Tool on Linux is via Flatpak. Download the `.flatpak` bundle for your architecture from the [latest release](https://github.com/dashpay/dash-evo-tool/releases) and install it:

``` shell
# x86_64
flatpak install dash-evo-tool-linux-x86_64.flatpak

# aarch64 (ARM)
flatpak install dash-evo-tool-linux-aarch64.flatpak
```

To run:

``` shell
flatpak run org.dash.DashEvoTool
```

To uninstall:

``` shell
flatpak uninstall org.dash.DashEvoTool
```

The Flatpak version runs in SPV (light client) mode — no full Dash Core node is required. Application data is stored in `~/.var/app/org.dash.DashEvoTool/config/dash-evo-tool/`.

> **Note:** The Flatpak data path differs from native Linux builds, which use `~/.config/dash-evo-tool/`.

## Prerequisites

The following prerequisites are only needed if you want to build from source.

Before you begin, ensure you have met the following requirements:

### Rust Installation
Expand Down Expand Up @@ -82,9 +113,9 @@ If you use the prebuilt Windows binary, make sure the target machine has:

- **Synchronize Wallet**: Ensure the wallet is fully synced with the network you intend to use (Mainnet or Testnet).

## Installation
## Build from Source

To install Dash Evo Tool:
To build Dash Evo Tool from source:

1. **Clone the repository**:

Expand Down
10 changes: 10 additions & 0 deletions flatpak/org.dash.DashEvoTool.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Dash Evo Tool
Comment=Graphical user interface for interacting with Dash Evolution
Exec=dash-evo-tool
Icon=org.dash.DashEvoTool
Type=Application
Terminal=false
Categories=Finance;Network;Utility;
Keywords=Dash;Blockchain;Crypto;Wallet;DPNS;Evolution;
StartupWMClass=org.dash.DashEvoTool
49 changes: 49 additions & 0 deletions flatpak/org.dash.DashEvoTool.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.dash.DashEvoTool</id>
<name>Dash Evo Tool</name>
<summary>Graphical user interface for interacting with Dash Platform</summary>

<metadata_license>MIT</metadata_license>
<project_license>MIT</project_license>

<description>
<p>
A cross-platform desktop application for interacting with Dash Platform
(Layer 2). Features include DPNS username registration, contest voting,
state transition viewing, wallet management, and identity operations.
Works in SPV (light client) mode - no full Dash Core node required.
</p>
</description>

<categories>
<category>Finance</category>
<category>Network</category>
<category>BlockchainTools</category>
</categories>

<keywords>
<keyword>Dash</keyword>
<keyword>cryptocurrency</keyword>
<keyword>blockchain</keyword>
<keyword>wallet</keyword>
<keyword>DPNS</keyword>
</keywords>

<url type="homepage">https://github.com/dashpay/dash-evo-tool</url>
<url type="bugtracker">https://github.com/dashpay/dash-evo-tool/issues</url>

<launchable type="desktop-id">org.dash.DashEvoTool.desktop</launchable>

<icon type="stock">org.dash.DashEvoTool</icon>

<content_rating type="oars-1.1" />

<developer id="org.dash">
<name>Dash Core Group</name>
</developer>

<releases>
<release version="1.0.0-dev" date="2026-02-17" type="development" />
</releases>
</component>
74 changes: 74 additions & 0 deletions flatpak/org.dash.DashEvoTool.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Flatpak manifest for Dash Evo Tool
# Build with: flatpak-builder --user --force-clean --repo=flatpak-repo build-dir flatpak/org.dash.DashEvoTool.yml
# Install locally: flatpak-builder --user --install --force-clean build-dir flatpak/org.dash.DashEvoTool.yml
# Create bundle: flatpak build-bundle flatpak-repo dash-evo-tool.flatpak org.dash.DashEvoTool

app-id: org.dash.DashEvoTool
runtime: org.freedesktop.Platform
runtime-version: '25.08'
sdk: org.freedesktop.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.rust-stable
- org.freedesktop.Sdk.Extension.llvm21

command: dash-evo-tool

finish-args:
# X11 shared memory for display
- --share=ipc
# Network access for blockchain communication
- --share=network
# Display server support (prefer Wayland, fall back to X11)
- --socket=wayland
- --socket=fallback-x11
# GPU acceleration for egui rendering
- --device=dri

build-options:
append-path: /usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm21/bin
build-args:
- --share=network
env:
CARGO_HOME: /run/build/dash-evo-tool/cargo
PROTOC: /app/bin/protoc
PROTOC_INCLUDE: /app/include

modules:
# Module 1: Install protobuf compiler (required for building dash-sdk)
# NOTE: CI patches this module for aarch64 via sed (see .github/workflows/flatpak.yml).
- name: protoc
buildsystem: simple
sources:
- type: file
url: https://github.com/protocolbuffers/protobuf/releases/download/v25.2/protoc-25.2-linux-x86_64.zip
sha256: 78ab9c3288919bdaa6cfcec6127a04813cf8a0ce406afa625e48e816abee2878
build-commands:
- unzip protoc-25.2-linux-x86_64.zip bin/protoc -d /app
- unzip protoc-25.2-linux-x86_64.zip 'include/*' -d /app
- chmod 755 /app/bin/protoc

# Module 2: Build libsodium (required for crypto operations)
- name: libsodium
buildsystem: autotools
sources:
- type: archive
url: https://github.com/jedisct1/libsodium/releases/download/1.0.20-RELEASE/libsodium-1.0.20.tar.gz
sha256: ebb65ef6ca439333c2bb41a0c1990587288da07f6c7fd07cb3a18cc18d30ce19

# Module 3: Build dash-evo-tool from source
- name: dash-evo-tool
buildsystem: simple
sources:
- type: dir
path: ..
skip:
- .flatpak-builder
- build-dir
- flatpak-repo
- target
build-commands:
- cargo build --release --locked
- install -Dm755 target/release/dash-evo-tool /app/bin/dash-evo-tool
- install -Dm644 flatpak/org.dash.DashEvoTool.desktop /app/share/applications/org.dash.DashEvoTool.desktop
- install -Dm644 flatpak/org.dash.DashEvoTool.metainfo.xml /app/share/metainfo/org.dash.DashEvoTool.metainfo.xml
- install -Dm644 assets/DET_LOGO.png /app/share/icons/hicolor/512x512/apps/org.dash.DashEvoTool.png
Loading
Loading