Revision history for korgwm.
4.0 2024-10-07
- Significantly improved multi-screen experience:
- Windows are now returning back to their preferred screen after connecting it back
- Destination tag now corresponds to the original one during screen destroy phase
- Fix issue with screen_select() after changing screen topology
- Improved Expose module a lot:
- Use XComposite extension to properly make hidden windows screenshots
- Use get_image_data_rgba() to properly handle BGRA colorspace
- Expose module edge-cases optimization with zero and one visible windows
- Other small cosmetic changes
- Made numerous improvements related to mouse pointer events and position:
- Rework Window->focus() to show transients of maximized window
- Prevent EnterNotify on focus_cycle() to visit every window
- Prevent EnterNotify unmaximizing a window
- Fix race condition with EnterNotify mapping floating windows
- Fix race condition with focus during maximized windows startup
- Improve focus logic for multiple screens (see comment in f364d604e)
- Fix rapid EnterNotify preventor to avoid race condition on tag switching
- Prevent rapid FocusIn events firing on EnterNotify and tag_select()
- Avoid warp_pointer if the window already owns it
- Implement tag->{focus} to select focus window on tag switching
- Fix leaked reference of always_on window in Tag->focus
- Reworked focus_prev functionality keeping a list of previously focused windows:
- Make focus_prev keep five instead of two last windows
- Fix issue calling focus_prev() to some window below maximized one
- Fix focus_prev behaviour inside FocusIn handler
- Fix focus_prev focus stealing and tag switching
- Made mouse-based window movement and resize smoothier giving those actions more CPU time.
- Implemented feature to respect WM_SIZE_HINTS for newly created windows making dialogs look prettier.
- Updated X11::XCB to 0.23 to use brand new shiny features.
- Started several markdown documents, especially Development.md describing korgwm history.
- Slightly updated default config:
- Rebind Fn keys to Mod+Alt because of a ThinkPad bug
- Make pointer follow the window during win_move_tag()
- Change Mattermost screen affinity
- Support KORGWM_DEBUG_PORT environment variable to avoid EADDRINUSE starting second korgwm instance
- Rename workspace names using only numbers
- Other minor improvements and fixes:
- exec() now tries to open STDIN, STDOUT, STDERR to /dev/null after closing them
- Add some fairness to X events poller
- Add doc/release_checklist.md describing the release procedure
- Implement KORGWM_DEBUG_API to enable debug API calls regardless debug config
- Implement dump_screens() debug API call
- Update .xinitrc to avoid several freezes and other issues
- Ignore "Window errors" caught when closing multiple windows at a time
- Replace redundant splice with grep
- Fix issue with pointer not warped on a maximized window
- Fix shameful memory leak inside Window DESTROY routine
- Fix typo in focus->{window}
- Add Gtk3::disable_setlocale() to avoid 0.5 value interpreted as 0
3.1 2023-12-19
- WM_STATE atom is now created manually unless it already exists to prevent crashes on unconfigured X server.
- Fixed race condition on transient siblings removal.
3.0 2023-12-07
- Moved to X11::XCB 0.22
- Significantly improved logic around floating windows on multiple screens
- Implemented FocusIn support for background windows: now browser windows steals focus on URL opens.
- Implemented whitelist of windows with unset WM_CLASS: previously we just ignored them.
- Implemented autostart commands in API format (see configuration example).
- Other minor improvements:
- Add support for PrintScr button
- Make cosmetic changes to Readme
- Update outdated configuration samples
- Fix file permissions
- Erase window structure on Unmap
- Prevent ConfigureRequest moving windows out of their screens
- Fix issue with hiding the last visible workspace
- Fix stale panel title issues when moving floating windows between screens
- Fix stale urgency on window destroy
- Circumvent show() race condition in MapRequest
- Implement focus_prev() for hidden windows
2.0 2023-10-26
- Implemented tag_append() -- it's possible to append windows from other tags to the active one.
- xcb_unmap_window() was removed. From now on the windows are being moved out of visible area instead of unmap.
- Made initial_pointer_position multiple screen-aware: mouse pointer can now warp to the central screen.
- Other minor improvements:
- Update POD documentation
- Process cross-screen ConfigureRequests
- Handle margins while scaling Expose thumbnails
- Hide border size from ConfigureNotify
- Replace PREREQ_FATAL in Makefile with Test::More::BAIL_OUT
- Ignore windows with no WM_CLASS earlier
- Improve always_on handling
- Ignore EnterNotify on tag switching
1.0 2023-10-18
- First version, released on an unsuspecting world.