From 3e22eae2cc65c9104a2d0abfc20b64d21cbd9a48 Mon Sep 17 00:00:00 2001 From: Philipp Kaeser <130065133+phkaeser@users.noreply.github.com> Date: Sun, 20 Oct 2024 13:16:38 +0200 Subject: [PATCH] Prepare roadmap and documentation for 0.4 (#130) * 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. --- README.md | 17 +-- doc/ROADMAP.md | 284 +++++++++++++++++++++++++------------------------ 2 files changed, 157 insertions(+), 144 deletions(-) diff --git a/README.md b/README.md index c3d9b9cd..963a6233 100644 --- a/README.md +++ b/README.md @@ -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). @@ -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 diff --git a/doc/ROADMAP.md b/doc/ROADMAP.md index 11ff794e..54b05ca9 100644 --- a/doc/ROADMAP.md +++ b/doc/ROADMAP.md @@ -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. @@ -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