9front

README.md

9front — Lael Labs

9front with configurable rio colors and wallpaper, plus an optional desktop startup using upstream riow and bar. The upstream directory layout and Git history are preserved. No separate project source directory is introduced.

Branches

  • front: unchanged upstream 9front; initial base c2a936a02473681c2733ffbe154172e195f434a9.
  • lael: this customization branch, the default on GitHub.

Official source: https://git.9front.org/plan9front/9front/HEAD/info.html

GitHub mirror: https://github.com/9front/9front (nightly synced).

Build and use on 9front

Clone this repository with git9, switch to the lael branch, and bind the checkout over / in a private namespace before building. Example from a checkout at /usr/glenda/src/9front:

cd /usr/glenda/src
git/clone https://github.com/lael-labs/9front
cd 9front
git/branch lael
rfork n
bind -ac /usr/glenda/src/9front /
cd /sys/src/cmd/rio
mk install
rio -i riostart-desktop

rio -i riostart-desktop starts a nested session for trying the modified desktop. The -b option remains supported. To make the desktop your normal session, change your own $home/lib/profile startup from rio -i riostart to rio -i riostart-desktop after testing. Existing profiles are not overwritten.

The bind makes checkout scripts and resources available in that namespace. For permanent use, integrate the checkout into the installed system source tree using the normal 9front workflow; copying only the rio binary does not install rc/bin/riotheme, the startup scripts, or lib/theme/rio/dark.

The optional startup applies $home/lib/rio.theme if present, otherwise /lib/theme/rio/dark. It runs upstream riow with bar for keyboard window management and virtual desktops. Start this controller only once per rio session.

Themes and wallpaper

cp /lib/theme/rio/dark $home/lib/rio.theme
riotheme $home/lib/rio.theme

Edit named six-digit RGB values in that file. For wallpaper, convert an image to Plan 9 format and replace the rioback line with its absolute path:

jpg -9t < picture.jpg > $home/lib/wallpaper.img

Example theme entry: rioback /usr/glenda/lib/wallpaper.img. Images tile at their native dimensions; use an image sized to your display for a full-screen background. Quote paths containing spaces using rc-style single quotes. Theme files accept one color, two colors for a stippled mix, or an absolute image path per entry. Unknown entries and invalid colors are ignored. Missing or invalid images retain the previous color. Changes affect rio decorations and terminal windows, not the internal palettes of arbitrary graphical applications.

Read the active theme with cat /mnt/wsys/theme. Nested rio inherits an available /dev/theme. Theme control is documented in sys/man/4/rio; helper commands in sys/man/1/riotheme.

Upstream updates

Use normal Git on the maintenance host to merge upstream history into this branch:

git remote add upstream https://github.com/9front/9front.git
git fetch upstream
git switch front
git merge --ff-only upstream/front
git switch lael
git merge front
# Resolve conflicts, build and test on 9front, then:
git push origin front lael

Skip remote add if upstream is already configured. Updates are manual, not scheduled. The stock sysupdate command expects the official front branch; it is not the update command for the customized lael branch. Upstream changes and local features can conflict and require review.

Provenance and validation

Rio theme support derives from Sigrid's patch at https://ftrv.se/_/9/patches/rio-themes.patch (SHA-256 6e47bfc2b9fc7f68a5c59cc6f0be8323c9f4626bdde65c496c384afa2ce6a3d7). This adaptation fixes failed-image handling, resource cleanup, theme serialization, inherited-theme initialization, and screen reattachment, and retains upstream -b and default window sizing. The original upstream licensing and notices remain in place.

See sys/doc/desktop-validation.md for the validation performed and remaining runtime checks.