1
2
Fork
You've already forked glass
0
A modern wayland client implemented in zig.
  • Zig 96.4%
  • Nix 3.6%
2026年04月10日 16:00:54 +02:00
src fix: rename remaining libw variables to glass 2026年03月26日 22:38:26 +01:00
.editorconfig added .editorconfig file 2025年12月18日 00:13:21 +01:00
.gitattributes Wayland window demo 2025年11月06日 23:52:03 +01:00
.gitignore restructured the filetree, to make space for multiple libraries in the future 2025年11月21日 18:07:54 +01:00
build.zig feat(events): Replaced dispatcher with queue, and basic keyboard input 2026年03月26日 22:24:20 +01:00
build.zig.zon feat(events): Replaced dispatcher with queue, and basic keyboard input 2026年03月26日 22:24:20 +01:00
flake.lock chore(nix): Updated flake 2026年03月10日 21:45:29 +01:00
flake.nix Added event queue, and better event handling 2026年03月09日 23:03:11 +01:00
README.md Update README.md 2026年04月10日 16:00:54 +02:00

Well... that didn't go very far

I encountered a bug which I could not fix, moving windows with max and min sizes set causes rappid jitter.
I want this to work, but for now have just decided to use SDL for the project I am working on.
If you know a fix, feel free to let me know.

Glass

Glass is a library implementing a wayland client. My focus with Glass is to implement a modern and up to date client, supporting new features and versions of the protocols.

⚠️ Toy project (for now) ⚠️

I am doing this in my spare time when I'm not studying or working on other side projects, therefore don't expect major progress. This is currently just a toy project.

But even so if you want to contribute feel free to add an issue, or make a pull request!

TODO:

  • Set a fixed aspect ratio
  • Keyboard input
    • Layout independent input
    • Text input
  • Resizing, fullscreen and maximize
  • Pointer support
  • wl_data_device and data_source support
  • Decorations

Protocols

(I will not necesarily implement all of these, but these are the primary ones that interest me)

  • fractional-scale
  • xdg-output
  • xdg-decoration
  • pointer-constraints
  • cursor-shape
  • content-type
  • tearing-control
  • color-management (No widespread support)
  • xdg-toplevel-drag (No widespread support)

Ideas:

  • Make seperate wayland event queues for each window, when pointers, keyboards and other types of input are focuses on a window, they will send their events to that queue. This might be problematic if I get user facing events that can't be tied to a specific window, but as of right now, that is not the case.