Changes for version 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

Documentation

a tiling window manager written in Perl

Modules

a tiling window manager written in Perl

Provides

in lib/X11/korgwm/API.pm
in lib/X11/korgwm/Common.pm
in lib/X11/korgwm/Config.pm
in lib/X11/korgwm/EWMH.pm
in lib/X11/korgwm/Executor.pm
in lib/X11/korgwm/Expose.pm
in lib/X11/korgwm/Hotkeys.pm
in lib/X11/korgwm/Layout.pm
in lib/X11/korgwm/Mouse.pm
in lib/X11/korgwm/Panel.pm
in lib/X11/korgwm/Panel/Battery.pm
in lib/X11/korgwm/Panel/Clock.pm
in lib/X11/korgwm/Panel/Lang.pm
in lib/X11/korgwm/Screen.pm
in lib/X11/korgwm/Tag.pm
in lib/X11/korgwm/Window.pm
in lib/X11/korgwm/Xkb.pm