- Emacs Lisp 94%
- Python 5.7%
- Makefile 0.3%
|
Some checks failed
Repository structure / structure (push) Has been cancelled
Keep the Settings shell, tab actions and footer callbacks mounted while the active field grid changes. Height, selection and guidance update through their own bindings, and callbacks read the current controller. Cover all sections, current values on reopen, reset, and Done/Escape focus restoration through the public interfaces. Validation: make check passes (88 public scenarios and 70 API declarations). The real-config six-app GUI passes all 49 actions. Three foreground sample sets reduce tab p95 from 511 to 352 ms and maximum from 566 to 380 ms; the absolute 10 ms interaction budget remains unmet. |
||
|---|---|---|
| .githooks | ||
| .github/workflows | ||
| benchmarks | ||
| docs | ||
| examples | ||
| lisp | ||
| scripts | ||
| tests | ||
| .editorconfig | ||
| .gitignore | ||
| CHANGELOG.md | ||
| etaf-desktop.el | ||
| Makefile | ||
| README.md | ||
ETAF Desktop
ETAF Desktop is an application-level desktop manager built on ETAF and ETAF UI.
It owns windows, workspaces, focus order, z-order, geometry policy and the
normal/minimized/maximized lifecycle. Ebox remains the retained layout and
incremental publication provider; ETAF UI's etaf-window is the controlled
presentation shell.
Minimal example
(add-to-list 'load-path "/path/to/etaf")
(add-to-list 'load-path "/path/to/etaf-ui")
(add-to-list 'load-path "/path/to/etaf-desktop")
(require 'etaf-desktop)
(let ((desktop (etaf-desktop-open)))
(etaf-desktop-open-window desktop 'notes
:title "Notes" :view (etaf-view (text "Hello"))))
Use the public mutation functions to move, resize, focus, maximize, minimize, restore and close windows. See the manual for the complete contract and architecture for ownership boundaries.
Runnable demo
M-x etaf-desktop-demo-open mounts a complete desktop with six sample
applications (Notes, Tasks, Clock, Calculator, Chat and Monitor) spread over
two workspaces. From a checkout with sibling providers:
cd etaf-desktop
emacs -Q -L ../ecss -L ../ebox -L ../etaf -L ../etaf-ui -L . \
-l etaf-desktop -f etaf-desktop-demo-open
The source is examples/etaf-desktop-demo.el;
each application is a compact model of the etaf-desktop-register-app
contract described in the manual.
Checks
Run make check with Emacs 29.1 or newer and sibling etaf, etaf-ui, ebox
and ecss checkouts.
The workspace's scripts/performance.py includes native mouse workloads named
etaf-desktop.demo.*. They run the complete six-application demo with its Clock
timer, covering Notes launch/close, Settings open/close and all four tabs, and
Notes/Tasks content focus. Every sample checks lifecycle, active window and the
unchanged geometry of existing windows. Launch/close samples use fresh demos;
shell and focus samples retain their demo within a set. These workloads reopen
the demo through its public entry, which closes any previous demo controller.
Run them against your normal configured Emacs server, for example from the
workspace root:
python3 scripts/performance.py run --mode gui \
--scenario 'etaf-desktop.demo.settings-*' --scenario etaf-desktop.demo.focus \
--sets 1 --samples 3 --diagnose
This is a diagnostic screen; the workspace performance manual describes the three-set acceptance protocol and its 10 ms interaction budget. Native input is prequeued and does not certify physical pointer-to-display latency.