SasamiVLC is now a modern desktop media player built using Compose Multiplatform (Kotlin/JVM) and the vlcj library. This project has shifted away from the legacy Electron + Svelte approach because Electron introduced Direct2D/Direct3D access control (DAC) issues when rendering LibVLC output inside a web-based window.
By using vlcj 4 and Java Native Access (JNA), SasamiVLC embeds the high-performance native LibVLC engine directly inside a JVM window scope. That lets it keep the original customized frameless aesthetic (backdrop glassmorphism, animated drifting orbs, and active audio spectrum bars) while delivering native hardware-accelerated video decoding and more stable video rendering.
Choosing Compose Multiplatform was intentional: it reduces the overhead of Electron and web views, improves render consistency for native video surfaces, and unlocks significant performance gains on desktop platforms. The current implementation is optimized for smoother GPU-backed playback and better window management than the old Electron path.
The core implementation uses the Kotlin/JVM stack. The player engine wrapper is located at: src/main/kotlin/com/sasami/vlc/player/VlcPlayer.kt.
- JDK 17 or higher (Ensure
JAVA_HOMEis set) - Native VLC 64-bit binaries (bundled in
resources/vlc/for Windows)
Run the application locally:
# On Windows / PowerShell
$env:JAVA_HOME="C:\Users\admin\scoop\apps\openjdk17\17.0.2-8"; .\gradlew.bat runTo compile and check syntax:
# On Windows / PowerShell
$env:JAVA_HOME="C:\Users\admin\scoop\apps\openjdk17\17.0.2-8"; .\gradlew.bat compileKotlinTo package the application into a distribution format (e.g. MSI installer):
# On Windows / PowerShell
$env:JAVA_HOME="C:\Users\admin\scoop\apps\openjdk17\17.0.2-8"; .\gradlew.bat packageUser preferences, volume level, active audio device, and persistent playlists are serialized to JSON matching the legacy schema and loaded on startup:
- Windows:
%APPDATA%\SasamiVLC\config.json
For a detailed look at the project architecture and original design philosophy, see ARCHITECTURE.md.

