No description
  • Shell 80%
  • C 20%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Dawid Dirbach d5beb886dd Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe
Backup dzialajacego setupu (CachyOS/KWin Wayland/NVIDIA, 2026-08):
- patch wine 11.10 (present kick + managed popups) i build-wine.sh
- zmodyfikowany launcher cryinkfly (tryb Wine-fix) i fusion-frame-kicker
- handler adskidmgr:// na customowym wine (fix logowania)
- fix-navbar-flicker, swap_desktop_files, pliki .desktop
- apply-fixes.sh (idempotentny) + README z pelna dokumentacja

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DKDNRj2UTN9wxFL5C6T93w
2026-08-24 18:35:08 +02:00
bin Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe 2026-08-24 18:35:08 +02:00
desktop Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe 2026-08-24 18:35:08 +02:00
patches Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe 2026-08-24 18:35:08 +02:00
apply-fixes.sh Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe 2026-08-24 18:35:08 +02:00
build-wine.sh Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe 2026-08-24 18:35:08 +02:00
README.md Fusion 360 na Linuksie: poprawki + skrypty odtworzeniowe 2026-08-24 18:35:08 +02:00

Fusion 360 na Linuksie — poprawki i odtwarzanie instalacji

Backup wszystkich lokalnych poprawek potrzebnych, żeby Autodesk Fusion 360 działał na tym systemie tak, jak działa teraz — plus instrukcja odtworzenia całości od zera.

Środowisko odniesienia (2026-08): CachyOS (Arch), KDE Plasma Wayland (Fusion działa przez XWayland), NVIDIA (open modules, 610.57), KWin 6.7.4, host PIECYK. Fusion build 2702.1.58, instalacja skryptem cryinkfly w ~/.autodesk_fusion, prefiks wineprefixes/default, DXVK.

Z czego składa się setup

Element Gdzie Po co
Instalacja bazowa ~/.autodesk_fusion instalator cryinkfly Autodesk-Fusion-360-on-Linux (v2.1.6-Alpha)
Customowy Wine 11.10 ~/fusion-wine-build (źródła: ~/fusion-wine-source) patch patches/wine-11.10-fusion-kwin-wayland-nvidia.patch — patrz niżej
Launcher bin/autodesk_fusion_launcher.sh zmodyfikowany launcher cryinkfly: tryb Wine-fix (customowy wine, __NV_DISABLE_EXPLICIT_SYNC=1, start/stop kickera)
fusion-frame-kicker bin/fusion-frame-kicker.c wypychanie zawieszonej ostatniej klatki (XDamage)
Handler adskidmgr:// desktop/adskidmgr-opener.desktop.in powrót logowania z przeglądarki do Fusiona — musi używać customowego wine
fix-navbar-flicker bin/fix-navbar-flicker.sh wyłącza NavToolbar w profilu (migotanie paska nawigacji)
swap_desktop_files bin/swap_desktop_files.sh porządkuje zdublowane pliki .desktop po aktualizacjach Fusiona

Dlaczego te poprawki istnieją

1. Bug „zawieszonej ostatniej klatki" (hover highlight)

Pod XWayland/KWin/NVIDIA XWayland przestaje commitować powierzchnię do kompozytora, gdy aplikacja przestaje rysować — ostatnia klatka serii (np. zgaśnięcie podświetlenia hover) wisi w kolejce, aż nowe rysowanie zrestartuje cykl. Objaw: hover „zawiesza się" na obiekcie.

