Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Progress tracking for GlazeWM C# to Rust rewrite 🦀 #604

Open
53 of 62 tasks
lars-berger opened this issue May 9, 2024 · 0 comments
Open
53 of 62 tasks

Progress tracking for GlazeWM C# to Rust rewrite 🦀 #604

lars-berger opened this issue May 9, 2024 · 0 comments

Comments

@lars-berger
Copy link
Collaborator

lars-berger commented May 9, 2024

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

Current progress stands at roughly 85%:
███████████████░️░️░️░️░️

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 (⌛ WIP @lars-berger)
  • ToggleTilingDirection️

Monitor commands:

  • AddMonitor️
  • RefreshMonitorState
  • RemoveMonitor

User config commands:

  • ReloadUserConfig
  • RunWithSubjectContainer

Window commands:

  • CloseWindow️
  • IgnoreWindow (⌛ WIP @lars-berger)
  • ManageWindow️
  • MoveWindow
  • ResizeWindowBorders (⌛ WIP @lars-berger)
  • ResizeWindow️
  • SetFloating️
  • SetMaximized️
  • SetMinimized️
  • SetTiling️
  • SetWindowSize (⌛ WIP @lars-berger)
  • ToggleFloating️
  • ToggleMaximized️
  • UnmanageWindow️

Workspace commands:

  • ActivateWorkspace️
  • DeactivateWorkspace
  • FocusWorkspace
  • FocusWorkspaceRecent
  • FocusWorkspaceSequence
  • MoveWindowToWorkspace (⌛ WIP @lars-berger)
  • MoveWorkspaceInDirection (⌛ WIP @lars-berger)
@lars-berger lars-berger pinned this issue May 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant