Skip to content

dvui: windows in the app or their own, and what they are made of - #9

Merged
foxnne merged 13 commits into
mainfrom
dvui/plain-windows
Oct 19, 2026
Merged

foxnne merged 13 commits into
mainfrom
dvui/plain-windows

Conversation

@foxnne

@foxnne foxnne commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Replaces #7, which GitHub closed when its base, zig-0.17, merged into main (#8) and was deleted. Same branch, with main merged in.

What the dvui example does now, on fizzy's backend (zig build dvui, plain dvui code with no fizzy app around it):

  • Windows in the app, or OS windows.
    • "New window" opens an in-app floating window. Dragged by its header past the app's windows, it tears off into an OS window of its own, and dragged back over the app it goes back in (backend: a float dragged out is its own OS window from the start fizzy#577, #591, #594, #605).
    • "New OS window" opens a dvui.osWindow, an OS window from the start, with the OS's title bar in the theme's colour.
    • dvui's demo stays in the main window, as in dvui's own example, and is drawn first so it never hides the app's windows.
  • What the windows are made of (when the backend has a window material, backend: plain dvui app windows made of the window material fizzy#565, #589):
    • a dropdown: Opaque, Clear, Blur, Frost, Liquid Glass;
    • a Transparency slider, which stops short of clear for glass, at the backend's floor (material_min_opacity); only Clear goes all the way.
    • The colour is the theme's window colour, from dvui's theme picker. The main window draws no fill of its own, so the material shows through.
  • CI builds the dvui app beside the shapes and the replay app.

On dvui's own SDL3 backend (-Ddvui-backend=sdl3), dvui.osWindow opens a dvui.Window of its own and there's no material picker (@hasDecl guards it).

Pins: unchanged from main, fizzy's Zig 0.17 switch and SDK 0.2.30. The material picker appears once the fizzy pin includes the window material; fizzy's own CI (check-examples.sh) builds this against its current tree.

Tested:

  • zig build dvui against the pins: 41/41 steps.
  • By hand (the user, macOS 26) against fizzy's current tree: tear-off and back, every material, the slider, light and dark themes.

🤖 Generated with Claude Code

foxnne and others added 13 commits October 15, 2026 14:51
minimum_zig_version is 0.17.0, and `b.args` is now
`run.addPassthruArgs()`. Built by fizzy's check-examples.sh against
fizzy's zig/0.17 branch, which swaps every fizzy and SDK pin for its
own tree; the pins here move when fizzy's 0.17 SDK is released.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On fizzy's backend every floating window is now an OS window with the
OS's title bar (fizzyedit/fizzy#480-#483, on zig/0.17). The demo was
drawn last, so its window opened over the app's own and hid them; it is
drawn first now. The main window's content gets the theme's window
background, and the header says what the backend does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The branch's own CI installed Zig 0.16 and failed at build.zig, and on
0.17 its pins (fizzy's 0.16 releases) would fail as well until fizzy's
first 0.17 SDK is released. So it runs fizzy's check-examples.sh on
fizzy's zig/0.17 with this checkout and example-plugin's zig-0.17 in
place of the pins: every shape, the replay app and the dvui app on both
backends, on Zig 0.17. Back to building the pins at the merge (ZIG017).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ain window

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d out

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"New window" opens an in-app floating window, which on fizzy's backend
drags out into an OS window of its own; "New OS window" opens a
dvui.osWindow. A dropdown and a transparency slider pick what the
windows are made of (opaque, clear, blur, frost, Liquid Glass), the
colour the theme's window colour; the main window draws no fill of its
own, so the material shows through.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fizzy pins its Zig 0.17 switch (fizzyedit/fizzy#575), fizzy_sdk and the shader plugin pin sdk-v0.2.30, hello pins example-plugin's 0.17 branch, and the workflow builds with Zig 0.17.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zig-0.17 now builds against fizzy's pinned Zig 0.17 switch and SDK 0.2.30,
and fizzy's zig/0.17 branch this PR's CI checked out is gone (merged to
main). CI takes zig-0.17's steps, and builds the dvui app beside them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fizzy pins its Zig 0.17 switch (fizzyedit/fizzy#575), fizzy_sdk and the shader plugin pin sdk-v0.2.30, hello pins example-plugin's main on 0.17 (fizzyedit/example-plugin#13), and the workflow builds with Zig 0.17.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zig-0.17 was rewritten (46fd900 became 205018b), moving the example-plugin
pin; the base's pin is kept. This branch still adds only its dvui app and
the CI step that builds it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blur, frost and Liquid Glass keep a little of the window's colour: the
backend's floor (`material_min_opacity`, where it has one). All the way,
they were no glass at all. Only Clear goes all the way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@foxnne
foxnne merged commit 5c6d75a into main Oct 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant