glzr-io/glazewm

Progress tracking for GlazeWM C# to Rust rewrite 🦀

lars-berger opened this issue · 14 comments

This issue serves as a central place to track the progress of the C# to Rust rewrite.

Current progress stands at roughly 95 100%:
████████████████████

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)
  • Code signing

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

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

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.

#518 (comment)

Love this project, thank you for everything ❤ It's been something I've always wanted, but lack the skill and time to work on the problem myself.

Can I ask:

  1. I assume as this is an entire rewrite, configs from now won't be compatible with v3?
  2. As a web developer, I want to reach out my hand with assistance for helping create a documentation site. I see on the orgs profile it says "Website up soon". If you're looking for any help with this I'd be happy to help. While mostly a developer using React, I'm quite comfortable with Jekyll/Hugo for simplicity.

Love this project, thank you for everything ❤ It's been something I've always wanted, but lack the skill and time to work on the problem myself.

Can I ask:

  1. I assume as this is an entire rewrite, configs from now won't be compatible with v3?
  2. As a web developer, I want to reach out my hand with assistance for helping create a documentation site. I see on the orgs profile it says "Website up soon". If you're looking for any help with this I'd be happy to help. While mostly a developer using React, I'm quite comfortable with Jekyll/Hugo for simplicity.

For point 1, as per the README file in the quick-test(v3) branch, it appears that the current configuration is compatible with v3.

waiting for this to be completed ❤️

waiting for this to be completed ❤️

yup cant wait for rust rewrite 💖

V3 is finally out now! Thanks for all the feedback and troubleshooting on here and on the Discord the last few months ❤️

Release

image

Thanks to all involved 🦀