glzr-io / glazewm

GlazeWM is a tiling window manager for Windows inspired by i3 and Polybar.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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)
commented

thank you for updating!

So excited to try the Rust rewrite 🦀

commented

It appears that it will be arriving imminently.

commented

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 🙏🏽

commented

Please add this to the upcoming reworks default configuration file. Prevents the lock screen from constantly waking the PC up.

#518 (comment)