v0.2: Zipping through forsaken cities
Important
This release contains breaking changes. For details and migration steps, visit the wiki page.
Additionally, there are new features that require additions to existing configs (details below).
Users with a Rust config will additionally need to update pinnacle-api to the "v0.2.0" tag to take advantage of said new features.
Greetings humans and robots,
Well it seems another year has come and gone, and hey it only took this big rock we're standing on halfway around the sun to get a new version out! Ok, admittedly I would've liked the time between v0.1 and now to be a bit less than half a year, but rest assured I spent that time doing very, very high priority items. Like playing Silksong.
Nix package
A big shoutout to @cassandracomar for adding a Nix package! I have no idea how any of it works so visit the wiki page for details.
New features
Tiled window resizing
You can now resize tiled windows! This is something that Awesome doesn't generally have that I miss every time I go back to it to test stuff out.
tile_resizing.mp4
Resizing works using the already-existing begin_resize function.
Important
If you haven't already visited the breaking changes page at the top, in order for Pinnacle to remember tile sizes, you'll now need to
provide an identifier when submitting a layout tree.
For Lua users using the AUR package, your current config won't break, but I highly recommend following the steps in that page to
avoid breakage in the future.
For Rust users, update pinnacle-api to the "v0.2.0" tag to have rustc yell at you to make the change.
v0.1.0 configs will still work, but tiles will reset their size on tag and layout change without updates.
It's not perfect—there are issues with Pinnacle "forgetting" tile sizes when you fullscreen and unfullscreen a window for example—but it's a great start!
Focus borders and titlebars
You may have noticed it in the previous clip, but we now have focus borders (finally) and titlebars! These are drawn using Snowcap, our widget system that's also used for the quit prompt and bind overlay.
Important
This feature requires additions to existing configs.
Lua: Add these lines to your config. To remove the titlebar, replace focus_border_with_titlebar with just focus_border.
Rust: Add these lines to your config. To remove the titlebar, replace new_with_titlebar with just new.
ext-workspace-v1
A big thank you to @cassandracomar for implementing ext-workspace-v1! Bars implementing the protocol should now be able to display tags and provide tag controls.
ext-image-capture-source-v1 and ext-image-copy-capture-v1
Pinnacle now implements the ext image capture protocols. Notably, this enables capturing of individual windows. To use this protocol for PipeWire capture for applications like OBS, you will need xdg-desktop-portal-wlr 0.8 installed.
Floating layout
There is now a true floating layout courtesy of @Ph4ntomas! All windows on the floating layout will become floating. To add the floating layout to existing configs:
- Lua: Use
Layout.builtin.floating() - Rust: Use
pinnacle_api::layout::generators::Floating::default()
8-directional window resizing
Previously, window resizing was corner based and worked like this depending on where your pointer was in the window:
Now, thanks to @Ph4ntomas, it works like this for more control:
Misc additions
- Pinnacle now remembers whether a monitor was powered after unplug and replug (thanks @anriha)
- Drag-and-drop now works between Wayland and Xwayland windows
- The Snowcap API has been exposed as an experimental module (for the Rust side, Lua users technically always had access to it). This API will 100% change in the future, but if you want to change the color of the focus border for example then you'll need to go through this API to create the
Colors necessary to do so.- Lua:
local snowcap_api = require("snowcap") - Rust:
use pinnacle_api::experimental::snowcap_api;
- Lua:
API additions
-
OutputHandle::active_tags (Lua, Rust) (by @Ph4ntomas)
-
OutputHandle::inactive_tags (Lua, Rust) (by @Ph4ntomas)
-
WindowHandle::move_to_output (Lua, Rust) (by @Ph4ntomas)
-
WindowHandle::swap (Lua, Rust) (by @Ph4ntomas)
-
WindowHandle::lower (Lua, Rust) (by @Ph4ntomas)
-
Floating layout (Lua, Rust) (by @Ph4ntomas)
-
Signals
Changes
- Outputs are now manually focused instead of being implicitly the one that the pointer is on. See the breaking changes page to restore the old behavior.
- Focusing a different output will now focus the last focused window on that output, rather than not changing the focused window.
- And a whole load of bugfixes that probably should've been backported to v0.1 but I was too lazy to do that
- And probably some other stuff I'm forgetting
Contributions
- luaapi: improve custom searcher logic by @Ph4ntomas in #323
- justfile: Fix various error when building from source by @Ph4ntomas in #322
- Add floating layout by @Ph4ntomas in #326
- layout: Update window floating loc on resize by @Ph4ntomas in #333
- window: Update position on LayoutMode changes by @Ph4ntomas in #331
- Make compositor-initiated window resizing also use single edges by @Ph4ntomas in #335
- api/window: Add a RPC to move a window to other output by @Ph4ntomas in #337
- api: add [in]active tags filtering to OutputHandle by @Ph4ntomas in #339
- window: Add method to swap two windows by @Ph4ntomas in #340
- api/window: add response to WindowHandle::MoveToOutput RPC by @Ph4ntomas in #341
- Add WindowHandle::lower by @Ph4ntomas in #344
- Decrease tests flakyness by @Ph4ntomas in #345
- api/lua - Use pcall when calling user code by @Ph4ntomas in #347
- XDG Shell protocol: Add tests to ensure protocol correctness by @Ph4ntomas in #349
- Refactor window mapping by @Ph4ntomas in #348
- XDG Shell - Respect client output preference for fullscreen requests by @Ph4ntomas in #351
- feat(nix): add packages and modules by @cassandracomar in #352
- Adds send_message method to LayerHandle by @Ph4ntomas in #360
- Add powered to ConnectorSavedState by @anriha in #366
- feat: implement ext-workspace-v1 by @cassandracomar in #358
- feat(nix): add nixGL support for non-NixOS by @cassandracomar in #367
- api/lua: Fix XDG_DATA_DIRS usage. by @Ph4ntomas in #373
- Tag: Add signal to notify config of tag lifetime by @Ph4ntomas in #372
- window: Fix floating window initial size by @Ph4ntomas in #378
- snowcap: pool surface events on update by @Ph4ntomas in #379
- test: fix api::tag::tag_signal_created race-condition by @Ph4ntomas in #380
- Window created/destroyed/layout_mode_change signals by @anriha in #368
- tests: disable automatic features, and pass them as a cargo test flag by @Ph4ntomas in #382
- snowcap: Allow updating Layers attributes by @Ph4ntomas in #387
- Remove dash from the rockspec in nix by @anriha in #394
- fix(integration): fix syntax error in lua tests by @Ph4ntomas in #399
New Contributors
- @Ph4ntomas made their first contribution in #323
- @cassandracomar made their first contribution in #352
Full Changelog: v0.1.0...v0.2.0
