Skip to content

Releases: pinnacle-comp/pinnacle

v0.2.3

03 Feb 00:47

Choose a tag to compare

Featuring copy-paste errors from me 9 months ago!

Additions

  • There is now very basic tablet support. I mean really basic as in the pointer doesn't even move when you hover the pen around. Probably not all that useful until I implement that.
  • You can now specify drm devices that Pinnacle will use with the PINNACLE_DRM_DEVICES environment variable:
    PINNACLE_DRM_DEVICES="/dev/dri/card1:/dev/dri/renderD128" pinnacle
    Devices not listed will not be used. (#413 - thanks @rustysec)

Fixes

  • Builds on ARM should work now
  • nix: The UWSM session should have a shorter name now (#407 - thanks @cassandracomar)
  • nix: Cross compilation fixes (#410 - thanks @doronbehar)
  • Applications like Nautilus no longer start maximized (read: I copy pasted the code for maximize_request to unmaximize_request and didn't change it) (#419 - thanks @Ph4ntomas)

v0.2.2

16 Jan 00:15

Choose a tag to compare

I have been playing an alarming amount of Baba is You recently. Really beat the game and I still don't know how to do Deep Forest - E. Perhaps it will never be done.

Changes

  • When VRR is on, the cursor will now match the refresh rate of only fullscreen windows with a content type of game or that are xwayland. Previously, this occurred with all fullscreen windows, leading to choppy cursor movement with fullscreen terminals, for example. (thanks @anriha)

Bug fixes

  • The Nix package should now properly re-layout windows on certain changes (thanks @anriha)
  • VRAM should leak less/not at all when opening and closing decorated windows and Snowcap widgets (I think) (thanks @Ph4ntomas)

What's changed

  • fix: properly remove root cache entry when a surface is destroyed by @Ph4ntomas in #405
  • nix: disable wlcs for the final package by @anriha in #401
  • backend: implement content-type based cursor throttling by @anriha in #406

Full Changelog: v0.2.1...v0.2.2

v0.2.1

31 Dec 21:33

Choose a tag to compare

If you got a second notification for this release it's because I forgot to update Cargo.lock 😅


What's this? A patch? With bug fixes? It's more likely than you think.

Bug fixes

  • Floating windows no longer have their tags assigned to active ones when unplugging and replugging their monitor (or turning it off and on)
  • Monitors now properly turn on if they were turned off and on in another tty

v0.2.0

30 Dec 21:02

Choose a tag to compare

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

  • 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...
Read more

v0.2.0-alpha.2

16 Dec 06:33

Choose a tag to compare

v0.2.0-alpha.2 Pre-release
Pre-release

Hello left twixes and right twixes,

Skong DLC teaser just dropped. Anyway, here's another alpha! What makes it an alpha or a beta or a full release? I have no clue haha probably should just call it a release candidate or something.

Breaking Changes

  • Rust
    • FocusBorder::decorate now returns a Result

Features

  • Drag-and-drop between Wayland and Xwayland windows should work now, big thanks to the people working on Smithay for that!
  • The default config now contains keybinds for media and brightness control

Bug Fixes

  • The focus border should now be correctly sized on Godot on Wayland

Contributions

  • Remove dash from the rockspec in nix by @anriha in #394
  • fix(integration): fix syntax error in lua tests by @Ph4ntomas in #399

Full Changelog: v0.2.0-alpha.1...v0.2.0-alpha.2

v0.2.0-alpha.1

22 Nov 04:16

Choose a tag to compare

v0.2.0-alpha.1 Pre-release
Pre-release

Heya silkers and songers,

Well after skonging and playing stoneblock 4 doing productive things for the past couple of months, here's the first alpha for 0.2, now featuring resizable tiles and window decorations! Full release notes when the full release comes out.

There will probably be a few small breaking changes as I refine bits of the config API.

Special thanks to the following contributors:

New Contributors

Full Changelog: v0.1.0...v0.2.0-alpha.1

v0.1.0

31 May 20:16

Choose a tag to compare

v0.1.0: Arriving at the base of the mountain

Hello ladies and gentlemen,

We're finally here! Yea there's still, idk, the whole rest of the mountain, but small steps first.

image

So uh, this release was supposed to come out three days ago. Unfortunately I caught a stomach bug or got food poisoning or something 🫠.

Why three days ago? Well, it's because that's Pinnacle's birthday!

$ git log --max-parents=0
commit 1c1c685385502405a513879703cc34e4ab7d1c56
Author: Ottatop <120758733+Ottatop@users.noreply.github.com>
Date:   Sun May 28 19:10:42 2023 -0500

    Initial commit

Yep. Two whole years and we still don't have any indicator of which window is focused. thing


This is the first release of Pinnacle, a Wayland compositor I'm writing that's inspired by AwesomeWM. That means you get:

  • Dynamic tiling
  • Tags instead of workspaces
  • Configuration in Lua
  • The beginnings of a built-in widget system (not yet configurable)

Because I've been indoctrinated by the Cult of Rust, you can also configure Pinnacle with Rust! Two configuration libraries in two completely polar opposite languages—you can imagine why this release took two years.

To get started, see the wiki. Please note that the wiki does not document every available API feature, as that's a lot of doc duplication I'd have to do. For API documentation, see the Lua and Rust references.

For those with access to the AUR, there's an official AUR package.

Changes since 0.1.0-beta.1

Changes

  • pinnacle client no longer prints a few logs when running with -e or piped input
  • Snowcap now accepts WGPU environment variables on startup (by @sapient-cogbag in #315)

Bug fixes

  • Window::get_focused now returns the actual focus, rather than the last focus on the focused output
  • Moving a window with set_geometry now correctly updates its tags if it moves to another output
    • As a side effect, moving a floating window by dragging it now updates its tags
      to the output that it has more area on, rather than the output that the cursor is on
  • Fixed some applications not fullscreening on open, like mpv --fullscreen

Special thanks to these contributors!

Changelog since v0.1.0-beta.1: v0.1.0-beta.1...v0.1.0

v0.1.0-beta.1

22 Apr 05:14

Choose a tag to compare

v0.1.0-beta.1 Pre-release
Pre-release

Greetings Whoppers and Big Macs,

We're in beta now! "How is this any different from alpha?", I hear you asking. Well it's only bug fixes from here on out until the actual release (as you can tell I've been sneaking in some stuff between the alphas). I'll let this beta stew for a few days and if all goes well we're set for release and I can finally get to work on new features!

Changes since 0.1.0-alpha.2

New features

  • Child windows now open centered against their parent window
  • API: The set_env function has been resurrected from the dead.
    • This allows you to set environment variables for all newly spawned processes.

Changes

  • Getting stdio from spawned processes is now opt-in. Set the pipe_std{in,out,err} option to pipe that file descriptor for use.
    • This fixes an issue where unconditional piping caused applications to freeze when spewing out too much data on stdout/err due to the pipe buffer filling up
  • Popups now appear above everything else

Bug fixes

  • Floating windows no longer jump to the top left of the output if they are not on active tags while the output is disconnected and reconnected
  • Windows opened when there are no tags will now inherit the next added tag. This prevents xdg-autostart windows from getting lost when the Rust config is compiling, for example
  • It is no longer possible for a session locker to lock the session while it is already locked
  • The pointer should now disappear from the previous output if it moves slowly to a new output (haven't tested this lol)
  • Really large popups should no longer overflow past the top or left of the display in some circumstances

v0.1.0-alpha.2

10 Apr 01:37

Choose a tag to compare

v0.1.0-alpha.2 Pre-release
Pre-release

What's up lemons and limes,

The cake is real.
image

In other less important news, hey here's another pre-release!

Changes since 0.1.0-alpha.1:

New features

  • Support for setting the xkb keymap through a file/string
  • Support for cycling and setting keyboard layouts
  • Binds can now be set to trigger when the session is locked with the allow_when_locked option

Changes

  • The way windows' layout modes are tracked has been modified. Now, setting a window to, say, fullscreen then repeatedly toggling maximized won't leave the window stuck between fullscreen and maximized. Toggles will now attempt to return the window to floating or tiled (whichever of the two the window was in previously).
  • Fullscreen and maximized requests from clients are now tracked to prevent the scenario where you started with a maximized window, double-clicked a YouTube video to make it fullscreen, and the window returned to tiled instead of maximized when unfullscreened.

Bug fixes

  • Having multiple screencopy clients active at once now works
  • Pointer motion is now sent to clients when they move under the pointer. This fixes right-click menus being in the wrong place when fullscreening Firefox and right-clicking without moving the mouse.

v0.1.0-alpha.1

29 Mar 04:46

Choose a tag to compare

v0.1.0-alpha.1 Pre-release
Pre-release

Hey hopers and copers,

Silksong still isn't out 🤡. But this release sure is! Ok, it's an alpha pre-release, but that's still more than anything Team Cherry has given us in the last 5 years :P.

So what's left to do until the full first release? Well, a few bugs still need squashing and there are some small feature requests that I want to implement. Other than that, there shouldn't be any major breaking changes until the full release. But I still reserve the right to do that.

If you'd like to try Pinnacle out and you use Arch btw™️, there is an AUR package for the main branch (currently doesn't bundle the Lua API, but this release contains a rock you can install with LuaRocks).

Full release notes once the full release comes out.

What's Changed

Literally everything lol

New Contributors

Full Changelog: https://github.com/pinnacle-comp/pinnacle/commits/v0.1.0-alpha.1