Skip to content

Releases: SimonHeggie/FOSS-Artist-workflow-Guide

foss-art-install_v0.0.3

05 Aug 04:44
aaf910f

Choose a tag to compare

Krita FOSS Installer — v0.0.3

✅ Structural Overhaul

  • Renamed krita_install/krita/
    → clearer structure, consistent with ardour/
  • Moved archives_k/ under krita/
    → resolves path bugs, ensures app-scoped cache
  • Unified version tracking to root version file
    → replaces .version_k

✂️ Removed

  • k-addon_segmentation.sh
    → deprecated in favor of modern Vision Tools

🧠 Added

  • k-addon_vision_tools.sh
    → full install of Krita Vision Tools v2.0.0 (segmentation + selection)
  • required.sh
    → intelligent system dependency checker with multi-distro support
  • k-comfyui_shortcut.sh
    → auto-generates .desktop launcher for ComfyUI

⚙️ Improvements

  • Centralised path config via paths.conf and paths_k.conf
  • Modular addon scripts with shared logging, cache handling, and install validation
  • AppImage validation and repair logic rewritten
  • All .desktop entries patched dynamically for clean KDE/GNOME support

📦 Addons

🧩 Krita Vision Tools

  • Installed via k-addon_vision_tools.sh
  • Source: Acly/krita-ai-tools
  • Versioned as:
    VISIONTOOLS=v2.0.0
    
  • Archive path:
    krita/archives_k/vision_tools.zip
    
  • Extracted to:
    ~/.Applications/Krita/squashfs-root/usr/share/krita/pykrita
    
  • Skips re-download if archive and version match
  • Uses curl --http1.1 to avoid GitHub HTTP/2 bugs

🎨 AI Diffusion Addon

  • Installed via k-addon_ai_diffusion.sh
  • ACLY-style image generation toolkit
  • Versioned as:
    AIDIFFUSION=v1.36.1
    
  • Archive path:
    krita/archives_k/ai_diffusion.zip
    
  • Extracted to:
    ~/.Applications/Krita/squashfs-root/usr/share/krita/pykrita
    

🌐 ComfyUI Web App Launcher

  • Installed via k-comfyui_shortcut.sh
  • Generates .desktop file with WM_CLASS override for clean taskbar icon
  • Works best on KDE + Brave Browser
  • Installs to:
    ~/.local/share/applications/ComfyUI.desktop
    
  • Also patches:
    ~/.Applications/ComfyUI/server/settings.json
    
  • Falls back to system default browser if Brave is not available

Installation:

NOTE! ACLY made a big change that requires reinstall. If you were using the previous script version, then do a full install of all desired components

Simply run the following from which ever location you'd like to backup your install archive, otherwise this will run automatically from your downloads folder:

Bootstrap Script (krita.sh)
#!/usr/bin/env bash

# ─── Define Installer Version ────────────────────────────────────────
FOSS_INSTALL_VERSION="v0.0.3"

# ─── Work in ~/Downloads if invoked from $HOME ───────────────────────
if [ "$PWD" = "$HOME" ]; then
  cd "$HOME/Downloads/foss-art-install/" || exit 1
fi

# ─── Main Logic in Subshell (inherits PATH) ──────────────────────────
(
set -euo pipefail
IFS=$'\n\t'

BOOT_DIR="$(pwd)"
INSTALL_DIR="$BOOT_DIR/krita"
INSTALL_SCRIPT="$INSTALL_DIR/install_krita.sh"
UNINSTALL_SCRIPT="$INSTALL_DIR/uninstall_krita.sh"
VERSION_FILE="$BOOT_DIR/version"
ARCHIVE_TEMP="foss-art-install.zip"

PYKRITA_DIR="$HOME/.Applications/Krita/squashfs-root/usr/share/krita/pykrita"
COMFY_DESKTOP_FILE="$HOME/.local/share/applications/ComfyUI.desktop"

GITHUB_LATEST_URL="https://github.com/SimonHeggie/FOSS-Artist-workflow-Guide/releases/latest/download/foss-art-install.zip"

# ─── Dependency Check via required.sh ────────────────────────────────
chmod +x "$BOOT_DIR/required.sh"
"$BOOT_DIR/required.sh" || {
  echo "[ERROR] Missing system requirements. Aborting." >&2
  exit 1
}

# ─── Check Version ───────────────────────────────────────────────────
CURRENT_VERSION="none"
if [ -f "$VERSION_FILE" ]; then
  CURRENT_VERSION=$(awk -F= '/^FOSS_INSTALL=/{print $2}' "$VERSION_FILE" || echo "none")
fi

if [ "$CURRENT_VERSION" != "$FOSS_INSTALL_VERSION" ] && [ "$CURRENT_VERSION" != "none" ]; then
  echo "[INFO] Updating bootstrap to latest version from GitHub..."
  curl -fL "$GITHUB_LATEST_URL" -o "$ARCHIVE_TEMP"
  unzip -o "$ARCHIVE_TEMP" >/dev/null 2>&1
  rm -f "$ARCHIVE_TEMP"
  if [ ! -f "$BOOT_DIR/krita/krita.sh" ]; then
    echo "[ERROR] Downloaded archive does not contain krita.sh" >&2
    exit 1
  fi
  chmod +x "$BOOT_DIR/krita/krita.sh"
  echo "[INFO] Replacing self with updated krita.sh..."
  echo "FOSS_INSTALL=$FOSS_INSTALL_VERSION" > "$VERSION_FILE"
  exec "$BOOT_DIR/krita/krita.sh"
fi

# ─── Ensure Installer is Present ─────────────────────────────────────
echo "[BOOT] Checking krita folder..."
if [ -d "$INSTALL_DIR" ]; then
  echo "[INFO] Found existing ./krita — skipping download."
else
  echo "[INFO] krita/ not found. Downloading latest installer..."
  curl -fL "$GITHUB_LATEST_URL" -o "$ARCHIVE_TEMP"
  echo "[INFO] Extracting installer..."
  unzip -o "$ARCHIVE_TEMP" >/dev/null
  rm -f "$ARCHIVE_TEMP"
  [ -d "$INSTALL_DIR" ] || { echo "[ERROR] Expected folder 'krita/' not found after extraction." >&2; exit 1; }
fi

if [ ! -f "$INSTALL_SCRIPT" ]; then
  echo "[ERROR] Missing install_krita.sh inside krita/ — aborting." >&2
  ls -l "$INSTALL_DIR"
  exit 1
fi

# ─── Menu: First-Time Install ───────────────────────────────────────
if [ "$CURRENT_VERSION" = "none" ]; then
  echo "[INFO] Krita not installed."
  echo "[I]   Install Krita + Vision Tools"
  echo "[AI]  Install Krita + AI Diffusion"
  echo "[AIC] Install Krita + AI + ComfyUI shortcut"
  echo "[Q]   Quit"
  printf "Select an option: "
  read -r option

  case "$option" in
    [Ii])         bash "$INSTALL_SCRIPT" ;;
    [Aa][Ii])     bash "$INSTALL_SCRIPT" --with-ai ;;
    [Aa][Ii][Cc]) bash "$INSTALL_SCRIPT" --with-ai --with-comfy ;;
    [Qq])         echo "Goodbye!" && exit 0 ;;
    *)            echo "Invalid input." && exit 1 ;;
  esac

  sed -i "/^FOSS_INSTALL=/d" "$VERSION_FILE" 2>/dev/null || true
  echo "FOSS_INSTALL=$FOSS_INSTALL_VERSION" >> "$VERSION_FILE"
  exit 0
fi

# ─── Installed Menu ──────────────────────────────────────────────────
echo "[INFO] Krita install detected."
echo "[INFO] Installed versions:"
grep -E "^(FOSS_INSTALL|KRITA|AIDIFFUSION|VISIONTOOLS)=" "$VERSION_FILE" || true

AI_STATUS="OK"; COMFY_STATUS="OK"; VISION_STATUS="OK"
if ! find "$PYKRITA_DIR" -type f -iname "diffusion.py" 2>/dev/null | grep -q .; then AI_STATUS="MISSING"; fi
[ -f "$COMFY_DESKTOP_FILE" ] || COMFY_STATUS="MISSING"
grep -q "^VISIONTOOLS=" "$VERSION_FILE" 2>/dev/null || VISION_STATUS="MISSING"

echo
echo "[STATUS] Krita: OK   Vision Tools: $VISION_STATUS   AI Diffusion: $AI_STATUS   ComfyUI Shortcut: $COMFY_STATUS"
echo
echo "[I]   Install latest with Vision Tools (overwrite, update version)"
echo "[AI]  Add AI Diffusion only"
echo "[AIC] Add AI Diffusion + ComfyUI shortcut"
echo "[D]   Download archives only"
echo "[R]   Repair (re-extract AppImage + reinstall addons)"
echo "[U]   Uninstall"
echo "[Q]   Quit"
printf "Select an option: "
read -r option
case "$option" in
  [Aa][Ii][Cc]) bash "$INSTALL_SCRIPT" --with-ai --with-comfy ;;
  [Aa][Ii])     bash "$INSTALL_SCRIPT" --with-ai ;;
  [Ii])         bash "$INSTALL_SCRIPT" ;;
  [Dd])         bash "$INSTALL_SCRIPT" --download-only ;;
  [Rr])         bash "$INSTALL_SCRIPT" --repair ;;
  [Uu])         bash "$UNINSTALL_SCRIPT" --complete ;;
  [Qq])         echo "Goodbye!" && exit 0 ;;
  *)            echo "Invalid input." && exit 1 ;;
