This blog post initiates a series on implementation of a new desktop environment.

The posts are not intended as comprehensvie documentation of the topics. They serve as working notes for me to ensure my understanding of the topics.

I limit the scope of the posts in the following ways:

  • I only describe Linux. I am not currently focused on portability.
  • I only describe modern Linux. Historical information is relegated to footnotes, and I won’t delve into explaining how outdated interfaces function if they have been completely replaced by modern ones.
  • I only describe the desktop/laptop environment. The DE I am working on does not attempt to support embedded, handhelds, and other environments.
  • I focus on describing modern hardware. The primary platform for the DE is Apple M1/M2, and the secondary platform is a modern PC with Intel graphics card. I won’t cover big-endian processors, exotic buses, or compositing without a GPU.

The posts will be updated as I expand and correct them. I welcome corrections, please send them to my e-mail.

  1. Linux DRM devices
  2. Linux VT
  3. DRM operations - capabilities
  4. DRM operations - resource sharing
  5. DRM pipeline
  6. DRM framebuffers
  7. DRM pixel formats and modifiers
  8. DRM properties and atomic interface