Skip to content

Instantly share code, notes, and snippets.

@micahlt
Created April 18, 2026 09:30
Show Gist options
  • Select an option

  • Save micahlt/3c97f834adaf688fe18344c0f546466c to your computer and use it in GitHub Desktop.

Select an option

Save micahlt/3c97f834adaf688fe18344c0f546466c to your computer and use it in GitHub Desktop.

CavalryOnLinux

A guide to running the Cavalry motion graphics software on Linux using Wine.

This guide has been tested exclusively on Wine 11.

Initial setup

Set up a new prefix

Create a new Wine prefix by creating a folder somewhere on your computer, preferably ~/.cavalry. Within that folder, run WINE_PREFIX=~/.cavalry winetricks which should initialize the prefix.

Install fonts and graphics improvements

In Winetricks, select "Install a Windows DLL or component", then check dxvk and click okay. After it is installed, click "Install a font" and check the corefonts option. Go through all of the font installs. Once they are complete, click "Change settings" and select the fontsmooth=rgb option. These improvements make Cavalry run much smoother.

Override DLLs

Open winecfg with WINEPREFIX=~/.cavalry winecfg

Go to the Libraries tab.

Under "New override for library," type icuuc and click Add. Do the same for icuin. Ensure they are both set to (Native, Builtin).

Install Cavalry

Run the Cavalry installer .msi file through Winetricks or through the command line.

Fix Canva sign-in

Create a new .desktop file to define the Cavalry URI protocol. With the text editor of your choice, create a new file at ~/.local/share/applications/cavalry-handler.desktop. The contents should look like the following:

[Desktop Entry]
Name=Cavalry Protocol Handler
Exec=env WINEPREFIX="/home/micahlt/.cavalry" wine "/home/micahlt/.cavalry/drive_c/Program Files/Cavalry/Cavalry.exe" "%u"
Type=Application
Terminal=false
NoDisplay=true
MimeType=x-scheme-handler/cavalry;

Then run:

update-desktop-database ~/.local/share/applications
xdg-settings set default-url-scheme-handler cavalry ~/.local/share/applications/cavalry-handler.desktop

Run the app

You should be good to run Cavalry, which you should be able to find from your system menu. Canva sign-in should work properly, and you should have GPU acceleration.

@micahlt
Copy link
Copy Markdown
Author

micahlt commented Apr 26, 2026

Very likely this will be an issue for someone with actual knowledge of Cavalry's architecture to build a patch or find a workaround for it. Possible a decompilation would help? Definitely depends on what technologies Cavalry is made with.

@Prother64
Copy link
Copy Markdown

Prother64 commented May 10, 2026

@erich-muller THANK YOU SO MUCH! Your solution helped me to get to a working Cavalry! I took a bit of everyone's solutions in this thread, mixed them together and finally, after SIX DAYS of trying to make Cavalry work in Linux, it works!

Notes:

  1. I took @micahlt's suggestion to delete cavalry-handler.desktop and added the Mimetype line directly into the Cavalry.desktop file. I also changed the path to Cavalry in the Exec line to "C:\\\\Program Files\\\\Cavalry\\\\Cavalry.exe" %u.
  2. As @erich-muller suggested, I added the Path= line to the .desktop file.
  3. Running xdg-settings set default-url-scheme-handler cavalry ~/.local/share/applications/wine/Programs/Cavalry.desktop didn't work for me at first, producing an "application cannot be found" error. However, I shortened it to xdg-settings set default-url-scheme-handler cavalry Cavalry.desktop which executed without error. You can also verify that the mimetype was correctly set by examining the mimeinfo.cache file in the same folder as the .desktop file.
  4. Important: I moved the Cavalry.desktop file from ~/.local/share/applications/wine/Programs to the applications folder, then ran update-desktop-database ~/.local/share/applications and the xdg-settings command. This is what seemed to finally unlock the door. Previously, the handler was being set as wine-Programs-Cavalry.desktop which seemed a bit sus to me, so I decided to simplify that by moving the file.

I should also note that. as I mentioned earlier in this thread, I'm running an atomic Linux distro (Project Bluefin). Running in Bottles didn't work, running in a container didn't work, but overlaying Wine and Winetricks worked (rpm-ostree install wine winetricks for anyone who needs that). I know it's not the preferred way to do things, but whatever. I care more about doing stuff than distro ideology. (IMO Wine really, really should be part of the Bluefin images.)

And... breathe...

followed your tutorial and now it doesnt open anymore MY FAULT, i put cavarly and not cavalry...

@haniffs
Copy link
Copy Markdown

haniffs commented May 10, 2026