esac

sed -i "/^FOSS_INSTALL=/d" "$VERSION_FILE" 2>/dev/null || true
echo "FOSS_INSTALL=$FOSS_INSTALL_VERSION" >> "$VERSION_FILE"

) # ← End of subshell

🖥️ Installer Interface (krita.sh)

When Krita is not installed:

[I]   Install Krita + Vision Tools
[AI]  Install Krita + AI Diffusion
[AIC] Install Krita + AI + ComfyUI shortcut
[Q]   Quit

When Krita is already installed:

[INFO] Installed versions:
FOSS_INSTALL=...
KRITA=...
AIDIFFUSION=...
VISIONTOOLS=...

[STATUS] Krita: OK   Vision Tools: OK/MISSING   AI Diffusion: OK/MISSING   ComfyUI Shortcut: OK/MISSING

[I]   Install latest with Vision Tools (overwrite)
[AI]  Add AI Diffusion only
[AIC] Add AI Diffusion + ComfyUI shortcut
[D]   Download archives only
[R]   Repair install (re-extract AppImage + addons)
[U]   Uninstall
[Q]   Quit

🧠 Version Tracking (version file)

Stored at:

foss-art-install/version

Sample contents:

FOSS_INSTALL=v0.0.3
KRITA=5.2.11
AIDIFFUSION=v1.36.1
VISIONTOOLS=v2.0.0

Used to:

  • Skip unnecessary downloads
  • Trigger repair logic
  • Determine what’s installed and synced

🧪 Linux Compatibility Matrix

✅ Fully Supported

Distro Desktop Status Notes
Nobara 42 KDE ✅ Tested Native target. Full support.
Fedora KDE KDE ✅ Expected Same base as Nobara.
KDE Neon KDE ✅ Expected Plasma-optimized.
Kubuntu KDE ✅ Expected Clean Ubuntu-based setup.
Debian KDE KDE ✅ Expected Ensure sudo/curl are present.
Manjaro KDE KDE ✅ Expected Now compatible via required.sh.
Arch KDE KDE ✅ Expected Supports fallback to su -c.
EndeavourOS KDE KDE ✅ Expected Arch-based, compatible.
openSUSE KDE KDE ✅ Expected Tested with zypper install logic.

⚠️ Partial Support

| Distro | Desktop | Status | Issues ...

Read more

foss-artist-install_v0.0.2

01 Jul 13:51
aaf910f

Choose a tag to compare

FOSS Artist Workflow Installer — Release v0.0.2

A focused installer for FOSS software.
INCLUDED:

Krita - FEATURING:

AI addons, and ComfyUI integration on Linux (tested on Nobara 42).


🔧 Summary

This release introduces support for installing AI-Diffusion, Segmentation Tools, and a ComfyUI launcher shortcut from the command line, with new modular install modes and proper version tracking. It resolves previous install path issues and adds backup/fallback logic for browser launching via Brave.


Bootstrap Script (krita.sh)
#!/usr/bin/env bash

# ─── Where to store install files (if run from $HOME) ────────────────
if [ "$PWD" = "$HOME" ]; then
  cd "$HOME/Downloads" || exit 1
fi

bash -c '
set -euo pipefail
IFS=$'\''\n\t'\''

BOOT_DIR="$(pwd)"
INSTALL_DIR="$BOOT_DIR/krita_install"
INSTALL_SCRIPT="$INSTALL_DIR/install.sh"
UNINSTALL_SCRIPT="$INSTALL_DIR/uninstall.sh"
VERSION_FILE="$HOME/.Applications/Krita/version"

GITHUB_RELEASE_URL="https://github.com/SimonHeggie/FOSS-Artist-workflow-Guide/releases/download/v0.0.2/foss-artist-install.tar.gz"
ARCHIVE_TEMP="foss-artist-install.tar.gz"

