detached c2e9def

#9 README refocus, user/dev docs split and containerised demo recording

state
merged · c2e9def · fast-forward
branch
feat/presentation → main
opened
bnema ·
updated

Makes the project presentable.

  • Headless backend writes frames.ffconcat with real frame timing so ffmpeg -f concat rebuilds a video; the last frame keeps its idle duration.
  • README leads with performance, games, overview, stash, hint mode and animations, then install and a compact configuration showcase. The full defaults and binds live in docs/config.md and examples/config.
  • docs/ holds user pages only (config, desktop with session locking merged in, capture, performance); developer pages move to docs/dev/ (architecture, headless, profiling).
  • tools/demo/record.sh records the README demo: NeferWL headless on the host, apps (Firefox, Mousepad, foot, btop) in a disposable Arch container, Vesper theme, no gaps. Output: docs/media/demo.mp4 and the demo.png poster.

Checks: make check, make race, make mocks-check, staticcheck ./..., shellcheck. Reviews resolved for the Go recording path and the demo script.

CommitSubjectAuthorDateSignatureStatus
c2e9deffix(demo): kill launcher process groups and trap before creating the work dirbriceGPG Verified
87924a1fix(demo): robust startup, timeline sync and cleanup in record.shbriceGPG Verified
9d71793feat(demo): record the README demo with containerised appsbriceGPG Verified
d34c114fix(demo): hide file ownership in listings and drop the GIFbriceGPG Verified
02223f0fix(demo): readable font and filled terminalsbriceGPG Verified
2470c88docs(readme): add demo video and posterbriceGPG Verified
f7cd1e3feat(demo): headless recording script for the README demobriceGPG Verified
447c74cMerge branch 'docs/readme-refocus' into feat/presentationbriceGPG Verified
a29ced4fix(headless): finalize the last frame duration in frames.ffconcatbriceGPG Verified
0ab75e3docs(readme): plain paragraph for the Go summarybriceGPG Verified
c5cb9bcdocs(readme): shorten the documentation listbriceGPG Verified
8406894docs: split user and developer documentationbriceGPG Verified
b2b939adocs(readme): lead with performance and configurationbriceGPG Verified
241d9befeat(headless): write frames.ffconcat index for video recordingbriceGPG Verified

Checks 2

26 files · +742 -340
2/2
M AGENTS.md +2 -2
M README.md +78 -265
M docs/config.md +30 -0
M docs/desktop.md +24 -1
A docs/dev/architecture.md +34 -0
R docs/headless.md → docs/dev/headless.md +20 -2 renamed, 61% similar
A docs/dev/index.md +8 -0
A docs/dev/profiling.md +36 -0
A docs/index.md +10 -0
A docs/media/demo.mp4 +0 -0 binary file: no text diff
A docs/media/demo.png +0 -0 binary file: no text diff
M docs/performance.md +1 -36
D docs/session-lock.md +0 -26
M internal/adapters/headless/output.go +60 -8
M internal/adapters/headless/output_test.go +68 -0
M internal/adapters/headless/security_test.go +41 -0
A tools/demo/Dockerfile +26 -0
A tools/demo/btop-vesper.theme +43 -0
A tools/demo/btop.conf +9 -0
A tools/demo/config +25 -0
A tools/demo/firefox/user.js +15 -0
A tools/demo/firefox/userChrome.css +18 -0
A tools/demo/foot.ini +24 -0
A tools/demo/input.txt +43 -0
A tools/demo/record.sh +114 -0
A tools/demo/site/index.html +13 -0
@@ -0,0 +1,13 @@
1+<!doctype html>
2+<html lang="en">
3+<meta charset="utf-8">
4+<meta name="color-scheme" content="dark">
5+<title>NeferWL — Space to think</title>
6+<style>
7+*{box-sizing:border-box}body{margin:0;background:#101010;color:#ffffff;font:18px/1.6 sans-serif}main{max-width:960px;margin:auto;padding:60px 38px}header{color:#ffc799;letter-spacing:.2em;font:700 18px monospace}small{color:#ffc799}h1{font-size:54px;line-height:1.12;letter-spacing:-2px;margin:40px 0 24px}p{color:#a0a0a0}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:36px 0}.card{padding:18px;background:#161616;border:1px solid #282828;border-radius:12px}.card b{color:#ffc799}.card p{font-size:15px;margin-bottom:0}pre{background:#161616;border-left:3px solid #ffc799;border-radius:6px;padding:24px;font:16px/1.8 monospace;color:#ffc799}footer{color:#a0a0a0;font:14px monospace}
8+</style>
9+<main><header>◈ NEFERWL</header><h1>Your desktop.<br>A little more focused.</h1><p>A Wayland compositor with room for your work.<br>Tile naturally, set things aside, see the whole picture.</p><div class="cards"><section class="card"><b>01 / Performance</b><p>Small, responsive.<br>Built in Go. Made to stay out of your way.</p></section><section class="card"><b>02 / Stash</b><p>Keep tools close.<br>Set aside a window. Bring it back in a keystroke.</p></section><section class="card"><b>03 / Overview</b><p>Find your focus.<br>Every workspace and stashed window, at a glance.</p></section></div><pre># A desktop that flows with you
10+layout.max-columns = 2
11+layout.overflow = cascade
12+animations = on</pre><footer>SUPER + ↑ / ↓ &nbsp; bands &nbsp; · &nbsp; SUPER + S &nbsp; stash &nbsp; · &nbsp; SUPER + O &nbsp; overview</footer></main>
13+</html>
@@ -0,0 +1,13 @@
1+<!doctype html>
2+<html lang="en">
3+<meta charset="utf-8">
4+<meta name="color-scheme" content="dark">
5+<title>NeferWL — Space to think</title>
6+<style>
7+*{box-sizing:border-box}body{margin:0;background:#101010;color:#ffffff;font:18px/1.6 sans-serif}main{max-width:960px;margin:auto;padding:60px 38px}header{color:#ffc799;letter-spacing:.2em;font:700 18px monospace}small{color:#ffc799}h1{font-size:54px;line-height:1.12;letter-spacing:-2px;margin:40px 0 24px}p{color:#a0a0a0}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:36px 0}.card{padding:18px;background:#161616;border:1px solid #282828;border-radius:12px}.card b{color:#ffc799}.card p{font-size:15px;margin-bottom:0}pre{background:#161616;border-left:3px solid #ffc799;border-radius:6px;padding:24px;font:16px/1.8 monospace;color:#ffc799}footer{color:#a0a0a0;font:14px monospace}
8+</style>
9+<main><header>◈ NEFERWL</header><h1>Your desktop.<br>A little more focused.</h1><p>A Wayland compositor with room for your work.<br>Tile naturally, set things aside, see the whole picture.</p><div class="cards"><section class="card"><b>01 / Performance</b><p>Small, responsive.<br>Built in Go. Made to stay out of your way.</p></section><section class="card"><b>02 / Stash</b><p>Keep tools close.<br>Set aside a window. Bring it back in a keystroke.</p></section><section class="card"><b>03 / Overview</b><p>Find your focus.<br>Every workspace and stashed window, at a glance.</p></section></div><pre># A desktop that flows with you
10+layout.max-columns = 2
11+layout.overflow = cascade
12+animations = on</pre><footer>SUPER + ↑ / ↓ &nbsp; bands &nbsp; · &nbsp; SUPER + S &nbsp; stash &nbsp; · &nbsp; SUPER + O &nbsp; overview</footer></main>
13+</html>

Comments0 open / 0

no comments yet.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
l
merge request: the list of files (j k move, enter opens, esc back)
M
merge request: the merge menu; there 1–3 pick the mode, D deletes the branch, enter merges
R
merge request: mark the head read
esc
close a dialog, leave a field

Branches 23

Tags 10

↑↓ moveenter openesc close