Replies: 1 comment 1 reply
-
Now, this is a cool way to break my build 🤣 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hello Gros Michels and Cavendishes,
What's that? The last update was over half a year ago? And Silksong still isn't out? How tragic 😞.
In other news, good coding practices died today when I merged 30,000 lines of changes into main
As a result, enjoy this also way-too-big update detailing most of the changes that have occurred.
Note that there may still be changes because of my lack of planning.
General changes
metaconfig.toml
has been renamed topinnacle.toml
. Additionally,command = [...]
is nowrun = [...]
. Don't ask me why I'm doing random name changes.Lua
Pinnacle
table with all the config tables. Instead, you canrequire
them yourself:Rust
The API no longer uses an attribute macro to set up a config. Instead, use
pinnacle_api::main!(config_fn)
:This has the benefit of rust-analyzer still working when syntax isn't fully formed.
API functions are now accessible through free functions instead of unit-struct methods:
Input
General
Bind modifiers now allow you to ignore a set of modifiers. Previously, if you set a keybind with modifiers Super and Shift, the compositor would require that Super and Shift be pressed while Ctrl and Alt not be pressed for the bind to trigger. Now, you can opt out of strict modifier checking per modifier:
Support for the
iso_level3_shift
andiso_level5_shift
modifiers has been implemented.Bind modes have been implemented. These allow you to switch between sets of key and mousebinds. Also I called them "layers" because internally they're in a stack.
Release binds have been implemented. These allow you to execute an action on the release of a key or mouse button instead of on press. Additionally, if the bind has no on_press action, the key or mouse button used will still be passed through to any focused clients.
There is now a recommended way to set "quit" and "reload config" binds. Because configs are programs, they can hang or deadlock, preventing important keybinds like quitting from executing. Previously, you had to declare a hardcoded quit and reload config keybind within the
metaconfig.toml
file. Now, you define it within your config. Just make sure that your config doesn't somehow deadlock before setting these important binds.The API for setting input device options has changed. Now, you provide a closure that will act on current and newly connected input devices. This means you can now target specific devices like touchpads for settings.
Lua
Rust
Key and mousebinds have been reworked to use the builder pattern:
Modifiers have been changed to a bitflag instead of a list of modifiers:
Process
General
spawn_once
was more like "spawn it if another instance isn't already running". This was a little awkward when reloading a config and having things that you wanted to close reopen. Now, that functionality has been moved tospawn_unique
, andspawn_once
now actually does what it says.Lua
std::process::Command
. Instead of providing callbacks, spawning a process now yields aChild
if successful. You can attach callbacks to the child andwait
on it to retrieve exit information. There are helper functions that give you some of the older API's functionality.Rust
std::process
's. Now, you create aCommand
that you can thenspawn
. If successful, you'll get the standard IO of the spawned process to do whatever you'd like with. You can also wait for the child to exit.Output
connect_for_all
is nowfor_each_output
.The
setup
andsetup_loc
APIs have been removed until I think of something better. For now, consider using something likekanshi
or build something onfor_each_output
.Window
Layout
Aight I'm probably forgetting a bunch more stuff but the above is most of the big things that have changed.
Is 0.1 gonna release before Silksong? Is the cake a lie? Who knows! Let's hope I don't go silent for another half a year haha
Also I keep discarding and John Balatro isn't giving me the last card I need for a flush, rigged
...
What? You want to know if all this stuff actually works? Well there aren't any tests for the new stuff. What you're getting is like a few minutes of me ad hoc running everything just to make sure it works 👍
Beta Was this translation helpful? Give feedback.
All reactions