# ─── Step 1: Ensure krita_install folder exists ─────────────────────
echo "[BOOT] Checking krita_install folder..."
if [ -d "$INSTALL_DIR" ]; then
    echo "[INFO] Found existing ./krita_install — skipping download."
else
    echo "[INFO] krita_install/ not found. Downloading v0.0.2 release..."
    curl -L "$GITHUB_RELEASE_URL" -o "$ARCHIVE_TEMP"
    echo "[INFO] Extracting installer..."
    tar -xf "$ARCHIVE_TEMP" || {
        echo "[ERROR] Failed to extract archive $ARCHIVE_TEMP" >&2
        exit 1
    }
    rm -f "$ARCHIVE_TEMP"

    if [ ! -d "$INSTALL_DIR" ]; then
        echo "[ERROR] Expected folder '\''krita_install/'\'' not found after extraction." >&2
        exit 1
    fi
fi

# ─── Step 2: Validate install.sh exists ──────────────────────────────
if [ ! -f "$INSTALL_SCRIPT" ]; then
    echo "[ERROR] Missing install.sh inside krita_install/ — aborting." >&2
    ls -l "$INSTALL_DIR"
    exit 1
fi

# ─── Step 3: Present menu ────────────────────────────────────────────
if [ ! -f "$VERSION_FILE" ]; then
    echo "[INFO] Krita not installed."
    echo "[I]   Install Krita only"
    echo "[AI]  Install Krita + AI Diffusion"
    echo "[AIC] Install Krita + AI + ComfyUI shortcut"
    echo "[Q]   Quit"
    printf "Select an option: "
    read -r option
    case "$option" in
        [Ii])         bash "$INSTALL_SCRIPT" --with-default ;;
        [Aa][Ii])     bash "$INSTALL_SCRIPT" --with-ai ;;
        [Aa][Ii][Cc]) bash "$INSTALL_SCRIPT" --with-ai --with-comfy ;;
        [Qq])         echo "Goodbye!" && exit 0 ;;
        *)            echo "Invalid input." && exit 1 ;;
    esac
else
    echo "[INFO] Krita install detected."
    echo "[INFO] Installed versions:"
    grep -E '^(FOSS_INSTALL|KRITA|AIDIFFUSION|SEGMENTATIONTOOLS)=' "$VERSION_FILE"

    echo ""
    echo "[I]   Install latest (overwrite, update version)"
    echo "[AI]  Add AI Diffusion"
    echo "[AIC] Add AI Diffusion + ComfyUI shortcut"
    echo "[D]   Download archives only"
    echo "[R]   Repair (re-extract AppImage + reinstall addons)"
    echo "[U]   Uninstall (with ComfyUI backup)"
    echo "[C]   Complete uninstall (no backup)"
    echo "[Q]   Quit"

    printf "Select an option: "
    read -r option
    case "$option" in
        [Aa][Ii])     bash "$INSTALL_SCRIPT" --with-ai ;;
        [Aa][Ii][Cc]) bash "$INSTALL_SCRIPT" --with-ai --with-comfy ;;
        [Ii])         bash "$INSTALL_SCRIPT" --with-default ;;
        [Dd])         bash "$INSTALL_SCRIPT" --download-only ;;
        [Rr])         bash "$INSTALL_SCRIPT" --repair ;;
        [Uu])         bash "$UNINSTALL_SCRIPT" --backup ;;
        [Cc])         bash "$UNINSTALL_SCRIPT" --complete ;;
        [Qq])         echo "Goodbye!" && exit 0 ;;
        *)            echo "Invalid input." && exit 1 ;;
    esac
fi
'

✅ Changelog — What's New in v0.0.2

ComfyUI Launcher

  • Adds run.sh and .desktop shortcut for running a separate instance of the same ComfyUI server as ACLY's.
  • Launches ComfyUI server, preferring brave. Will fallback to your default web browser.
  • WM_class used to give this brave applet it's own icon. Taskbar icon consistency
  • Logs activity to comfyui_log.txt

AI Addons

  • Further prevented redundant downloads via version tag check

Krita Installer

  • Ensures AppImage and archives are stored for later repair.
  • Tracks version snapshot in extraction archive version file and in the install conf file.

🛠️ Instructions — How to Use the Menu

Run:

bash krita.sh

You’ll see one of these menus:

If Krita is NOT installed:

**** NEW INSTALL OPTIONS ****

[I]   Install Krita only
[AI]  Install Krita + AI Diffusion
[AIC] Install Krita + AI + ComfyUI shortcut
[Q]   Quit

If Krita IS installed:

