Skip to main content

Universal CLI installer for Affinity products on Linux

Project description

Affinity CLI Hero

๐ŸŽจ Affinity CLI

Universal Linux Installer for Affinity Products

Professional, One-Command Installation for Creative Professionals

Python 3.8+ License: PPL Release Tests Code Style

Features โ€ข Quick Start โ€ข Installation โ€ข Documentation โ€ข Contributing


๐Ÿง Linux users deserve professional creative tools.


๐ŸŒŸ What is Affinity CLI?

Affinity CLI is a powerful, open-source command-line tool that automates the complete installation of Affinity Photo, Designer, and Publisher on Linux distributions. Version v1.0.0 is the first polished milestoneโ€”distilled from months of late-night Wine experiments, community streams, and field engagements.

๐Ÿ“Œ Everything visible here is served straight from release/v1.0.0-clean. To keep the release snapshot pristine, add future commits to that branch instead of master so the landing view stays tidy for everyone.

# One command to rule them all
affinity-cli install

No more manual Wine configuration. No more dependency hunting. Just professional creative tools on Linux. ๐Ÿš€

๐Ÿ”ฅ Why creators are hyped about v1.0.0

  • Battle-tested automation โ€“ the same playbook we ran internally is now a single affinity-cli install command.
  • Cross-distro parity โ€“ Ubuntu, Fedora, Arch, SUSE, and more all follow the exact same installer story.
  • Confidence-first UX โ€“ installer discovery, verbose status, and --dry-run show every step before touching a Wine prefix.

โœจ Transform your Linux system into a creative powerhouse

New hero artwork highlights the v1.0.0 release energyโ€”swap the file at .github/assets/affinity-cli-hero.png whenever you refresh the brand.


๐ŸŽฏ Features

๐Ÿง Universal Support

Auto-detects 15+ distros
Debian โ€ข Fedora โ€ข Arch โ€ข SUSE

โšก Full Automation

One command installs
everything you need

๐Ÿท Smart Wine Setup

Optimized configuration
with .NET Framework

๐ŸŽจ Desktop Integration

Menu entries, aliases,
native experience

๐Ÿ’ป Beautiful CLI

Rich progress bars
and clear messages

โœ… Well-Tested

27 unit tests
100% passing


๐Ÿ–ผ๏ธ Supported Products

Product Versions Status
๐Ÿ“ธ Affinity Photo v1 โ€ข v2 โ€ข v3 โœ… Supported
๐ŸŽจ Affinity Designer v1 โ€ข v2 โ€ข v3 โœ… Supported
๐Ÿ“„ Affinity Publisher v1 โ€ข v2 โ€ข v3 โœ… Supported

๐Ÿš€ Quick Start

โšก Installation (3 simple steps)

# 1๏ธโƒฃ Clone the repository
git clone https://github.com/ind4skylivey/affinity-cli.git
cd affinity-cli

# 2๏ธโƒฃ Install the CLI tool
pip install -e .

# 3๏ธโƒฃ Check your system status
affinity-cli status

๐ŸŽฌ Launch Affinity Products

# Install Affinity products (interactive mode)
affinity-cli install

# Or specify installer location
affinity-cli install --installer-path ~/Downloads

๐ŸŽ‰ That's it! Launch from:

# Terminal
affinity-photo          # Launch Affinity Photo
affinity-designer       # Launch Affinity Designer
affinity-publisher      # Launch Affinity Publisher

# Or from your application menu! ๐ŸŽจ

In under five minutes you can go from a clean Linux install to launching Affinity as if it shipped with your distro. That same moment of disbelief people share on streams and meetups? This workflow makes it repeatable.


๐Ÿง Supported Distributions

Ubuntu
Ubuntu
20.04 โ€ข 22.04 โ€ข 24.04
Debian
Debian
11 โ€ข 12 (Bookworm)
Fedora
Fedora
38 โ€ข 39 โ€ข 40+
Arch Linux
Arch Linux
Rolling Release
Linux Mint
Linux Mint
20.x โ€ข 21.x
Manjaro
Manjaro
All versions
openSUSE
openSUSE
Leap โ€ข Tumbleweed
More Distros
More!
Pop!_OS โ€ข Elementary

