github LGUG2Z/komorebi nightly
komorebi nightly (72aa4c97ade72b802a008bdba4bf59cca04df665)

pre-releaseone hour ago

nightly (2026-10-30)

Bug Fixes

  • border: do not look for a border while holding the ghosts (aa353a71)
  • border: paint a border that is shown asynchronously (961c6238)
  • animation: land every animation of a batch on its own (365d705c)
  • border: draw a border again for a window that is not where it was drawn (dd961f50)
  • resize: lay windows out in place for the commands that resize them (0811292d)
  • scrolling: put the left edge of a column where it is dragged to, however far (57084c4d)
  • animation: make ghosts on a host that DWM does not crop (1a36f398)
  • resize: measure a drag from where the tile was, not where the window had got to (18708d6d)
  • scrolling: resizing a column by its left edge moves that edge (48e30d95)
  • logging: do not look up what a window is for every location change (f9610dd3)
  • resize: put windows that did not get where a drag left them (105777bf)
  • border: leave the border of a ghosted window to the animation (0b17aae8)
  • scrolling: refocus after a window is closed with Hide (e3dd3c60)
  • scrolling: show every window when a stack is spread out into a column (ae8e9823)
  • window: uncloak the windows a killed daemon left cloaked (dc9b2e95)
  • monitor: do not mistake an unplugged display for one that is still attached (5c8e4770)
  • config: accept an integer for an initial window placement rule (3b424dd7)
  • monitor: validate the target before moving a container or workspace (837ca257)
  • rules: keep a rule whose id another kind of rule already has (9b9cad99)
  • nix: get the build working again (21a821ac)
  • wm: make resizing a tile by dragging its edge reliable (a3fac99a)
  • stackbar: drop containers lock before repositioning stackbar (5a534eb2)
  • wm: honor layout_flip when focusing across a boundary (a10b8e27)
  • wm: refocus selection on destroy when foreground goes null (8a6868f2)
  • wm: verify foreground state before mutating focus state (57b93a74)

Code Refactoring

  • animation: move the ghost dispatcher out of window.rs (8bb6fed3)

