Table of Contents

Clip Studio Assets on Linux (Bottles) — clipstudio:// Scheme Handler

This documents a working setup to open Clip Studio Assets links (``clipstudio:…``) on Linux when Clip Studio is installed inside Bottles (Flatpak). When you click the Download button on assets.clip-studio.com, the browser launches a ``clipstudio:assets.clip-studio.com/materialdownload/…`` URL. This handler forwards the URL into the Bottle so Clip Studio downloads the asset.


Requirements


Quick Diagnostics

Check your current default handler:

xdg-mime query default x-scheme-handler/clipstudio
gio mime x-scheme-handler/clipstudio

Test a manual open:

gio open "clipstudio://test"

List Bottles programs:

flatpak run --command=bottles-cli com.usebottles.bottles programs -b "Clip Studio"

Handler Overview

We install:

The handler debounces rapid clicks and avoids spawning endless Bottles sessions.


Packaging as a .deb

If you already have working files installed under ``/usr/local``:

You can build a Debian package that installs them to proper system locations under ``/usr``.

Build Script

nano ~/build-clipstudio-handler-deb.sh
chmod +x ~/build-clipstudio-handler-deb.sh
~/build-clipstudio-handler-deb.sh

(See the build script in the project notes; it copies from /usr/local into a staging tree and runs dpkg-deb.)

Install / Remove

sudo dpkg -i ~/clipstudio-scheme-handler_1.0.0_all.deb
 
sudo dpkg -r clipstudio-scheme-handler

After install/remove, refresh desktop DB if needed:

sudo update-desktop-database /usr/share/applications

Troubleshooting

Handler registered but gio open does nothing

Refresh desktop database:

sudo update-desktop-database /usr/share/applications
gio mime x-scheme-handler/clipstudio

Bottles gets stuck / ghost bwrap processes

Find and kill stuck runs:

pgrep -fa 'bwrap --args .*bottles-cli' || echo "clean"
# kill specific PIDs shown:
kill <PID1> <PID2>
kill -9 <PID1> <PID2> 2>/dev/null || true

Clip Studio opens but second click doesn’t

This usually indicates the handler is spawning multiple instances or the worker lock is held too long. Verify logs:

tail -n 200 ~/.cache/clipstudio/handler.log
tail -n 200 ~/.cache/clipstudio/worker.script.log

Notes