1
0
Fork
You've already forked seizer
0
forked from klaji/seizer
Wayland application framework
  • Zig 99.9%
  • Nix 0.1%
2024年11月16日 17:18:52 -07:00
bench bench: add sprite_batch benchmark 2024年11月16日 13:49:50 -07:00
dep feat: cursor-shape-v1 protocol support 2024年11月10日 23:43:25 -07:00
examples refactor!: replace mat4 transforms with mat3 2024年11月16日 13:49:50 -07:00
src fix(Display.ToplevelSurface): fix scaling of canvas_fillRect and canvas_textureRect 2024年11月16日 16:43:28 -07:00
.gitignore feat: update to zig 0.13.0 2024年08月04日 00:21:40 -06:00
build.zig feat(build): add emit-asm option 2024年11月16日 15:01:41 -07:00
build.zig.zon vendor tinyvg into seizer 2024年11月16日 13:48:58 -07:00
CHANGELOG.md docs(CHANGELOG): change [Unreleased] to [0.3.0] 2024年11月16日 17:18:52 -07:00
default.nix fix sprite_batch example 2024年09月19日 14:17:00 -06:00
LICENSE add LICENSE to repository 2024年09月23日 19:28:14 -06:00
README.md Link to examples in README 2024年11月09日 17:58:48 -07:00
RELEASE-CHECKLIST.md docs: Add release checklist 2024年11月16日 17:13:33 -07:00

seizer

seizer is a Zig library for making software rendered Wayland applications. It is currently in an alpha state, and the APIs constantly break.

Features

Roadmap

In the future, seizer wants to have the following features:

FAQ

Why is it called "seizer"?

It is a reference to the "Seizer Beam" from the game Zero Wing. Move Zig!

Wasn't seizer going to have a cross platform windowing API?

I decided to reduce scope. Targeting Wayland specifically means I have to invent fewer abstractions, and can just focus on supporting what works well on Wayland. And the Windows WSLg project made me realize that the Wayland protocol is just that; a protocol. There's a few Linux-isms, sure, but nothing fundamentally stops other OSes from adopting Wayland.

If you want true cross platform windowing support, there are plenty of other projects doing just that; SDL, GLFW, mach, and sokol just to name a few.

I also realized that I'm not really interested in platforms other than Linux. Linux is my daily driver OS. I don't use MacOS or Windows (or BSD) and there are plenty of other developers targeting those platforms.

Wasn't seizer targeting OpenGL/Vulkan at some point?

Yes, it was. For a variety of reasons, I've decided that supporting GPUs is out of scope:

  • Vulkan is a huge API surface. While it might be possible to write a backend that supports it, exposing it's full power takes serious effort. Exposing something like seizer.Canvas would be much more reasonable than trying to make an API that allows using GPUs through either OpenGL or Vulkan (Which is what I was trying to do. That part was my fault for tackling too large a scope).
  • libvulkan and libEGL require using dlopen; this is a problem on Linux:
    • Linux has no system libc; ergo no system dlopen
    • Dynamically linking to glibc or musl multiplies the number of ways your program can break.
  • One the programs that inspired the creation of seizer needs to export measurement images with additional markup on it, and a software rendering library makes this easier.
  • Running statically linked binaries on Linux gives me dopamine.