ObsidianDragon - DragonX ImGui Wallet
Full-node GUI wallet for DragonX cryptocurrency. Built with Dear ImGui, SDL3, and OpenGL3/DX11. Features: - Send/receive shielded and transparent transactions - Autoshield with merged transaction display - Built-in CPU mining (xmrig) - Peer management and network monitoring - Wallet encryption with PIN lock - QR code generation for receive addresses - Transaction history with pagination - Console for direct RPC commands - Cross-platform (Linux, Windows)
This commit is contained in:
159
scripts/create-appimage.sh
Executable file
159
scripts/create-appimage.sh
Executable file
@@ -0,0 +1,159 @@
|
||||
#!/bin/bash
|
||||
# DragonX ImGui Wallet - AppImage Creation Script
|
||||
# Copyright 2024-2026 The Hush Developers
|
||||
# Released under the GPLv3
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BUILD_DIR="${SCRIPT_DIR}/build/linux"
|
||||
APPDIR="${BUILD_DIR}/AppDir"
|
||||
VERSION="1.0.0"
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
print_status() { echo -e "${GREEN}[*]${NC} $1"; }
|
||||
print_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
# Check prerequisites
|
||||
if [ ! -f "${BUILD_DIR}/bin/ObsidianDragon" ]; then
|
||||
print_error "Binary not found. Run build.sh --linux-release first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for appimagetool
|
||||
APPIMAGETOOL=""
|
||||
if command -v appimagetool &> /dev/null; then
|
||||
APPIMAGETOOL="appimagetool"
|
||||
elif [ -f "${BUILD_DIR}/appimagetool-x86_64.AppImage" ]; then
|
||||
APPIMAGETOOL="${BUILD_DIR}/appimagetool-x86_64.AppImage"
|
||||
else
|
||||
print_status "Downloading appimagetool..."
|
||||
wget -q -O "${BUILD_DIR}/appimagetool-x86_64.AppImage" \
|
||||
"https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
chmod +x "${BUILD_DIR}/appimagetool-x86_64.AppImage"
|
||||
APPIMAGETOOL="${BUILD_DIR}/appimagetool-x86_64.AppImage"
|
||||
fi
|
||||
|
||||
print_status "Creating AppDir structure..."
|
||||
rm -rf "${APPDIR}"
|
||||
mkdir -p "${APPDIR}/usr/bin"
|
||||
mkdir -p "${APPDIR}/usr/lib"
|
||||
mkdir -p "${APPDIR}/usr/share/applications"
|
||||
mkdir -p "${APPDIR}/usr/share/icons/hicolor/256x256/apps"
|
||||
mkdir -p "${APPDIR}/usr/share/ObsidianDragon/res"
|
||||
|
||||
# Copy binary
|
||||
print_status "Copying binary..."
|
||||
cp "${BUILD_DIR}/bin/ObsidianDragon" "${APPDIR}/usr/bin/"
|
||||
|
||||
# Copy resources
|
||||
print_status "Copying resources..."
|
||||
cp -r "${BUILD_DIR}/bin/res/"* "${APPDIR}/usr/share/ObsidianDragon/res/" 2>/dev/null || true
|
||||
|
||||
# Create desktop file
|
||||
print_status "Creating desktop file..."
|
||||
cat > "${APPDIR}/usr/share/applications/ObsidianDragon.desktop" << EOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=DragonX Wallet
|
||||
Comment=DragonX Cryptocurrency Wallet
|
||||
Exec=ObsidianDragon
|
||||
Icon=ObsidianDragon
|
||||
Categories=Finance;Network;
|
||||
Terminal=false
|
||||
StartupNotify=true
|
||||
EOF
|
||||
|
||||
# Copy desktop file to root
|
||||
cp "${APPDIR}/usr/share/applications/ObsidianDragon.desktop" "${APPDIR}/"
|
||||
|
||||
# Create icon (simple SVG placeholder if no icon exists)
|
||||
print_status "Creating icon..."
|
||||
if [ -f "${SCRIPT_DIR}/res/icons/dragonx-256.png" ]; then
|
||||
cp "${SCRIPT_DIR}/res/icons/dragonx-256.png" "${APPDIR}/usr/share/icons/hicolor/256x256/apps/ObsidianDragon.png"
|
||||
else
|
||||
# Create a simple SVG icon as placeholder
|
||||
cat > "${APPDIR}/ObsidianDragon.svg" << 'EOF'
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="256" height="256" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="256" height="256" rx="32" fill="#1a1a1a"/>
|
||||
<circle cx="128" cy="128" r="80" fill="none" stroke="#2e7d32" stroke-width="8"/>
|
||||
<text x="128" y="145" font-family="Arial, sans-serif" font-size="72" font-weight="bold"
|
||||
fill="#4caf50" text-anchor="middle">DX</text>
|
||||
</svg>
|
||||
EOF
|
||||
# Convert SVG to PNG if rsvg-convert is available
|
||||
if command -v rsvg-convert &> /dev/null; then
|
||||
rsvg-convert -w 256 -h 256 "${APPDIR}/ObsidianDragon.svg" > \
|
||||
"${APPDIR}/usr/share/icons/hicolor/256x256/apps/ObsidianDragon.png"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Copy icon to root
|
||||
cp "${APPDIR}/usr/share/icons/hicolor/256x256/apps/ObsidianDragon.png" "${APPDIR}/" 2>/dev/null || \
|
||||
cp "${APPDIR}/ObsidianDragon.svg" "${APPDIR}/ObsidianDragon.png" 2>/dev/null || true
|
||||
|
||||
# Create AppRun script
|
||||
print_status "Creating AppRun..."
|
||||
cat > "${APPDIR}/AppRun" << 'EOF'
|
||||
#!/bin/bash
|
||||
SELF=$(readlink -f "$0")
|
||||
HERE=${SELF%/*}
|
||||
|
||||
# Set up resource paths
|
||||
export DRAGONX_RES_PATH="${HERE}/usr/share/ObsidianDragon/res"
|
||||
|
||||
# Find libraries
|
||||
export LD_LIBRARY_PATH="${HERE}/usr/lib:${LD_LIBRARY_PATH}"
|
||||
|
||||
# Change to resource directory for relative paths
|
||||
cd "${HERE}/usr/share/ObsidianDragon"
|
||||
|
||||
exec "${HERE}/usr/bin/ObsidianDragon" "$@"
|
||||
EOF
|
||||
chmod +x "${APPDIR}/AppRun"
|
||||
|
||||
# Bundle required libraries (basic set)
|
||||
print_status "Bundling libraries..."
|
||||
LIBS_TO_BUNDLE=(
|
||||
"libSDL3.so"
|
||||
)
|
||||
|
||||
for lib in "${LIBS_TO_BUNDLE[@]}"; do
|
||||
LIB_PATH=$(ldconfig -p | grep "$lib" | head -1 | awk '{print $NF}')
|
||||
if [ -n "$LIB_PATH" ] && [ -f "$LIB_PATH" ]; then
|
||||
cp "$LIB_PATH" "${APPDIR}/usr/lib/" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
|
||||
# Also copy SDL3 from build if exists
|
||||
if [ -f "${BUILD_DIR}/_deps/sdl3-build/libSDL3.so" ]; then
|
||||
cp "${BUILD_DIR}/_deps/sdl3-build/libSDL3.so"* "${APPDIR}/usr/lib/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Create AppImage
|
||||
print_status "Creating AppImage..."
|
||||
cd "${BUILD_DIR}"
|
||||
|
||||
ARCH=$(uname -m)
|
||||
APPIMAGE_NAME="DragonX_Wallet-${VERSION}-${ARCH}.AppImage"
|
||||
|
||||
# Run appimagetool
|
||||
ARCH="${ARCH}" "${APPIMAGETOOL}" "${APPDIR}" "${APPIMAGE_NAME}"
|
||||
|
||||
if [ -f "${APPIMAGE_NAME}" ]; then
|
||||
# Copy to release/linux/ for clean output
|
||||
OUT_DIR="${SCRIPT_DIR}/release/linux"
|
||||
mkdir -p "${OUT_DIR}"
|
||||
cp "${APPIMAGE_NAME}" "${OUT_DIR}/"
|
||||
print_status "AppImage created successfully!"
|
||||
print_status "Output: ${OUT_DIR}/${APPIMAGE_NAME}"
|
||||
ls -lh "${OUT_DIR}/${APPIMAGE_NAME}"
|
||||
else
|
||||
print_error "AppImage creation failed"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user