Skip to content

Commit

Permalink
Prepare roadmap and documentation for 0.4 (#130)
Browse files Browse the repository at this point in the history
* Re-organizes roadmap, and moves menu from 0.4 to 0.5.

* Updates status to reflect early access state.

* Updates roadmap to prepare for 0.4 tag.
  • Loading branch information
phkaeser authored Oct 20, 2024
1 parent b4a261f commit 3e22eae
Show file tree
Hide file tree
Showing 2 changed files with 157 additions and 144 deletions.
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,16 @@ How it looks, running in a window using the default theme:

### Current status

Wayland Maker is in early development stage. Highlights for current version (0.3):
**Early access**: Wayland Maker provides basic functionality for using it on a single monitor. There will be bugs... reports are welcome!

* *new:* Screen saver support, through `ext_session_lock_v1` and `idle_inhibit_unstable_v1` protocols.
* *new:* Configurable through plist text files: [base configuration](etc/wlmaker.plist), [style](/etc/style-default.plist) and [docks & workspaces](etc/wlmaker-state.plist).
* *new:* wlr layer shell support (`wlr_layer_shell_unstable_v1`), fully implemented & tested.
Highlights for current version ([0.4](https://github.com/phkaeser/wlmaker/releases/tag/v0.4)):

* *new:* Configurable layout and scaling for the output.
* *new:* Hot corners with configurable actions, default to 'lock' or 'inhibit' locking.
* *new:* Ready to build with [wlroots 0.18](https://gitlab.freedesktop.org/wlroots/wlroots/-/tags).
* Screen saver support, through `ext_session_lock_v1` and `idle_inhibit_unstable_v1` protocols.
* Configurable through plist text files: [base configuration](etc/wlmaker.plist), [style](/etc/style-default.plist) and [docks & workspaces](etc/wlmaker-state.plist).
* wlr layer shell support (`wlr_layer_shell_unstable_v1`), fully implemented & tested.
* Appearance matches Window Maker: Decorations, dock, clip.
* Support for Wayland XDG shell (mostly complete. Bug reports welcome).
* Initial support for X11 applications (positioning and specific modes are missing).
Expand Down Expand Up @@ -51,8 +56,8 @@ Protocol support:
[![Packaging status](https://repology.org/badge/vertical-allrepos/wlmaker.svg)](https://repology.org/project/wlmaker/versions)

> [!NOTE]
> `wlmaker` is still in early development, so it's not recommended to use it as
> your primary compositor.
> `wlmaker` covers basic functionality for using it on a single monitor. Please
> report bugs you find, and functionality you're missing.
## Contributing

Expand Down
284 changes: 146 additions & 138 deletions doc/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,65 +5,134 @@ Maker, and fully theme-able and configurable.

Support for visual effects to improve usability, but not for pure show.

## 0.1 - MVP milestone
## Plan for 0.6

### Features
**Focus**: Multiple outputs.

* [done] Support `xdg_shell`.
* Support for dynamic output configurations.
* Multiple monitors, with output mirrored across.
* Per-monitor fractional scale.

* [done] Support `layer_shell`.
## Plan for 0.5

* [done] Support window decoration protocol.
* [done] Style of title bar, iconify and close buttons similar to Window Maker.
* [done] Window menu, with basic window actions (not required to adapt to state).
**Focus**: Add root menu and window menu.

* [done] Multiple workspaces
* [done] Navigate via keys (ctrl-window-alt-arrows, hardcoded).
* Menu, based on toolkit.
* Root menu.
* Available as window menu in windows.
* Available as (hardcoded) application menu.
* Menu with submenus.
* Window menu adapting to window state.
(Eg. "Maximize" shown when not maximized, otherwise: "restore".)

* [done] Dock, visible across workspaces.
* Bug fixes
* Resize-from-left jitter observed on the raspi or with gnome-terminal.
* Particularly when using large decorations, there is resize jitter.
* When switching workspace, pointer state appears to be reset.

## [0.4](https://github.com/phkaeser/wlmaker/releases/tag/v0.4)

**Focus**: Make it ready for "Early-Access".

* [done] Thorough tests of both pointer and keyboard state.
* [done] Issue found when killing saylock that keyboard focus is incorrect.
* [done] Re-activate workspace & windows after lock.

* [done] Screensaver support.
* [done] Magic corner to lock immediately.
* [done] Magic corner to inhibit locking.
* [done] Configurable corners & timeout.

* [done] Documentation updates
* [done] Update README to reflect "early-access" vs. "early development".
* [done] Screenshots included.

* [done] Update build system to use libraries from the base system rather than
the `dependencies/` subdirectory, if versions are avaialble.
* [done] Upgrade to wlroots 0.18. (support both 0.17 and 0.18 in code).
* [done] Have github actions compile on trixie, using the host library.
* [done] Have github actions compile not just 0.17, but also 0.18.
* [done] Verify if that & libdrm update works with lightdm. It
[does not](https://github.com/canonical/lightdm/issues/267).

* [done] Support different output scale & transformations
* [done] Add a style file that has dimensions suitably for a Hi-Res screen (eg. Retina) ([#99](https://github.com/phkaeser/wlmaker/issues/99))
* [done] Scale icons to tile size.
* [done] Add option to specify an output transformation ([#97](https://github.com/phkaeser/wlmaker/issues/87)). Note: Will not work well in X11 window mode.
* [done] Add commandline arguments to configure size of window ([#98](https://github.com/phkaeser/wlmaker/issues/98))

* [done] Misc
* [done] Expose the decoration manager configurables through the config file.
* [done] Add support for switching virtual terminals ([#6](https://github.com/phkaeser/wlmaker/issues/6)).

* [done] Bug fixes
* [done] Investigate & fix handling of axis (touchpad) on tty.
* [done] Fix wrong size for lock surface when Output scale != 1.0 on tty.
* [done] Fix leak / double free with config_dict_ptr.

## [0.3](https://github.com/phkaeser/wlmaker/releases/tag/v0.3)

* Bugfixes
* [done] Fix issue on fullscreen: The window border is kept, having the window off by 1 pixel.
* [done] Add commandline flag to enable/disable XWayland start.
* [done] Verify startup on console works.

* [done] Screensaver support.
* [done] Implement ext-session-lock-v1 protocol.
* [done] Verify screen lock works with eg. swaylock.
* [done] Implement timer for lock, and support zwp_idle_inhibit_manager_v1 to inhibit.
* [done] Verify this still works after the to-toolkit move.

* [done] Configuration file support
* [done] Pick or implement parser for configuration file.
* [done] File for basic configuration: Keyboard map & config, auto-started apps.
* [done] Configure idle monitor and screensaver command via config file.
* [done] Configurable key combinations for basic window actions (minimize, ...).
* [done] File for visual style (theme): decoration style, background.
* [done] File to define workspaces and dock, falling back to default if not provided.
* [done] Include at least one additional theme.

* [done] Theme details
* [done] Style for resizebar.
* [done] Style for the window's margin.
* [done] Style for the window border.
* [done] Titlebar icons centered.
* [done] Titlebar icons with text color, blurred or focussed.
* ~~Bezel 'off' color so it is visible on black (not doing).~~
* [done] Titlebar font and size.
* [done] Style for clip.
* [done] Style for task list fill and text color.

* [done] Support `layer_shell`, based on toolkit.
* [done] XDG Popups.

* [done] Multiple workspaces, based on toolkit.
* [done] Remove the earlier non-toolkit code.
* [done] Background color for separate workspaces, configured in state.
* [done] Default background color, picked up from style file.
* [done] Navigate via keys (ctrl-window-alt-arrows, configurable in plist).

* [done] Dock, visible across workspaces, based on toolkit.
* [done] Keep track of subprocesses and the corresponding windows.
* [done] Style similar to Window Maker.
* [done] With application launchers (hardcoded).
* [done] With application launchers (configurable in file).

* [done] Clip
* [done] Clip, based on toolkit.
* [done] Display the current workspace.
* [done] Buttons to switch between workspaces.

* [done] Application launchers
* [done] Application launchers, based on toolkit.
* [done] Display an icon.
* [done] Display application status (*starting*, *running*).
* [done] Configurable (in code).

* [done] Window actions
* [done] Move (drag via title bar, or window-alt-click)
* [done] Resize windows, including a resize bar.
* [done] Fullscreen windows.
* [done] Maximize windows.
* [done] Minimize (*iconify*) windows.
* [done] Roll up (*shade*) windows.
* [done] Raise window when activated.

* [done] Visualization of iconified applications.

* [done] Task list (window-alt-esc), cycling through windows.
* [done] Migrate implementation to wlmtk.
* [done]Key combination configurable in the config file.

* [done] Auto-start of configured applications.
* [done] Configurable in code.

* [done] Verify minimal application set to run:
* [done] Terminal: `foot`
* [done] Google Chrome
* [done] Mozilla Firefox

* [done] Works as a X11 window, Wayland client or standalone compositor.

### Internals and code organization

* [done] git submodule for direct and critical dependencies.
* [done] CMake as build system.
* [done] `test` and `doc` targets.
* [done] Published as open source.
* [done] Build & compile off released dependency versions.

## Plan for 0.2
## [0.2](https://github.com/phkaeser/wlmaker/releases/tag/v0.2)

* [done] Issues to fix:
* [done] Fix out-of-sync display of server-side decoration and window content when resizing.
Expand Down Expand Up @@ -125,126 +194,65 @@ Support for visual effects to improve usability, but not for pure show.
* Ensure the main features (eg. all explicit actions and features above) are
tested.

## Plan for 0.3

* Bugfixes
* [done] Fix issue on fullscreen: The window border is kept, having the window off by 1 pixel.
* [done] Add commandline flag to enable/disable XWayland start.
* [done] Verify startup on console works.
## [0.1 - MVP milestone](https://github.com/phkaeser/wlmaker/releases/tag/v0.1)

* [done] Screensaver support.
* [done] Implement ext-session-lock-v1 protocol.
* [done] Verify screen lock works with eg. swaylock.
* [done] Implement timer for lock, and support zwp_idle_inhibit_manager_v1 to inhibit.
* [done] Verify this still works after the to-toolkit move.
### Features

* [done] Configuration file support
* [done] Pick or implement parser for configuration file.
* [done] File for basic configuration: Keyboard map & config, auto-started apps.
* [done] Configure idle monitor and screensaver command via config file.
* [done] Configurable key combinations for basic window actions (minimize, ...).
* [done] File for visual style (theme): decoration style, background.
* [done] File to define workspaces and dock, falling back to default if not provided.
* [done] Include at least one additional theme.
* [done] Support `xdg_shell`.

* [done] Theme details
* [done] Style for resizebar.
* [done] Style for the window's margin.
* [done] Style for the window border.
* [done] Titlebar icons centered.
* [done] Titlebar icons with text color, blurred or focussed.
* ~~Bezel 'off' color so it is visible on black (not doing).~~
* [done] Titlebar font and size.
* [done] Style for clip.
* [done] Style for task list fill and text color.
* [done] Support `layer_shell`.

* [done] Support `layer_shell`, based on toolkit.
* [done] XDG Popups.
* [done] Support window decoration protocol.
* [done] Style of title bar, iconify and close buttons similar to Window Maker.
* [done] Window menu, with basic window actions (not required to adapt to state).

* [done] Multiple workspaces, based on toolkit.
* [done] Remove the earlier non-toolkit code.
* [done] Background color for separate workspaces, configured in state.
* [done] Default background color, picked up from style file.
* [done] Navigate via keys (ctrl-window-alt-arrows, configurable in plist).
* [done] Multiple workspaces
* [done] Navigate via keys (ctrl-window-alt-arrows, hardcoded).

* [done] Dock, visible across workspaces, based on toolkit.
* [done] Keep track of subprocesses and the corresponding windows.
* [done] Dock, visible across workspaces.
* [done] Style similar to Window Maker.
* [done] With application launchers (configurable in file).
* [done] With application launchers (hardcoded).

* [done] Clip, based on toolkit.
* [done] Clip
* [done] Display the current workspace.
* [done] Buttons to switch between workspaces.

* [done] Application launchers, based on toolkit.
* [done] Application launchers
* [done] Display an icon.
* [done] Display application status (*starting*, *running*).
* [done] Configurable (in code).

* [done] Task list (window-alt-esc), cycling through windows.
* [done] Migrate implementation to wlmtk.
* [done]Key combination configurable in the config file.

* [done] Build & compile off released dependency versions.

## Plan for 0.4

**Focus**: Add menus & make it ready for "Early-Access".

* Thorough tests of both pointer and keyboard state.
* [done] Issue found when killing saylock that keyboard focus is incorrect.
* [done] Re-activate workspace & windows after lock.
* Fix bug: When switching workspace, pointer state appears to be reset.
* Fix bug: resize-from-left jitter observed on the raspi or with gnome-terminal.
* Fix bug: Particularly when using large decorations, there is resize jitter.

* Menu, based on toolkit.
* Available as window menu in windows.
* Available as (hardcoded) application menu.
* Root menu.
* Menu with submenus.
* Window menu adapting to window state.
(Eg. "Maximize" shown when not maximized, otherwise: "restore".)

* [done] Screensaver support.
* [done] Magic corner to lock immediately.
* [done] Magic corner to inhibit locking.
* [done] Configurable corners & timeout.
* [done] Window actions
* [done] Move (drag via title bar, or window-alt-click)
* [done] Resize windows, including a resize bar.
* [done] Fullscreen windows.
* [done] Maximize windows.
* [done] Minimize (*iconify*) windows.
* [done] Roll up (*shade*) windows.
* [done] Raise window when activated.

* Documentation updates
* Update README to reflect "early-access" vs. "early development".
* [done] Screenshots included.
* [done] Visualization of iconified applications.

* Update build system to use libraries from the base system rather than
the `dependencies/` subdirectory, if versions are avaialble.
* [done] Upgrade to wlroots 0.18. (support both 0.17 and 0.18 in code).
* [done] Have github actions compile on trixie, using the host library.
* [done] Have github actions compile not just 0.17, but also 0.18.
* [done] Verify if that & libdrm update works with lightdm. It
[does not](https://github.com/canonical/lightdm/issues/267).
* [done] Task list (window-alt-esc), cycling through windows.

* Support different output scale & transformations
* [done] Add a style file that has dimensions suitably for a Hi-Res screen (eg. Retina) ([#99](https://github.com/phkaeser/wlmaker/issues/99))
* [done] Scale icons to tile size.
* [done] Add option to specify an output transformation ([#97](https://github.com/phkaeser/wlmaker/issues/87)). Note: Will not work well in X11 window mode.
* [done] Add commandline arguments to configure size of window ([#98](https://github.com/phkaeser/wlmaker/issues/98))
* [done] Auto-start of configured applications.
* [done] Configurable in code.

* [done] Misc
* [done] Expose the decoration manager configurables through the config file.
* [done] Add support for switching virtual terminals ([#6](https://github.com/phkaeser/wlmaker/issues/6)).
* [done] Verify minimal application set to run:
* [done] Terminal: `foot`
* [done] Google Chrome
* [done] Mozilla Firefox

* Bug fixes
* [done] Investigate & fix handling of axis (touchpad) on tty.
* [done] Fix wrong size for lock surface when Output scale != 1.0 on tty.
* [done] Fix leak / double free with config_dict_ptr.
* [done] Works as a X11 window, Wayland client or standalone compositor.

## Plan for 0.5
### Internals and code organization

* Support for dynamic output configurations.
* Multiple monitors, with output mirrored across.
* Per-monitor fractional scale.
* [done] git submodule for direct and critical dependencies.
* [done] CMake as build system.
* [done] `test` and `doc` targets.
* [done] Published as open source.

## Pending
## Features and work items pending roadmap placement

### Major feature milestones

Expand Down

0 comments on commit 3e22eae

Please sign in to comment.