Introduction
Installation and Usage Guide for Serif's Affinity Graphics Suite on Linux using ElementalWarrior's Wine fork.
This guide was originally posted on the Affinity forum but was moved to a dedicated website due to the limitations of said forum.
It aims to provide step-by-step instructions for compiling Wine and running any Affinity software directly on your Linux PC.
This artwork was made entirely in Affinity Publisher and Photo, both running on my Linux desktop. You can see the specs of said system in the running terminal thanks to neofetch.
Preamble
Instead of installing Wine system-wide, we will be using "rum" to manage your Wine builds without interfering with the one packaged by your distribution. Why use rum and how to use bottles instead is described in the Q&A.
Affinity software version 1.10.4 and later releases require
.winmd
files from an existing Windows 10+ install.$HOME/
may need to be replaced by your full home directory path/home/USERNAME/
in order to make it absolute. This is a common issue with non-POSIX compliant shells like nushell.If you happen to use NixOS or the Nix package manager, you probably want to look at affinity crimes on github, it aims to offer an easy, scripted and fully reproducible setup with Nix.
Dependencies
To compile Wine, you will need the following build dependencies:
Dependencies for Different Package Managers
The following lists are every build depencencies needed, they assumes an up to date 64-bits system.
pacman -Syu alsa-lib alsa-plugins autoconf bison cups desktop-file-utils flex fontconfig freetype2 gcc-libs gettext gnutls gst-plugins-bad gst-plugins-base gst-plugins-base-libs gst-plugins-good gst-plugins-ugly libcups libgphoto2 libpcap libpulse libunwind libxcomposite libxcursor libxi libxinerama libxkbcommon libxrandr libxxf86vm mesa mesa-libgl mingw-w64-gcc opencl-headers opencl-icd-loader pcsclite perl samba sane sdl2 unixodbc v4l-utils vulkan-headers vulkan-icd-loader wayland wine-gecko wine-mono
The full dependencies list can be found in the PKGBUILD
file used by Arch for distribution.
apt install bison dctrl-tools flex fontforge-nox freeglut3-dev gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 gettext icoutils imagemagick libasound2-dev libcapi20-dev libcups2-dev libdbus-1-dev libfontconfig-dev libfreetype-dev libgettextpo-dev libgl-dev libglu1-mesa-dev libgnutls28-dev libgphoto2-dev libgstreamer-plugins-base1.0-dev libkrb5-dev libldap2-dev libncurses-dev libopenal-dev libosmesa6-dev libpcap0.8-dev libpcsclite-dev libpulse-dev librsvg2-bin libsdl2-dev libssl-dev libudev-dev libunwind-dev libusb-1.0-0-dev libv4l-dev libvulkan-dev libwayland-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxkbregistry-dev libxml-libxml-perl libxmu-dev libxrandr-dev libxrender-dev libxt-dev libxxf86dga-dev libxxf86vm-dev libz-mingw-w64-dev lzma ocl-icd-opencl-dev pkg-config quilt sharutils unicode-idna unixodbc-dev unzip
The full dependencies list can be found in the control
file used by Debian for distribution.
dnf install alsa-lib-devel audiofile-devel autoconf bison chrpath cups-devel dbus-devel desktop-file-utils flex fontconfig-devel fontforge fontpackages-devel freeglut-devel freetype-devel gcc gettext-devel giflib-devel gnutls-devel gsm-devel gstreamer1-devel gstreamer1-plugins-base-devel icoutils libappstream-glib libgphoto2-devel libieee1284-devel libpcap-devel librsvg2 librsvg2-devel libstdc++-devel libv4l-devel libX11-devel libXcomposite-devel libXcursor-devel libXext-devel libXi-devel libXinerama-devel libXmu-devel libXrandr-devel libXrender-devel libXxf86dga-devel libXxf86vm-devel make mesa-libGL-devel mesa-libGLU-devel mesa-libOSMesa-devel mingw32-FAudio mingw32-gcc mingw32-lcms2 mingw32-libpng mingw32-libtiff mingw32-libxml2 mingw32-libxslt mingw32-vkd3d mingw32-vulkan-headers mingw64-FAudio mingw64-gcc mingw64-lcms2 mingw64-libpng mingw64-libtiff mingw64-libxml2 mingw64-libxslt mingw64-vkd3d mingw64-vulkan-headers mingw64-zlib mpg123-devel ocl-icd-devel opencl-headers openldap-devel perl-generators pulseaudio-libs-devel sane-backends-devel SDL2-devel systemd-devel unixODBC-devel vulkan-devel wine-mono
The full dependencies list can be found in the .spec
file used by Fedora for distribution.
zypper install alsa-devel autoconf bison cups-devel dbus-1-devel desktop-file-utils egl FAudio-devel fdupes flex fontconfig-devel freeglut-devel freetype2-devel giflib-devel git gl glib2-devel glu gstreamer-plugins-base-devel krb5-devel libcapi20-devel libgnutls-devel libgphoto2-devel libgsm-devel libjpeg-devel liblcms2-devel libpcap-devel libpng-devel libpulse-devel libtiff-devel libudev libusb-1.0 libv4l-devel libxml2-devel libxslt-devel mingw32-cross-gcc mingw32-libz mingw32-zlib-devel mingw64-cross-gcc mingw64-zlib-devel mpg123-devel ncurses-devel ocl-icd-devel openal-soft-devel openldap2-devel openssl-devel osmesa pcsc-lite-devel pkgconfig sane-backends-devel SDL2-devel systemd-devel update-desktop-files valgrind-devel vkd3d-devel vulkan-devel vulkan-headers vulkan-tools wayland-client wine-mono x11 x11-xcb xcb xcb-dri3 xcb-present xcb-xfixes xcomposite xcursor xext xfixes xi xinerama xkbcommon xkbregistry xrandr xrender xxf86vm zlib
The full dependencies list can be found in the .spec
file used by openSUSE for distribution.
Installing Additional Requirements
You will also need to install Git, Winetricks, and rum to complete the setup.
Install Git and Winetricks:
Both Git and Winetricks are available from your package manager and can be installed using the following commands:
pacman -S git winetricks
apt install git winetricks
dnf install git winetricks
zypper install git winetricks
Install rum:
To install rum, clone the repository to a directory of your choice:
git clone https://gitlab.com/xkero/rum $HOME/Documents/rum
Copy the
rum
Script to Your Path:You need to copy the
rum
script to a directory included in your system's$PATH
environment variable to use it easily.First, check your current
$PATH
directories:echo $PATH
Choose a directory from the list (e.g.,
/usr/local/bin
) and copy therum
script there:cp $HOME/Documents/rum/rum /usr/local/bin/rum
You might need to make the
rum
script executable with chmod:chmod +x /usr/local/bin/rum