FreeBSD-first X11 workstation environment built around FVWM3
Find a file
2026-08-29 03:38:40 +03:00
audio audio: add compact status and routing control 2026-08-15 14:21:04 +03:00
battery audio: add compact status and routing control 2026-08-15 14:21:04 +03:00
capture ports: package Xenolith runtime components 2026-08-27 16:24:04 +03:00
clock clock: add panel clock and calendar popup 2026-08-15 07:15:06 +03:00
credentials nheko: render image overlays without a compositor 2026-08-25 05:30:41 +03:00
display display: classify internal outputs without ConnectorType 2026-08-28 11:02:30 +03:00
fonts kde: add application fleet and Unicode fallback 2026-08-22 08:18:49 +03:00
fullscreen fullscreen: survive panel recreation 2026-08-21 02:57:58 +03:00
fvwm fvwm: add native Xenolith root menu 2026-08-27 11:30:36 +03:00
input input: add per-device libinput policy 2026-08-21 07:49:04 +03:00
install installer: add guarded XLibre migration 2026-08-29 03:38:23 +03:00
kde-compat kde: add application fleet and Unicode fallback 2026-08-22 08:18:49 +03:00
language input: add XKB layouts and language indicator 2026-08-21 06:57:23 +03:00
launcher fvwm: add native Xenolith root menu 2026-08-27 11:30:36 +03:00
lock lock: render wallpaper in secure saver 2026-08-23 07:49:24 +03:00
notifications notifications: use passive normal notification frame 2026-08-18 04:03:18 +03:00
packages ports: package Xenolith runtime components 2026-08-27 16:24:04 +03:00
panel panel: polish Start launcher and suppress resize feedback 2026-08-27 10:25:43 +03:00
ports xkb: apply evdev maps before FVWM grabs 2026-08-29 03:38:40 +03:00
qt-style session: enable Xenolith Qt style 2026-08-14 03:34:43 +03:00
session xkb: apply evdev maps before FVWM grabs 2026-08-29 03:38:40 +03:00
switcher terminal: add Xenolith downstream QTerminal 2026-08-23 06:38:48 +03:00
terminal terminal: add Xenolith downstream QTerminal 2026-08-23 06:38:48 +03:00
tests installer: separate Xenolith and FreeBSD package resolution 2026-08-28 11:02:15 +03:00
tray tray: add XEmbed and SNI panel integration 2026-08-14 09:36:58 +03:00
wallpaper lock: render wallpaper in secure saver 2026-08-23 07:49:24 +03:00
xkb xkb: apply evdev maps before FVWM grabs 2026-08-29 03:38:40 +03:00
.gitattributes ports: establish Xenolith Poudriere overlay 2026-08-25 10:10:11 +03:00
.gitignore installer: separate Xenolith and FreeBSD package resolution 2026-08-28 11:02:15 +03:00
install.sh installer: add guarded XLibre migration 2026-08-29 03:38:23 +03:00
LICENSE project: declare BSD-2-Clause license 2026-08-25 10:14:09 +03:00
README.md installer: add guarded XLibre migration 2026-08-29 03:38:23 +03:00

Xenolith

Xenolith is an X11-native desktop and workstation environment for FreeBSD. It aims to provide a fast, deterministic, hard-edged desktop built from explicit, reproducible components under the user's control.

Xenolith is a FreeBSD desktop project. Linux, systemd, and Wayland-first environments are outside its scope.

Status

Xenolith is in its initial development stage. The repository does not yet provide a complete desktop environment or a supported installer.

Direction

The intended environment combines:

  • Xorg and/or XLibre as the display server;
  • FVWM3 as the initial window-management substrate;
  • KDE applications without the Plasma desktop shell;
  • focused session and compatibility glue;
  • custom panel, taskbar, desktop, and diagnostic utilities where needed; and
  • reproducible installation, migration, and rollback tooling.

The interaction model is based on multiple workspaces containing normal stacking windows. Primary windows may be maximized by default, while manually sized and floating windows remain first-class. Automatic tiling is not the primary workflow.

Design principles

  • X11 is a first-class, non-negotiable display protocol.
  • Interaction should be immediate, predictable, and low-latency.
  • Configuration belongs in source control instead of opaque mutable state.
  • Components should be small, explicit, native, and easy to diagnose.
  • KDE applications should receive only the services they actually require; plasmashell and kwin are not part of a Xenolith session.
  • Visual design should favor square edges, strong borders, clear state, and an industrial workstation character over animation and decorative effects.
  • Installation must be inspectable, safe to rerun, and explicit about system changes.

Target environment

FreeBSD is the authoritative runtime and integration-test platform. A separate development machine may be used to edit and deploy the repository, but runtime behavior must be validated on FreeBSD using FreeBSD-native facilities.

Installation

Xenolith installs onto an existing FreeBSD X11/XLibre desktop with:

./install.sh --user user

The default installer does not install, replace, or configure an X server or GPU driver. It preflights the patched Xenolith (z440) FVWM/tray transaction and rejects any package plan that would introduce the Xorg/NVIDIA legacy stack or mutate protected XLibre graphics packages. The ordinary FreeBSD package set is explicitly installed from FreeBSD-ports; the same guard applies to both repositories. z440 is used only for packages that Xenolith intentionally carries as patched builds.

The z440 client repository must point at its filtered Xenolith feed (not the Poudriere ABI-root catalogue). First-party package names are selected from that feed while ordinary dependencies and KDE applications are resolved from FreeBSD-ports in the same mixed transaction. The installer rejects an unfiltered first-party feed before changing package state. Xenolith does not replace an existing Xorg/XLibre server or GPU driver by default. For an AMDGPU/XLibre host, keep the normal FreeBSD Mesa/DRM stack and review the XLibre server/driver migration separately before starting the Xenolith session.

For an explicit migration from an existing Xorg installation, run ./install.sh --user user --xlibre. The migration uses the upstream FreeBSD XLibre server and XLibre-flavoured libinput driver, guards the removal plan, preserves KDE applications and shared Frameworks, and leaves SDDM available as a display manager. It does not install a vendor GPU driver; AMDGPU uses XLibre's modesetting path with the existing kernel/Mesa stack. Select the Xenolith session at the next SDDM login (or use startx from a console).

The VNC test-session component remains separate from a normal local desktop installation.

Project boundaries

Xenolith is a desktop/workstation environment, not a complete operating system or a general-purpose desktop distribution. It reuses FreeBSD and standalone Unix facilities where they solve a problem cleanly and adds custom code only where Xenolith requires distinct behavior.