Major internals rewrite
I just completed a major rewrite of the internals.
Most significantly, each desktop shell component now has it’s own gui runtime. Previously, they were all managed by a single iced (the gui toolkit i use) runtime, but the need to separate state for each component and isolate keyboard/window events required lots of hacky code that messed with the runtime’s internals.
Also, the implementation of xdg-layer-shell (wayland protocol for making desktop shell components instead of regular windows) has an issue where window unfocus events aren’t handled properly between two windows in one iced runtime.
The switch to independent gui runtimes fixed a lot of the strange bugs I was having. I had learned to just avoid behaviors that caused them, but it should be a lot friendlier for new users now.
In anticipation for the plugin system, I rewrote the api for launcher providers to be more in line with the final API i envision.
Now, providers can dynamically create items to show the user based on the text entered. This allowed me to make the calculator feature a simple dynamic provider instead of a bespoke feature with lots of unique code.
It also opens up the opportunity for more kinds of providers in the future, such as a translator, web search, or file fuzzy finder.
I still have a lot to rewrite, but I want to approach the creation of the plugin and config system carefully, unlike my last iteration.
A major inspiration for me is the noctalia shell v5 rewrite, it’s plugin system is extremely cool, and each plugin can be configured in it’s settings editor.
While i don’t currently plan to make a full desktop experience like noctalia, having plugins that can add launcher providers and bar widgets, and specify configuration options for them is really cool, and I hope to be able to create something similar.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.