[I]   Install latest (overwrite, update version)
[AI]  Add AI Diffusion
[AIC] Add AI Diffusion + ComfyUI shortcut
[D]   Download archives only
[R]   Repair (re-extract AppImage + reinstall addons)
[U]   Uninstall (with ComfyUI backup)
[C]   Complete uninstall (no backup)
[Q]   Quit

Choose based on your needs — all actions log to ~/.Applications/Krita/install.log.


✅ Test check-list for this release:

  • Krita AppImage install + version check
  • AI Diffusion addon install and path verification
  • Segmentation Tools install and reuse logic
  • Repair mode
  • ComfyUI shortcut launches with correct icon/taskbar class
  • Launch fallback if Brave is missing
  • Download command.
  • Uninstall command.
  • Complete Uninstall

If you end up testing these, report any issues.


🔮 Future Roadmap


foss-artist-install_v0.0.1

28 Jun 07:13
aaf910f

Choose a tag to compare

This is the very first version of the foss artist install trunk.

Right now this is just for KRITA, but other apps will follow this new system.

The goal is to contain every useful art software in one place to allow specially curated VFX suite for Fedora based Linux users.
First we're starting with Krita and added some features that photoshop users will find handy from ACLY.

Tested on Nobara 42

Install (Boostrap):
#!/usr/bin/env bash

# Where to store install files (Not the install directory)
cd "$HOME/Downloads"

bash -c '
set -euo pipefail
IFS=$'\''\n\t'\''

BOOT_DIR="$(pwd)"
INSTALL_DIR="$BOOT_DIR/krita_install"
INSTALL_SCRIPT="$INSTALL_DIR/install.sh"
UNINSTALL_SCRIPT="$INSTALL_DIR/uninstall.sh"
VERSION_FILE="$INSTALL_DIR/version"

# ─── Pin to specific v0.0.1 release ─────────────────────────────
GITHUB_ARCHIVE_NAME="foss-artist-install_v0.0.1.tar.gz"
GITHUB_LATEST_URL="https://github.com/SimonHeggie/FOSS-Artist-workflow-Guide/releases/download/v0.0.1/$GITHUB_ARCHIVE_NAME"
ARCHIVE_TEMP="$GITHUB_ARCHIVE_NAME"

# Step 1: Prefer local krita_install/
if [ -d "$INSTALL_DIR" ]; then
    echo "[INFO] Found existing ./krita_install — skipping download."
else
    echo "[INFO] krita_install/ not found. Downloading version v0.0.1..."
    curl -L "$GITHUB_LATEST_URL" -o "$ARCHIVE_TEMP"
    echo "[INFO] Extracting installer..."
    tar -xf "$ARCHIVE_TEMP" || {
        echo "[ERROR] Failed to extract archive $ARCHIVE_TEMP" >&2
        exit 1
    }
    rm -f "$ARCHIVE_TEMP"

    if [ ! -d "$INSTALL_DIR" ]; then
        echo "[ERROR] Expected folder '\''krita_install/'\'' not found after extraction." >&2
        exit 1
    fi
fi

# Step 2: Validate presence of install script
if [ ! -f "$INSTALL_SCRIPT" ]; then
    echo "[ERROR] Missing install.sh inside krita_install/ — aborting." >&2
    ls -l "$INSTALL_DIR"
    exit 1
fi

# Step 3: Show install state + menu
if [ ! -f "$VERSION_FILE" ]; then
    echo "[INFO] Krita not installed yet."
    echo "[I] Install"
    echo "[Q] Quit"
    printf "Select an option: "
    read -r option
    case "$option" in
        [Ii]) bash "$INSTALL_SCRIPT" ;;
        [Qq]) echo "Goodbye!" && exit 0 ;;
        *) echo "Invalid input." && exit 1 ;;
    esac
else
    echo "[INFO] Krita install detected."
    if grep -qE '\''^(FOSS_INSTALL|KRITA)='\'' "$VERSION_FILE"; then
        echo "[INFO] Installed versions:"
        grep -E '\''^(FOSS_INSTALL|KRITA)='\'' "$VERSION_FILE"
    fi
    echo "[Enter] Update"
    echo "[Del] Uninstall"
    echo "[Q] Quit"
    printf "Select an option: "
    IFS= read -rsn1 key
    printf "\n"
    case "$key" in
        "") bash "$INSTALL_SCRIPT" ;;
        $'\''\x7f'\'') bash "$UNINSTALL_SCRIPT" ;; # DEL key
        [Qq]) echo "Goodbye!" && exit 0 ;;
        *) echo "Invalid key." && exit 1 ;;
    esac
fi
'