THIS IS A WORK IN PROGRESS!
Troodon is a Compositing X11 window manager. It uses XCB for communication with the X Server and renders its decorations and built-in desktop environment apps and components with OpenGL.
Troodon can be used in both tiling and stacking modes, and the best part is that it is a single binary!
- Minimize Dependencies
- GID
- https://github.com/zertovitch/gid
- License: MIT
- Author: Gautier de Montmollin
These are all pretty normal X11/OpenGL packages/libraries that should be present in most Linux distributions.
- Xorg
- XLib
- XCB
- GL
- GLX
- Freetype
- Fontconfig
What's a Troodon?
Troodon was a small dinosaur, regarded as the most intelligent of the dinosaur species and that with the highest visual acuity.
In debug mode, Troodon produces a binary obj/troodond
which is
compiled with profiling information baked-in. After a run, this will produce a
file gmon.out
which can be analyzed with:
gprof --demangle=gnat obj/troodond gmon.out
Generate Ada spec for glext.h with:
g++ -c -fdump-ada-spec -DGL_GLEXT_PROTOTYPES /usr/include/GL/gl.h
To watch for X resource leaks, use:
xrestop
To get info about GLX
glxinfo
To get info about the X Server, supported modes, etc.
xdpyinfo xdpyinfo -queryExt
This will depend on your distribution, Ubuntu uses these package names:
- libfontconfig1-dev
- libfreetype6-dev
- libglx-dev
- libgl-dev
- libgl1-mesa-dev
- libx11-dev
- libx11-xcb-dev
- libxcb-composite0-dev
- libxcb-ewmh-dev
- libxcb-damage0-dev
- libxcb-glx0-dev
- libxcb-randr0-dev
- libxcb-render0-dev
- libxcb-shape0-dev
- libxcb-xfixes0-dev
- libxcb-xinerama0-dev
- libxcb1-dev
- x11proto-dev
- x11proto-core-dev
- Stop pinging XServer for window geometry every time we render. Need to keep geometry locally in the scene graph/create a window structure.
- Edit includes to use sane Ada Interface types like Unsigned_8, etc.
- Use Fontconfig to identify fonts, use normal font strings w/ fallbacks.
- sprinkle glGetError all over the place.
- Optimize font rendering with texture atlas
- Make frame close when underlying window closes
- Usable buttons and widgets
- [DONE] Add ability to make whole window transparent (i.e. when dragging, or just for eye candy)
- Add drop shadows/glow to window edges
- Rendering optimization