๐Ÿ’Ž Why Choose Affinity CLI?

๐Ÿ†š Comparison with Alternatives

Feature ๐ŸŽจ Affinity CLI Lutris Bottles Manual Wine
One-command install โœ… โŒ โŒ โŒ
Auto distro detection โœ… โŒ โŒ โŒ
Auto dependency install โœ… โŒ โŒ โŒ
Desktop integration โœ… โœ… โœ… โŒ
No external managers โœ… โŒ โŒ โœ…
Lightweight โœ… โŒ โŒ โœ…
Built for Affinity โœ… โŒ โŒ โŒ
CLI + GUI launcher โœ… โœ… โœ… โŒ
Open source โœ… โœ… โœ… โœ…

๐Ÿ† Affinity CLI = Best of all worlds


๐Ÿ“š Documentation

๐Ÿ“– Installation Methods

From Source (Development)

git clone https://github.com/ind4skylivey/affinity-cli.git
cd affinity-cli
pip install -e .

From PyPI (Coming Soon)

pip install affinity-cli

From AUR (Arch Users - Coming Soon)

yay -S affinity-cli
โš™๏ธ Command Reference

Installation Commands

# Interactive installation
affinity-cli install

# Specify installer path
affinity-cli install --installer-path ~/Downloads

# Install specific products
affinity-cli install --products photo,designer

# Custom Wine prefix
affinity-cli install --prefix ~/.my-affinity

# Skip dependency check (advanced)
affinity-cli install --skip-dependencies

Management Commands

# Check system status
affinity-cli status
affinity-cli status --verbose

# Repair broken installation
affinity-cli repair
affinity-cli repair --product photo

# Uninstall products
affinity-cli uninstall
affinity-cli uninstall --purge  # Complete removal

# Generate system report
affinity-cli report
affinity-cli report --output report.json

Information Commands

# Show version
affinity-cli --version

# Show help
affinity-cli --help
affinity-cli install --help

# Welcome message
affinity-cli welcome
๐Ÿ”ง Advanced Configuration

Custom Configuration File

Location: ~/.config/affinity-cli/config.yml

wine:
  version: "latest"
  prefix_path: "~/.wine-affinity"
  graphics_api: "vulkan"

affinity:
  products:
    - photo
    - designer
  auto_detect_installers: true

system:
  enable_multiarch: true
  install_dependencies: true
๐Ÿ› Troubleshooting

Common Issues

Issue: Installation fails on dependency step

# Update package lists first
sudo apt update      # Ubuntu/Debian
sudo dnf update      # Fedora
sudo pacman -Sy      # Arch

Issue: Products don't appear in menu

# Rebuild desktop database
affinity-cli repair

Issue: Wine prefix creation hangs

# Kill wine processes and retry
pkill wine
affinity-cli repair

Performance issues?

  • Check GPU drivers: vulkaninfo
  • Monitor resources: htop
  • See logs: ~/.config/affinity-cli/logs/

๐Ÿ› ๏ธ How It Works

graph LR
    A[๐Ÿš€ Start] --> B[๐Ÿง Detect Distro]
    B --> C[๐Ÿ“ฆ Install Dependencies]
    C --> D[๐Ÿท Setup Wine]
    D --> E[โš™๏ธ Create Prefix]
    E --> F[๐ŸŽจ Install Affinity]
    F --> G[๐Ÿ–ฅ๏ธ Desktop Integration]
    G --> H[โœ… Done!]
    
    style A fill:#4CAF50,stroke:#2E7D32,color:#fff
    style H fill:#4CAF50,stroke:#2E7D32,color:#fff
    style B fill:#2196F3,stroke:#1565C0,color:#fff
    style C fill:#FF9800,stroke:#E65100,color:#fff
    style D fill:#9C27B0,stroke:#6A1B9A,color:#fff
    style E fill:#F44336,stroke:#C62828,color:#fff
    style F fill:#E91E63,stroke:#AD1457,color:#fff
    style G fill:#00BCD4,stroke:#00838F,color:#fff

