From 5274af09a5b7452151057669a2c8b8e7b625e0fb Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 3 Jul 2023 11:03:07 -0400 Subject: [PATCH] Add new blog posts --- content/blog/drawing-simple-cubes/index.md | 8 ++-- content/blog/wayland-ssd/index.md | 51 +++++++++++++++++++++ content/blog/wayland-ssd/wayland.webp | Bin 0 -> 46252 bytes themes/red/layouts/_default/single.html | 39 ++++++++++++++++ 4 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 content/blog/wayland-ssd/index.md create mode 100644 content/blog/wayland-ssd/wayland.webp diff --git a/content/blog/drawing-simple-cubes/index.md b/content/blog/drawing-simple-cubes/index.md index a1c8c0a..f66b8b4 100644 --- a/content/blog/drawing-simple-cubes/index.md +++ b/content/blog/drawing-simple-cubes/index.md @@ -1,7 +1,7 @@ --- -title: "Graphics Dump: Drawing debug cubes" +title: "Graphics Dump: Improving debug cubes" date: 2023-07-03 -draft: true +draft: false summary: "When working on my engine, I wanted to clean up my debug gizmos a bit. The first thing to tackle is drawing bounding boxes!" tags: - Math @@ -61,13 +61,13 @@ void main() { } ``` -Let's break this down, first we can simplify the many equality checks in the beginning with notEqual: +Let's break this down, first we can simplify the many equality checks in the beginning with [notEqual](https://docs.gl/sl4/notEqual): ```glsl notEqual(abs(inPosition), vec3(1.0)) ``` -This is component-wise, so it has the same exact meaning as before. We want to perform a length check on this, hence the `vec3` cast. Why do we do a length cast? It's the easiest way to detect how many booleans are true, I'm not sure of a better way. For example: +This is component-wise, so it has the same exact meaning as before. We want to call [length](https://docs.gl/sl4/length) on this, hence the `vec3` cast. Why do we do a length cast? It's the easiest way to detect how many booleans are true, I'm not sure of a better way. For example: * `(1, 0, 0)` has a length of 1. * `(1, 1, 0)` has a length of $\sqrt{2}$. diff --git a/content/blog/wayland-ssd/index.md b/content/blog/wayland-ssd/index.md new file mode 100644 index 0000000..03d1e46 --- /dev/null +++ b/content/blog/wayland-ssd/index.md @@ -0,0 +1,51 @@ +--- +title: "How to use xdg-decoration in a Wayland client" +date: 2023-07-03 +draft: false +tags: +- Wayland +--- + +I wanted to enable server-side decorations in a Wayland client, but didn't know where to start. When searching for _"How to enable server-side decorations wayland"_ in a search engine you get a lot of user support questions and not really anything for programmers. Here's a short tutorial on how to request server side decorations from the compositor if supported. + +# Which protocol to use? + +When searching for the Wayland protocol to use, you'll come across two different ones: +* [kde-server-decoration](https://wayland.app/protocols/kde-server-decoration) +* [xdg-decoration](https://wayland.app/protocols/xdg-decoration-unstable-v1) + +What is the difference between the two? From what I can tell the first extension was by KDE and put into their protocol collection. It doesn't appear to be used anymore, and not even installed on my system. xdg-decoration is actually in wayland-protocols (albeit unstable) so we'll use that one. + +If you're using ECM ([Extra CMake Modules](https://invent.kde.org/frameworks/extra-cmake-modules)) then use `ecm_add_wayland_client_protocol` to generate the header: + +```cmake +ecm_add_wayland_client_protocol( + WAYLAND_SOURCES + BASENAME + xdg-decoration-v1 + PROTOCOL + ${WaylandProtocols_DATADIR}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml +) +``` + +# How to use xdg-decoration + +When enumerating the global registry, bind the `zxdg_decoration_manager_v1` struct using the `zxdg_decoration_manager_v1_interface` interface: + +```cpp +auto manager = reinterpret_cast(wl_registry_bind(registry, id, &zxdg_decoration_manager_v1_interface, 1)); +``` + +Using the decoration manager, you want to [set the "mode"](https://wayland.app/protocols/xdg-decoration-unstable-v1#zxdg_toplevel_decoration_v1:request:set_mode) of the decoration to either client side or server side: + +```cpp +auto decoration = zxdg_decoration_manager_v1_get_toplevel_decoration(manager, toplevel); // toplevel is from xdg_surface_get_toplevel + +zxdg_toplevel_decoration_v1_set_mode(decoration, ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE); +``` + +And that's it, you'll get server-side decorations enabled for your client: + +![Window decorations!](wayland.webp) + +There's one more part of the extension I didn't cover, and that's the ["configure" event](https://wayland.app/protocols/xdg-decoration-unstable-v1#zxdg_toplevel_decoration_v1:event:configure). According to the protocol spec, it's possible that the compositor will change the decoration mode from underneath your feet. Is this something that actually happens in real world Wayland compositors? I can't imagine this happens often, although I'm curious if you've heard of this. diff --git a/content/blog/wayland-ssd/wayland.webp b/content/blog/wayland-ssd/wayland.webp new file mode 100644 index 0000000000000000000000000000000000000000..09eb2d7f22dd42e3047ed8ba0f821683d20972c3 GIT binary patch literal 46252 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%0DurP|sUS#~`?XNo$i)x} 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 + {{ end }} + + {{ if .Params.math }} + {{ $math := resources.Get "js/katex.js" }} + {{ if hugo.IsProduction }} + {{ $math = $math | minify | fingerprint | resources.PostProcess }} + {{ end }} + + + {{ $autorender := resources.Get "js/auto-render.js" }} + {{ if hugo.IsProduction }} + {{ $autorender = $autorender | minify | fingerprint | resources.PostProcess }} + {{ end }} + + + {{ $style := resources.Get "css/katex.css" }} + {{ if hugo.IsProduction }} + {{ $style = $style | minify | fingerprint | resources.PostProcess }} + {{ end }} + + + + {{ end }} {{ end }}