Revision history for korgwm.
5.0 2025-01-22
-
Introduce vimish marks for windows:
-
Add API calls to remember focused window and quicky select it when needed
-
Improve multiple screens handling:
-
Windows are moved to their preferred screens upon their reconnection
-
Screen affinity is configurable in config file via the "placement" rule
-
WM keeps track of the selected tag for particular screen configuration
-
Implement D-Bus notifications server:
-
Mark notifying windows as urgent when the server is in use
-
Support API call to raise urgency by WM_CLASS
-
Rework debug subsystem:
-
Switch to debug levels: 1-9
-
Introduce DEBUGx constant function for each debug level
-
Introduce slow S_DEBUG function to use it within return statements
-
Replace die/warn with croak/carp in applicable places
-
Remove stale Devel::SimpleTrace dependency
-
Set Carp::Verbose for debug level 3 or above
-
Implement toggle_maximize() for invisible windows
-
Replace implicit toggle with explicit set via parameter
-
Support toggling for invisible windows
-
Other minor improvements and fixes:
-
Prevent windows from being mapped over any maximized one
-
Implement _NET_SUPPORTED EWMH
-
Fix Java AWT rendering issue without reparenting
-
Add atom() caching function that creates them on demand
-
Replace croak with carp for unknown ButtonPress events
-
Fix buffer size to properly handle UTF-8 in Window->title()
-
Implement Window->select() to simplify switching to window from anywhere
-
Improve Expose grab keyboard timings
-
Other small code refactoring
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 children 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.