๐Ÿ”„ Installation Pipeline

  1. ๐Ÿง Detection Phase - Identifies your Linux distro and package manager
  2. ๐Ÿ“ฆ Preparation Phase - Installs system dependencies (wine, libraries, fonts)
  3. ๐Ÿท Wine Setup Phase - Downloads and configures optimized Wine build
  4. โš™๏ธ Configuration Phase - Creates isolated Wine prefix with .NET Framework
  5. ๐ŸŽจ Installation Phase - Silently installs Affinity products
  6. ๐Ÿ–ฅ๏ธ Integration Phase - Creates menu entries and bash aliases
  7. โœ… Verification Phase - Tests installation and generates report

๐ŸŽฏ Requirements

๐Ÿ’ป System Requirements

  • OS: Linux (any major distro)
  • Python: 3.8 or higher
  • RAM: 4GB minimum (8GB recommended)
  • Disk: ~5GB free space
  • Network: Internet connection

๐Ÿ“ฅ What You Need

  • Affinity Installers (.exe files)
  • Valid License from Serif
  • sudo access (for dependencies)

๐Ÿ—๏ธ Project Architecture

๐Ÿ“‚ Click to view project structure
affinity-cli/
โ”œโ”€โ”€ ๐Ÿ“ฆ affinity_cli/          # Main package
โ”‚   โ”œโ”€โ”€ ๐Ÿง  core/               # Core functionality
โ”‚   โ”‚   โ”œโ”€โ”€ distro_detector.py     # OS detection
โ”‚   โ”‚   โ”œโ”€โ”€ dependency_manager.py  # Package management
โ”‚   โ”‚   โ”œโ”€โ”€ wine_manager.py        # Wine setup
โ”‚   โ”‚   โ”œโ”€โ”€ prefix_manager.py      # Wine prefix config
โ”‚   โ”‚   โ”œโ”€โ”€ affinity_installer.py  # Product installation
โ”‚   โ”‚   โ””โ”€โ”€ desktop_integration.py # Desktop entries
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ ๐ŸŽฎ commands/           # CLI commands
โ”‚   โ”‚   โ”œโ”€โ”€ install.py         # Install command
โ”‚   โ”‚   โ”œโ”€โ”€ status.py          # Status command
โ”‚   โ”‚   โ”œโ”€โ”€ uninstall.py       # Uninstall command
โ”‚   โ”‚   โ”œโ”€โ”€ repair.py          # Repair command
โ”‚   โ”‚   โ””โ”€โ”€ report.py          # Report command
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ ๐Ÿ› ๏ธ utils/              # Utilities
โ”‚       โ””โ”€โ”€ logger.py          # Logging
โ”‚
โ”œโ”€โ”€ ๐Ÿงช tests/                  # Unit tests (27 passing)
โ”œโ”€โ”€ ๐Ÿค– .github/workflows/      # CI/CD automation
โ”œโ”€โ”€ ๐Ÿ“– README.md               # This file
โ”œโ”€โ”€ ๐Ÿ“œ LICENSE                 # MIT License
โ””โ”€โ”€ ๐Ÿค CONTRIBUTING.md         # Contribution guide

Code Statistics:

  • ๐Ÿ“Š ~2,800 lines of Python code
  • โœ… 27 unit tests (all passing)
  • ๐Ÿ“ฆ 6 core modules
  • ๐ŸŽฎ 5 CLI commands
  • ๐Ÿ“š 4 documentation files

๐Ÿค Contributing

We โค๏ธ contributions! This project thrives on community support.

๐ŸŒŸ How You Can Help

๐Ÿ› Report Bugs

Found an issue?
Open an issue

๐Ÿ’ป Write Code

Submit pull requests
See CONTRIBUTING.md

๐Ÿงช Test & Feedback

Try on different distros
Share your experience

๐Ÿ“– Improve Docs

Help others learn
Update documentation

โญ Star the Repo

Show your support
Help us grow!

๐Ÿ“ฃ Spread the Word

Tell other Linux users
Share on social media

๐Ÿš€ Quick Contribution Setup

# Fork and clone
git clone https://github.com/yourusername/affinity-cli.git
cd affinity-cli

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install in dev mode
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Make changes and submit PR! ๐ŸŽ‰

