Progress tracking for GlazeWM C# to Rust rewrite 🦀
lars-berger opened this issue · comments
This issue serves as a central place to track the progress of the C# to Rust rewrite.
Current progress stands at roughly 90%:
███████████████░️░️░️░️░️
If you want to reserve a particular task, please leave a message in this issue, or in the #dev-chat channel on the Discord server.
Purpose of the rewrite
The goal is to make the WM as speedy and stable as possible, as well as easier to maintain.
It'll also be an opportunity to introduce some breaking changes. Most notably will be the replacement of the built-in bar with Zebar (https://github.com/glzr-io/zebar). It's a separate project but we'll focus on keeping the installation of both smooth and simple. We're also looking to make window rules and binding modes a lot more extendable.
Big tasks:
- User config parsing, validation, and generation️
- Hooking window events️
- Hooking mouse events️
- Hooking keyboard events️
- IPC client and server
- Command parsing️
- Populating initial WM state️
- Watcher process
- System tray
- Wix installer (also package Zebar using Burn bundle)
Event handlers:
- DisplaySettingsChanged
- WindowDestroyed️
- WindowFocused️
- WindowHidden️
- WindowLocationChanged️
- WindowMinimizeEnded️
- WindowMinimized️
- WindowMovedOrResized️
- WindowShown️
Common commands:
- ExecProcess
- SetBindingMode
Container commands:
- AttachContainer️
- CenterCursorOnContainer️
- DetachContainer️
- FlattenSplitContainer️
- FocusContainerUnderCursor
- FocusInDirection
- MoveContainerWithinTree️
- RedrawContainers️
- ReplaceContainer️
- ResizeContainer️
- SetActiveWindowBorder
- SetFocusedDescendant️
- SyncNativeFocus️
- ToggleFocusMode
- ToggleTilingDirection️
Monitor commands:
- AddMonitor️
- RefreshMonitorState
- RemoveMonitor
User config commands:
- ReloadUserConfig
- RunWithSubjectContainer (⌛ WIP @lars-berger)
Window commands:
- CloseWindow️
- IgnoreWindow
- ManageWindow️
- MoveWindow
- ResizeWindowBorders
- ResizeWindow️
- SetFloating️
- SetMaximized️
- SetMinimized️
- SetTiling️
- SetWindowSize
- ToggleFloating️
- ToggleMaximized️
- UnmanageWindow️
Workspace commands:
- ActivateWorkspace️
- DeactivateWorkspace
- FocusWorkspace
- FocusWorkspaceRecent
- FocusWorkspaceSequence
- MoveWindowToWorkspace
- MoveWorkspaceInDirection (⌛ WIP @lars-berger)
thank you for updating!
So excited to try the Rust rewrite 🦀
It appears that it will be arriving imminently.
Very cool to se the progress. This has gone a lot faster then I expected after you announced the rewrite, great work :)
I had an idea for a new feature when it comes to the bar, but now I'll have a look in Zebar project instead.
I love using your work in a daily basis, really thank you !
Yes! I also greatly appreciate your efforts and use Glaze every day at work. Thank you!
Following 🙏🏽
Please add this to the upcoming reworks default configuration file. Prevents the lock screen from constantly waking the PC up.