SlopOS
Architecture

Userland And Windowing

Runtime, apps, compositor, and GUI protocol crates

Userland is a mix of low-level syscall wrappers, a libc layer, async runtime, protocol crates, and apps.

Runtime Layers

LayerSourceRole
Raw syscallsUserland syscall layerThin register-level wrappers
libclibc layerstd PAL shims, malloc, stdio, process, thread, signal, net
SlopRing runtimeRuntime crateSafe userland ring wrapper
slopfutRuntime crateFutures executor, reactor, I/O, time, signals, process waits
ProtocolProtocol crateDisplay protocol v2 typed wire format
WindowingWindowing runtimeSurfaces, buffers, event loop, raw drawing apps
AppKitApp toolkitRetained widget toolkit and controls

Apps

The root image currently builds apps and tools such as:

init shell terminal compositor roulette file_manager image_viewer
sysmon nmap ifconfig nc curl ping

The test image adds userland test binaries for fork, heap, image, ring, pidfd, signalfd, slopfut, terminal grid, clipboard, signal behavior, and more.

Display Protocol

The compositor protocol is versioned in slop-protocol. It includes:

  • Version handshake and capability discovery.
  • Surface create, attach, damage, commit, frame callbacks, and destroy.
  • Toplevel creation, title, app-id, configure/ack, and destroy.
  • Cursor shape requests.
  • Clipboard copy/paste using memfd buffers and SCM_RIGHTS where needed.
  • Interactive move/resize authorization through input serials.

Pixel buffers are memfd-backed and shared with the compositor. The windowing runtime provides raw window and surface APIs; AppKit builds widget trees and retained UI behavior on top.

On this page