๐Ÿ“Š Project Stats

GitHub stars GitHub forks GitHub watchers

GitHub issues GitHub pull requests GitHub last commit


๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

Important: This project is not affiliated with Serif Labs (makers of Affinity). It's a community-driven effort to enable Affinity products on Linux.


๐Ÿ™ Acknowledgments

Special Thanks To:

๐Ÿท Wine Project - For making Windows apps run on Linux
๐ŸŽจ Serif Labs - For creating amazing Affinity products
๐Ÿง Linux Community - For continuous support and testing
โšก ElementalWarrior - For Affinity-optimized Wine builds


๐Ÿ’ฌ Community & Support

๐Ÿ”— Connect With Us

GitHub Issues GitHub Discussions Twitter

๐Ÿ“ฌ Get Help

  • ๐Ÿ’ฌ GitHub Discussions - Ask questions, share ideas
  • ๐Ÿ› GitHub Issues - Report bugs, request features
  • ๐Ÿ“ง Email - For private inquiries
  • ๐ŸŒ Reddit - r/linux, r/linuxgaming, r/AffinityPhoto

๐ŸŽจ Vision & Mission

"Linux users deserve professional creative tools. This project proves it's possible."

๐ŸŽฏ Our Goals

  1. ๐Ÿš€ Make Affinity installation effortless for Linux users
  2. ๐Ÿ“Š Demonstrate demand for official Linux support from Serif
  3. ๐Ÿค Build a community around professional Linux creative tools
  4. ๐ŸŒŸ Inspire official Affinity Linux support

๐Ÿ—บ๏ธ Roadmap

๐Ÿ”ฎ Future Plans

โœ… Completed (v1.0.0-beta)

  • Core installation system
  • Multi-distro support
  • Desktop integration
  • CLI interface
  • Unit tests & CI/CD

๐Ÿšง In Progress (v1.1.0)

  • PyPI publication
  • Extended distro testing
  • Performance optimizations
  • Enhanced error messages

๐Ÿ”ฎ Planned (v2.0.0)

  • GUI installer option
  • Flatpak/Snap packages
  • AUR package (Arch)
  • GPU-specific optimizations
  • Proton support (experimental)
  • Multi-language support

๐ŸŒŸ Dream Features

  • Official Serif collaboration
  • Native Linux Affinity (one day!)

๐ŸŒˆ Show Your Support

โญ Star this repo if Affinity CLI helped you!

๐Ÿ”„ Share with other Linux creative professionals

๐Ÿ’ฌ Tell Serif that Linux users exist and we want official support!


Together, we can make Linux a first-class platform for creative professionals. ๐Ÿง๐ŸŽจ


Star History Chart



๐Ÿš€ Ready to revolutionize Linux creative workflows?

Get Started Now โฌ†๏ธ | View Releases ๐Ÿ“ฆ | Report Issues ๐Ÿ›


Made with โค๏ธ by ind4skylivey and the Linux community

Make Serif notice. Make Windows jealous. Make Linux creators powerful. ๐Ÿ”ฅ

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

affinity_cli-1.1.1.tar.gz (5.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

affinity_cli-1.1.1-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

File details

Details for the file affinity_cli-1.1.1.tar.gz.

File metadata

  • Download URL: affinity_cli-1.1.1.tar.gz
  • Upload date:
  • Size: 5.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for affinity_cli-1.1.1.tar.gz
Algorithm Hash digest
SHA256 9c868c60f648b794953e88e11cc69cc656706f58a7e4a7384fdbbd9e4c8427c4
MD5 c0f2fa731d9c21887c410f61d89aa429
BLAKE2b-256 09d7e2eec4c913c23b9b4922c3ad4f1f64fcd4b1f389edda0f8d2d84ed727e91

See more details on using hashes here.

File details

Details for the file affinity_cli-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: affinity_cli-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 36.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for affinity_cli-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ee9ca8929aceb3661063c01f498ced7176c9a535468739b1d44ffafe7a9f2924
MD5 30711c9c8440e4e9ea749a58cbe9aafd
BLAKE2b-256 c965d42f97830201f28d91cd78cfd424690cad9d14dde0008ec39fe5dea25d4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page