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

Prepare roadmap and documentation for 0.4 #130

Merged
merged 3 commits into from
Oct 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading