Core documentation: - CLAWDIE-SHELL.md: Main specification (overview, features, philosophy) - SHELL-ARCHITECTURE.md: Modular shell design (5 libraries, patterns) - LUMINA-INTEGRATION.md: Desktop configuration (luminarc, openbox) - ADMIN-PANEL.md: bsddialog UI specification (system management) - REFACTOR-SUMMARY.md: Transition from multi-DE to Lumina-only Philosophy: Standing on giants' shoulders - FreeBSD (ZFS, jails, rc.d, stability) - PC-BSD (Lumina desktop, installer wisdom) - POSIX shell (portability, simplicity, no VM overhead) Updated .gitignore to exclude build artifacts. Updated README.md with Clawdie Shell branding. All dates in 23.mar.2026 format (user preference). Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
11 KiB
Lumina Integration for Clawdie-ISO
Purpose: Lumina desktop configuration, branding, and Clawdie-specific customization
Why Lumina for Clawdie
- FreeBSD heritage — Built by PC-BSD, designed for BSD from the start
- Minimal overhead — No D-Bus complexity, simple compositor
- Lightweight — ~1GB RAM footprint (vs KDE's 3GB+)
- Single-purpose — Pairs naturally with an AI agent workstation
- No Linux assumptions — No systemd, udev, or Linux-specific libraries
Lumina Package Selection
Core Packages (pkg-list-lumina.txt)
# Lumina desktop environment
lumina-core # Window manager + session manager (Openbox)
lumina-themes # Built-in themes (glass, dark, light)
lumina-calculator # Built-in calculator app
lumina-archiver # Archive manager (tar, zip, 7z)
lumina-filemanager # Simple file manager
lumina-screenshot # Screenshot tool
lumina-open # Default file association handler
# Dependencies (already in base)
openbox # Window manager (Lumina's default)
libxcb # X11 C bindings
libxdg-basedir # XDG directory spec
pcmanfm-qt # File manager (if filemanager pkg pulls it)
# Display server
xorg-minimal # X11 base (from pkg-list-desktop-base.txt)
xf86-input-libinput # Input device handler (from base)
# Login manager
lightdm # Display manager (keeps XFCE's choice)
lightdm-gtk-greeter # Login screen (from base)
# Session management
dbus # Inter-process communication (from base)
hal # Hardware abstraction (from base)
Total size: ~200 MB (installed) vs XFCE's ~400 MB, KDE's ~1.2 GB
Configuration Files
1. luminarc (Lumina Main Config)
Location: /home/clawdie/.config/lumina/luminarc
[General]
# Session and theming
session=default
theme=glass
color_scheme=dark
icon_theme=oxygen
numthumbnails=5
audiofiles=.mp3;.wav;.flac;.m4a;.ogg
videofiles=.mp4;.mkv;.avi;.mov;.webm
# Window behavior
single_click_launch=true
show_desktop_icons=false
[Panels]
# Single taskbar at bottom
panels=1
panel1_align=center
panel1_autohide=false
panel1_height=28
panel1_length=100
panel1_location=bottom
# Panel contents (left → right)
panel1_items=["menu", "taskbar", "systray", "clock"]
[Keyboard]
# Keybinds
super=lumina-open
alt_f2=lumina-open -application
alt_f4=lumina-killwindow
[Desktop]
# Background
background=/usr/local/share/pixmaps/clawdie-wallpaper.png
background_mode=scale # fit, tile, scale, stretch
background_color=#0a0e27 # Dark blue fallback
desktop_icons=false
show_trashcan=false
show_start_here=false
[Theme]
# Dark theme for agent workstation
window_color=rgb(40, 44, 60)
text_color=rgb(220, 220, 220)
accent_color=rgb(100, 150, 255) # Clawdie blue
button_color=rgb(60, 65, 85)
2. panel.conf (Panel Layout Details)
Location: /home/clawdie/.config/lumina/panel.conf
# Taskbar layout
[Item-0]
name=menu
plugin=lumina-menu
[Item-1]
name=taskbar
plugin=lumina-taskbar
use_icons=true
max_item_width=150
[Item-2]
name=spacer
type=spacer
width=flexible
[Item-3]
name=systray
plugin=lumina-systray
size=24
[Item-4]
name=clock
plugin=lumina-clock
format=%H:%M # 24-hour time
showseconds=false
3. Openbox Config (Lumina's WM)
Location: /home/clawdie/.config/openbox/lxde-rc.xml (Lumina uses Openbox via lxde-rc.xml)
<?xml version="1.0" encoding="UTF-8"?>
<openbox_config xmlns="http://openbox.org/3.4/rc">
<resistance>
<strength>10</strength>
<screen_edge_strength>20</screen_edge_strength>
</resistance>
<focus>
<focusNew>yes</focusNew>
<focusLast>yes</focusLast>
<followMouse>no</followMouse>
<underMouse>no</underMouse>
<focusDelay>200</focusDelay>
<raiseOnFocus>no</raiseOnFocus>
</focus>
<placement>
<policy>Smart</policy>
<monitor>Primary</monitor>
</placement>
<margins>
<top>0</top>
<bottom>28</bottom>
<left>0</left>
<right>0</right>
</margins>
<keyboard>
<keybind key="Super_L">
<action name="Execute">
<command>/usr/local/bin/lumina-open -application</command>
</action>
</keybind>
<keybind key="Super_L-Tab">
<action name="NextWindow"/>
</keybind>
<keybind key="Super_L-Shift-Tab">
<action name="PreviousWindow"/>
</keybind>
<!-- Alt+F4 close handled by Openbox internally -->
</keyboard>
<mouse>
<dragThreshold>8</dragThreshold>
<doubleClickTime>500</doubleClickTime>
</mouse>
</openbox_config>
Desktop Files (Launcher Integration)
Clawdie Admin Launcher
Location: ~/.local/share/applications/clawdie-admin.desktop
[Desktop Entry]
Type=Application
Name=Clawdie Admin
Comment=System and jail administration panel
Exec=/usr/local/bin/clawdie-admin
Icon=system-run
Categories=System;Administration;Utility
Terminal=false
NoDisplay=false
Alternative: Clawdie Web Console
Location: ~/.local/share/applications/clawdie-web.desktop
[Desktop Entry]
Type=Application
Name=Clawdie Console
Comment=Web-based agent console
Exec=xdg-open http://localhost:8080
Icon=internet-web-browser
Categories=Utility;WebBrowser
Terminal=false
Wallpaper Setup
Clawdie Wallpaper (Optional)
Location: /usr/local/share/pixmaps/clawdie-wallpaper.png
Design: Dark gradient background with subtle "Clawdie" watermark and FreeBSD mascot integration
# Build-time: generate minimal wallpaper
# During firstboot: copy to ~/.config/lumina/wallpaper.png
# Simple solid color fallback if image missing:
# background_color=#0a0e27 (dark blue)
Login Manager Integration (lightdm)
lightdm.conf Updates
Location: /etc/lightdm/lightdm.conf
[LightDM]
logind-check-gio=false
sessions-directory=/usr/local/share/xsessions
[SeatDefaults]
session=lumina
user-session=lumina
greeter-session=lightdm-gtk-greeter
greeter-hide-users=false
allow-user-switching=true
lightdm-gtk-greeter.conf
Location: /etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
theme-name=Adwaita-dark
icon-theme-name=oxygen
background=/usr/local/share/pixmaps/clawdie-wallpaper.png
logo=/usr/local/share/pixmaps/clawdie-logo.png
position=center
Session File (Lumina xsession)
Location: /usr/local/share/xsessions/lumina.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Lumina
Exec=startlumina
Icon=lumina
Comment=Lightweight, FreeBSD-native desktop
Note: Lumina ships this; we verify it exists in firstboot.sh.
Startup Script
~/.xinitrc or ~/.xsession
For manual X start (not needed in lightdm, but good to have):
#!/bin/sh
# ~/.xinitrc — manual X start with Lumina
# Start D-Bus daemon (optional, some apps need it)
if [ -x /usr/local/bin/dbus-launch ]; then
eval $(dbus-launch --sh-syntax)
fi
# Start Lumina session
exec startlumina
Clawdie Status Tray Applet (New)
Implementation
Binary: /usr/local/libexec/clawdie-tray-applet
Function: Polls clawdie service status every 5 seconds, updates tray icon.
Code:
#!/bin/sh
# Clawdie status tray applet for Lumina
RUNNING_ICON="/usr/local/share/icons/clawdie-running.png"
STOPPED_ICON="/usr/local/share/icons/clawdie-stopped.png"
while true; do
if service clawdie status > /dev/null 2>&1; then
# Clawdie running
echo "ICON:$RUNNING_ICON"
echo "LABEL:Clawdie (running)"
else
# Clawdie stopped
echo "ICON:$STOPPED_ICON"
echo "LABEL:Clawdie (stopped)"
fi
# Wait 5 seconds
sleep 5
done
Integration: Called by Lumina systray plugin if available; falls back to panel menu.
Fonts and Internationalization
Font Setup
Default fonts in Lumina:
# System font (UI elements)
[Fonts]
fixed_font=Liberation Mono 10
general_font=Liberation Sans 10
menu_font=Liberation Sans 10
Included in pkg-list-host.txt:
liberation-fonts(metric-compatible with Arial/Times)dejavu(already required, provides Unicode coverage)
Cyrillic support for SR language pages: Cormorant Garamond provides Cyrillic; DM Mono has limited but workable Cyrillic.
Desktop Shortcuts (Optional)
File Manager Shortcut
Location: ~/Desktop/Home.lnk (if desktop icons enabled; disabled by default)
[Desktop Entry]
Type=Link
Name=Home Folder
URL=file:///home/clawdie
Icon=system-file-manager
System Monitor Shortcut
Location: ~/Desktop/Clawdie-Admin.lnk
[Desktop Entry]
Type=Link
Name=Clawdie Admin
URL=exec:///usr/local/bin/clawdie-admin
Icon=system-run
Note: Desktop icons are disabled by default. Users can enable via luminarc: show_desktop_icons=true.
Accessibility Options
High Contrast Mode (Optional)
Location: ~/.config/lumina/luminarc.hc
# High contrast variant
[Theme]
window_color=rgb(50, 50, 50)
text_color=rgb(255, 255, 255)
button_color=rgb(100, 100, 100)
accent_color=rgb(255, 200, 0) # High contrast yellow
Enable from Lumina menu: Settings → Appearance → "High Contrast"
Performance Tuning
Memory and CPU
| Setting | Value | Rationale |
|---|---|---|
| Compositing | Enabled (simple) | Smooth window transitions, no heavyweight effects |
| Animations | Fast (100ms) | Responsive feel without slowdown |
| Thumbnail cache | 5 items | File manager preview performance |
| CPU polling interval | 5 seconds | Tray updates without excessive CPU |
Startup Time
Goal: Lumina session ready in <2 seconds from lightdm login
Optimization:
- No background services pre-start (dbus on-demand)
- Panel auto-layout (no manual positioning)
- Taskbar lazy-loads thumbnails
- No startup scripts or autostart folder clutter
Verification Checklist
lumina-core,lumina-themesinstalled from pkg~/.config/lumina/luminarcwritten during firstboot~/.config/openbox/lxde-rc.xmlpresent/usr/local/share/xsessions/lumina.desktopexistslightdmconfigured to use Lumina session- Login → desktop in <2 seconds
- Taskbar visible, clock working
- Application launcher opens (Super key or menu button)
- Right-click → Clawdie Admin accessible
- Wallpaper loads without errors
Known Limitations
- Wayland support — Lumina doesn't support Wayland; X11 only. FreeBSD's Wayland support is experimental anyway.
- Multi-monitor — Lumina supports multiple monitors but panel duplicates. Acceptable for single-monitor target.
- Themes — Lumina's theme engine is basic. Custom themes require manual Qt CSS editing.
- Audio — Uses OSS (FreeBSD native). PulseAudio optional; not bundled.
Comparison: Lumina vs XFCE on FreeBSD
| Aspect | Lumina | XFCE |
|---|---|---|
| First release | 2014 (PC-BSD) | 1996 (Linux) |
| Target OS | FreeBSD-native | Linux-first, ported to BSD |
| Dependencies | Minimal | Medium (glib, X11) |
| Boot speed | ~1.5 sec | ~2.5 sec |
| RAM footprint | 150 MB | 250 MB |
| Customization | Limited (simple) | High (panel placement, plugins) |
| Community | Small, stable | Large, active |
| Long-term support | Stable releases (~6 months) | Active development |
| GPU acceleration | Basic (OpenGL ES) | Full (DRI2/DRI3) |
For Clawdie: Lumina wins on simplicity + philosophy; XFCE wins on ecosystem. We choose Lumina for focus.