Naprawa jest dwuwarstwowa (obie warstwy są potrzebne):

  1. Patch wine (patches/wine-11.10-fusion-kwin-wayland-nvidia.patch, commit „winex11: Fusion 360 on KWin Wayland/NVIDIA fixes"):
    • is_window_managed: zarządzanie WSZYSTKIMI popupami bez belki — pod XWayland okna override-redirect kompozytują się nad zarządzanymi i ich input stacking rozjeżdża się z kolejnością renderowania (deadlock modalnego blockera);
    • client_surface_present: opóźniony o ~30 ms syntetyczny 1-pikselowy Expose („present kick") po ostatnim prezencie dużych powierzchni + cooldown 400 ms. Współpracuje z __NV_DISABLE_EXPLICIT_SYNC=1 ustawianym w launcherze (explicit sync NVIDII zawiesza commity XWayland dla pojedynczych klatek).
  2. fusion-frame-kicker (od 2026-08-20, po update nvidia 610.57 / kwin 6.7.4 / wayland 1.26 sam patch przestał wystarczać): proces C nasłuchujący XDamage; po 40 ms ciszy przepisuje 1 piksel okna Fusiona, wypychając zaległą klatkę. Launcher startuje go z 90-sekundowym opóźnieniem (patrz niżej) i ubija przy wyjściu. Log: ~/.autodesk_fusion/logs/frame-kicker.log.

2. Logowanie: handler adskidmgr://

Po zalogowaniu w przeglądarce Autodesk przekierowuje na URL adskidmgr://..., który system oddaje handlerowi (~/.local/share/applications/wine/Programs/Autodesk/*/adskidmgr-opener.desktop), a ten uruchamia AdskIdentityManager.exe w prefiksie, przekazując token do działającego Fusiona.

Krytyczne: handler musi używać customowego wine i jego wineservera (WINESERVER=~/fusion-wine-build/bin/wineserver). Systemowy wine innej wersji nie połączy się z działającym wineserverem („wine client error: version mismatch") i callback umiera po cichu — przeglądarka się otwiera, ale logowanie nigdy nie wraca do Fusiona (przypadek z 2026-08-24).

winemenubuilder potrafi zregenerować ten plik przy aktualizacji Fusiona i przywrócić gołe wine — dlatego apply-fixes.sh zostawia plik jako read-only (444). Gdyby mimo to wrócił zły handler — ponownie uruchom ./apply-fixes.sh.

3. Kicker a logowanie SSO

Gdy kicker działa od startu Fusiona, klient SSO dostaje „Timed out after 15s while waiting for SSO process to be ready" (error 3213) i Fusion pokazuje dialog „antivirus is likely preventing you from signing in", po czym się zamyka (2 przypadki 2026-08-20; starty bez kickera zawsze OK — mocna korelacja, mechanizm niewyjaśniony). Stąd 90 s opóźnienia startu kickera w launcherze. Jeśli logujesz się później (np. po wylogowaniu) — ubij kickera na czas logowania: pkill -f '/fusion-frame-kicker$' (wróci przy następnym starcie Fusiona).

Odtworzenie od zera

  1. Instalacja bazowa (cryinkfly). Pobierz i uruchom instalator z https://codeberg.org/cryinkfly/Autodesk-Fusion-360-on-Linux (wersja odniesienia: 2.1.6-Alpha), instalując do ~/.autodesk_fusion z DXVK. Instalacja przejdzie z systemowym wine — poprawki nakładamy po niej. Nie loguj się jeszcze.
  2. Customowy wine: ./build-wine.sh — klonuje wine wine-11.10, nakłada patch, buduje z flagami --enable-archs=i386,x86_64 --disable-tests (nowy WoW64, mingw-w64) i instaluje do ~/fusion-wine-build. Wymaga base-devel, mingw-w64-gcc i zależności budowania wine; ccache opcjonalny.
  3. Poprawki: ./apply-fixes.sh — kopiuje skrypty do ~/.autodesk_fusion/bin, kompiluje kickera (gcc -O2 ... -lXdamage -lXfixes -lX11), ustawia tryb Wine-fix (linia 4 logs/wineprefixes.log), instaluje oba pliki .desktop i rejestruje handler adskidmgr.
  4. Start i logowanie: ~/.autodesk_fusion/bin/autodesk_fusion_launcher.sh, zaloguj się w ciągu 90 s (zanim wystartuje kicker) albo ubij kickera na czas logowania (punkt 3 wyżej).
  5. Opcjonalnie, po zalogowaniu: bin/fix-navbar-flicker.sh (wymaga istniejącego profilu użytkownika w prefiksie).

Rozwiązywanie problemów

Objaw Przyczyna / naprawa
Logowanie: przeglądarka się otwiera, nic nie wraca do Fusiona handler adskidmgr używa złego wine (version mismatch z wineserverem) → ./apply-fixes.sh; diagnoza: WINEPREFIX=~/.autodesk_fusion/wineprefixes/default wine cmd /c echo test przy działającym Fusionie
„antivirus is likely preventing you from signing in" kicker działał podczas logowania → pkill -f '/fusion-frame-kicker$' i spróbuj ponownie
Hover highlight zawiesza się na ostatniej klatce kicker nie działa (pgrep -f '/fusion-frame-kicker$') lub Fusion odpalony bez trybu Wine-fix (linia 4 wineprefixes.log); sprawdź logs/frame-kicker.log
Migotanie paska nawigacji bin/fix-navbar-flicker.sh
Zdublowane wpisy menu po aktualizacji Fusiona bin/swap_desktop_files.sh

Pułapki (nauczone bólem)

  • pgrep/pkill -x nie złapie kickera — nazwa procesu ma 16 znaków, comm ucina do 15. Zawsze -f '/fusion-frame-kicker$'.
  • pgrep -f Fusion360.exe uruchomione ze skryptu łapie własne polecenie (wzorzec jest w cmdline). Używać pgrep -f 'Fusion360[.]exe'.
  • NVIDIA obfuskuje nazwy zmiennych środowiskowych w binarkach — brak stringa NV_DISABLE_EXPLICIT_SYNC w libce niczego nie dowodzi.
  • Pliki .desktop w desktop/*.in mają placeholder __HOME__ — instalowane są przez apply-fixes.sh (nie kopiować ręcznie bez podmiany).
  • Przy nawrocie buga klatek po aktualizacjach sterowników: nieprzetestowana opcja odwrotna to downgrade nvidia-utils do 610.43 (cache pacmana).