Features

  • wm: track a window the user maximizes or restores (3fa3d429)
  • komorebic): pan the Scrolling layout with the fingers on a touchpad komorebic pan --stream reads the gestures of fingers on a touchpad from standard input, as whkd writes them for a swipe of three or four fingers (docs/gesture-stream.md in its repository: a line for each begin, move, end and cancel, with the distances in centimetres, and any field or message that it does not know ignored. The row follows the fingers while they are down, and when they lift it comes to rest with a column against an edge of the screen, going at the speed that the times of the moves say that the fingers were. Focus goes to the nearest column in view if the focused one is not. A gesture that is given up, or that is not finished when the stream stops, puts the row back to what it was. komorebic works out nothing but what it is asked to: --sensitivity multiplies the distances, --reversed flips the way that the row goes, and --paging takes a step for every two centimetres that the fingers go, as komorebic pan does, and not move the row with them. Moves that wait while one is told are added up, as whkd says that they may be. A gesture is told to komorebi on one connection, which it handles in order, as messages that are sent on a connection each are not. With ghost movement the pictures that cover the windows near the screen are taken when the fingers go down, a move of the fingers sets them where the row puts the windows and does nothing else, and when the fingers lift they glide to where it comes to rest, over the time that an animation takes, and the windows are shown. Without it the workspace is laid out a step at a time, as it is for a drag. Ten centimetres of the fingers move the row the width of the screen. The golden transcript of whkd and the swipes of its demo are fixtures of the tests that read the stream. (a65b5c23)
  • komorebic: pan the Scrolling layout to the left or the right (a63057c2)
  • resize: cover the windows that a drag resizes with a picture of them (2560ee63)
  • resize: the neighbours follow the edge of a window dragged to resize it (b24ebe42)
  • animation: draw the border of a window into its ghost (3d9f581b)
  • animation: slide workspaces in and out (65bf21c1)
  • animation: pending workspace transitions (794a0bcd)
  • animation: keep the picture of a window that leaves (38e4f049)
  • animation: a workspace animation prefix Workspaces are going to slide in and out of the monitor when they are switched, and that is its own kind of animation (workspace) next to moving and transparency: it is turned on, and given a duration and an easing, the same way (animation.enabled, duration and style take a workspace entry, as do komorebic animation, animation-duration and animation-style with --animation-type workspace), with the duration and the easing of the other animations when it has none of its own. Animations being enabled for everything enables it too, and it can be turned off in particular (animation.enabled with workspace set to false), so that enabled: true keeps meaning everything. It needs ghost movement, as the windows slide as ghosts. Nothing uses it yet. (730f5d82)
  • animation: clip a ghost to a rect (5cc8e437)
  • animation: geometry for sliding and clipping ghosts (388299b6)
  • animation: show ghosts as a still picture on one shared host window (94cd37f6)
  • animation: run the movement animations of a layout pass together (b50e21e5)
  • scrolling: support more than one monitor (5daca12e)
  • scrolling: rest windows that scroll out of view at the edge (e8364f7b)
  • scrolling: make room for windows that will not get as narrow (f170e8e2)
  • scrolling: add commands and config for the scrolling layout (598390d9)
  • layouts: share the platform-free half of the scrolling glue (8c7327fd)
  • scrolling: lay out the scrolling layout with the scrolling model (3b93035d)
  • scrolling: add a platform-free model of a scrollable strip of columns (6c4eb621)
  • wm: add initial_window_placement_rules for workspace-level (83c4e11d)
  • bar: add default interface options to display friendly name or local IP (4ca2ff84)
  • animations: set the ghost_movement default to false (a3b2e28d)
  • wm: add monocle_focus_behaviour to gate monocle cycling (4e7d0e33)
  • wm: use ghost windows for movement animations (e2e5dbfc)

Performance Improvements

  • animation: do not update a ghost that has not changed (699f31f8)
  • animation: do not wake the ghost thread every 8ms for nothing (fd6fb304)
  • border: coalesce the rects an animation sends to a border (388a17d6)
  • animation: keep the swap chain nudge off the animation thread (70176ee1)
  • animation: do not build a picture to make a window paint itself (cd1c9ce9)

Tests

  • border: leave the paint tests to a real desktop (72aa4c97)
  • resize: cover the top edge of the lower tile of a BSP layout (a4e03e3d)

Documentation

  • schema: regenerate the bar schema for the pan commands (2a1716bb)
  • scrolling: describe the scrolling layout (b8a444df)
  • schema: regenerate the schemas for the scrolling layout (7c79625b)

Chore

  • border: say what the border manager is stuck on (9922a34b)
  • border: trace why a border is not painted (103e2cf4)
  • animation: trace what ghosts and animation frames cost (126acaa0)
  • deps: update libz-sys to 1.1.31 for RUSTSEC-2026-0418 (0b570060)
  • keep the line endings LF (a599e9ec)
  • schema: regenerate the schemas (efe91ce3)
  • deps: cargo update (f08aa555)
  • deps: cargo update (e0709f02)
  • stackbar: tighten deadlock fix comment (3f3fac8b)
  • deps: bump shadow-rs from 1.7.1 to 2.0.0 (1b263b94)
  • deps: bump sysinfo from 0.38.4 to 0.39.6 (e4e1b6da)
  • deps: cargo update (fd3d52c4)
  • cargo: address clippy warnings (d2906939)
  • deps: bump starship-battery from 0.10.3 to 0.11.0 (ccb39abd)
  • deps: bump nanoid from 0.4.0 to 0.5.0 (f22fb808)
  • deps: cargo update (538053c9)
  • dev: begin 0.1.42-dev (937b28a7)

Don't miss a new komorebi release

NewReleases is sending notifications on new releases.