github pinnacle-comp/pinnacle v0.2.0

19 hours ago

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,

no berry for you

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.

focus_border_and_titlebar

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:
image

Now, thanks to @Ph4ntomas, it works like this for more control:
image

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;

API additions

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

New Contributors

Full Changelog: v0.1.0...v0.2.0

Don't miss a new pinnacle release

NewReleases is sending notifications on new releases.