ARCHITECTURE

Three JVMs. One frame loop.

A minimal-heap supervisor spawns the compositor and shell as separate, capability-scoped processes. The compositor owns every rendering decision; the shell only decides what to draw.

FRAME PIPELINE

Per page-flip event.

No frame timer — page-flip events pace rendering. The display hardware itself drives the loop, giving zero jitter at any refresh rate including VRR.

01
epoll / io_uring
DRM flip complete triggers frame
02
Scene graph
Build surface entries, compute damage
03
Pipeline select
Direct, Planes, Damage or Full
04
Render + present
Vulkan draw, DRM atomic commit
05
Throttle report
Deadline scheduler, VRR pacing
JVM 0 - SUPERVISOR
sabas-bootstrap
Spawns compositor + shell via ProcessBuilder
Per-child Linux capability scoping (setpriv)
Crash-limited auto-restart (10 / 15 attempts)
Parallel launch - shell prewarms while compositor binds
Binary mode: GraalVM-native, no JVM overhead
JVM 1 - COMPOSITOR
sabas-compositor
GPU device selection
DRM/KMS, atomic page flips
Frame loop (io_uring transport)
Scene graph, window management
Input routing (libinput)
Compositing pipeline (4 modes)
WAYLAND SOCKET
DMA-BUF FD
JVM 2 - SHELL
sabas-shell
Panel content, widgets
Workspace and app launching
Session persistence
Own VulkanDevice, own GC
Zero display decisions
GC pause never freezes display
SCANOUT PATH SELECTION - PER OUTPUT, AT HOTPLUG
A
same-GPU zero-copy
B
modifier zero-copy
C
dumb buffer fallback
D
PRIME import
E
GPU blit
F
GBM scanout
HOW IT COMPARES

Same job, different engine.

Every major Linux compositor is written in C or C++ with a native rendering path. Sabas OS's whole graphics pipeline runs on the JVM instead.

Sabas OS GNOME
Mutter / Linux
KDE Plasma
KWin / Linux
Sway
wlroots / Linux
Windows 11
DWM / DirectX
macOS Sequoia
Quartz / Metal
Implementation languageJava 25 (Panama FFM)CC++CC / C++C / Obj-C / Swift
Source availablefully open sourceopen sourceopen sourceopen sourceproprietaryproprietary
Native glue / C shimsNone--wlroots (C)Win32 / COMCoreGraphics (C)
GPU / display pathDirect Vulkan + DRM/KMSOpenGL/Vulkan via CoglOpenGL/Vulkan via KWinOpenGL via wlrootsDirectX 12 / DXGIMetal / CoreAnimation
Zero-copy multi-GPU scanout6 selectable paths (A-F)driver-dependentdriver-dependentdriver-dependentdriver-dependentApple Silicon only
Render-loop memory modelGC-free, pooled buffersmanual (C)manual (C++)manual (C)manual (C++)ARC / manual (C)
Shell / compositor isolation3 supervised JVMssingle processsingle processsingle processkernel + csrss.exeWindowServer (single)
Workspace namespace isolation7 Linux namespacesnonenonenonepartial (AppContainer)partial (sandbox)
Telemetry / data collectionzero, none at allminimal, opt-outminimal, opt-outnoneextensive, opt-outmoderate, opt-out
Built-in AI subsystemlocal Ollama + MCPnonenonenoneCopilot (cloud)Apple Intelligence (cloud)
App toolkitnative Java render treeGTKQt / QMLclient-dependentWin32 / WinUI 3AppKit / SwiftUI
Hardware vendor lock-innone - any Vulkan GPUnonenonenonex86-64 onlyApple hardware only