@erich-muller THANK YOU SO MUCH! Your solution helped me to get to a working Cavalry! I took a bit of everyone's solutions in this thread, mixed them together and finally, after SIX DAYS of trying to make Cavalry work in Linux, it works!
Notes:

  1. I took @micahlt's suggestion to delete cavalry-handler.desktop and added the Mimetype line directly into the Cavalry.desktop file. I also changed the path to Cavalry in the Exec line to "C:\\\\Program Files\\\\Cavalry\\\\Cavalry.exe" %u.
  2. As @erich-muller suggested, I added the Path= line to the .desktop file.
  3. Running xdg-settings set default-url-scheme-handler cavalry ~/.local/share/applications/wine/Programs/Cavalry.desktop didn't work for me at first, producing an "application cannot be found" error. However, I shortened it to xdg-settings set default-url-scheme-handler cavalry Cavalry.desktop which executed without error. You can also verify that the mimetype was correctly set by examining the mimeinfo.cache file in the same folder as the .desktop file.
  4. Important: I moved the Cavalry.desktop file from ~/.local/share/applications/wine/Programs to the applications folder, then ran update-desktop-database ~/.local/share/applications and the xdg-settings command. This is what seemed to finally unlock the door. Previously, the handler was being set as wine-Programs-Cavalry.desktop which seemed a bit sus to me, so I decided to simplify that by moving the file.

I should also note that. as I mentioned earlier in this thread, I'm running an atomic Linux distro (Project Bluefin). Running in Bottles didn't work, running in a container didn't work, but overlaying Wine and Winetricks worked (rpm-ostree install wine winetricks for anyone who needs that). I know it's not the preferred way to do things, but whatever. I care more about doing stuff than distro ideology. (IMO Wine really, really should be part of the Bluefin images.)
And... breathe...

followed your tutorial and now it doesnt open anymore MY FAULT, i put cavarly and not cavalry...

Does the connection feature works?

@ysfchn
Copy link
Copy Markdown

ysfchn commented May 18, 2026

I use an immutable distro (Fedora Kinote 44) and I wanted to avoid layering Wine to the system permanently for now, so I created a distrobox, installed Wine & Winetricks with dnf install normally and performed the steps above. Just for the record, I've created the distrobox with NVIDIA integration enabled and with a custom home directory (I've put in ~/.local/share/<distrobox name>) to avoid polluting my own home.

Simply running Cavalry setup executable with wine in the distrobox without further arguments seemed to work, I was able to install and launch Cavalry, however I couldn't get past through sign-in pop-up because for some reason it couldn't launch the login URL in my browser, with the system notification telling host-spawn process was crashed.

Then I've found that you can actually tell Wine to dump the URL methods called by Cavalry (which surely there may be better ways to capture the link than this), therefore I was able to get the login parameters that way:

$ WINEDEBUG=+urlmon,+wininet wine "$HOME/.wine/drive_c/Program Files/Cavalry/Cavalry.exe" 2>&1 | grep --line-buffered 'urlmon:canonicalize_query'
01e4:trace:urlmon:canonicalize_query (000000000031FD50 0000000000803810 4b64 0): Canonicalized query string L"?code_challenge=0HsdV2tjU4sJ8rxXgW0L1E1PaCStnwY8H48MRq4rBt4&code_challenge_method=S256&response_type=code&client_id=OC-AZzcYrY5TZKz&scope=asset:write%20asset:read%20profile:read&state=5fcbf0e5-c8da-4435-8552-24201c9bd6a0&redirect_uri=https://cavalry.studio/canva-auth-redirect/" len=277

After copying the value starting with ?code_challenge=... and adding https://www.canva.com/api/oauth/authorize in front of it now I can visit that URL in the browser manually.

However, since Canva tries to launch cavalry:// URI right after login, I couldn't obtain the actual URI that Firefox tried to launch, so I've created a desktop entry to pass it to Cavalry installed in the distrobox (and updated the desktop database and made sure default handler is set to cavalry as told by other comments above):

[Desktop Entry]
Exec=/var/home/[USERNAME]/.local/bin/distrobox-enter -n [DISTROBOX NAME] -- bash -c 'wine "$HOME/.wine/drive_c/Program Files/Cavalry/Cavalry.exe" "%u"'
Name=Cavalry
NoDisplay=false
PrefersNonDefaultGPU=true
StartupNotify=true
Terminal=false
Type=Application
MimeType=x-scheme-handler/cavalry;

And after trying again to launch Cavalry with WINEDEBUG flags to obtain the URL, keeping Cavalry still open the whole time, adding https://www.canva.com/api/oauth/authorize in front of the login parameters, and when browser asked whether to open the app I chose Cavalry and now I was able to complete the sign-in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment