Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pyb/zen
The zen X server in Common Lisp.
https://github.com/pyb/zen
Last synced: about 1 month ago
JSON representation
The zen X server in Common Lisp.
- Host: GitHub
- URL: https://github.com/pyb/zen
- Owner: pyb
- License: other
- Created: 2011-03-15T12:25:44.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-12-07T01:04:58.000Z (over 10 years ago)
- Last Synced: 2024-02-09T22:00:03.743Z (5 months ago)
- Language: Common Lisp
- Homepage:
- Size: 256 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- License: COPYING
Lists
- awesome-cl-software - Zen - The zen X server in Common Lisp. [GPL3]. (Applications / Other)
README
This is zen, the Hackable X server.
In just 5500 lines of Common Lisp.
INSTRUCTIONS :
You will need :
Linux.
A decent OpenGL driver, and therefore, unfortunately, a running X server :) (to create a GLX context)
SBCL with cl-opengl, CFFI, CLX, Skippy, CL-PPCRE, bordeaux-threadsStarting zen :
1) Identify the mouse and keyboard devices /dev/input/event by reading /proc/bus/input/devices. Modify your input-devices.lisp accordingly.
2) sudo chmod ugo+r /dev/input/*
3) In SBCL , (compile-file "data/keys")
4) Load "start.lisp" in sbcl
5) (start)
... and if (when) you crash :
6) (rst)Testing apps : in a terminal,
export DISPLAY=127.0.0.1:3
Then start your app.FUN WITH ZEN
The 3 most interesting/fun things to hack on right now are :
- Optimization. The low hanging fruit is here for you to pick up :)
(require 'sb-sprof)
(sb-sprof:start-profiling :sample-interval 0.001 :threads :all :sampling t))
(sb-sprof:stop-profiling)
(sb-sprof:report)
- Simplifying : zen could definitely become even leaner than it is now.
- XRender implementation
(but potentially a big job)[Of course, there are also a large number of work items to turn zen into a 'production server', but that was never the point ! ]
LIMITATIONS
You will notice that zen is quite slow and buggy. Please feel free to report : zen crashes, and app crashes/exits that could be caused by X protocol bugs.
Most noticeable missing features :
- All kinds of grabs
- Various old fashioned rendering requests : CopyPlanes ; Arcs, and more
- Most GC fields are ignored
- see also a whole section of unimplemented requests.* The bad (do not read this code !) :
Font support : no use improving on this, as modern apps render them client-side anyway.
SW cursor : no use improving on this either, this is a hack that wouldn't belong in a production server.CONTACT
All the files in this package are (c) 2011 Pierre-Yves Baccou, unless specified otherwise.