All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
7.1.5 - 2024-11-01
- Update scripting addition for macOS Sequoia 15.1 #2441
7.1.4 - 2024-09-26
- Implement fallback method for macOS Sequoia to detect when a window is destroyed, because of weird system problems when other third-party software is in use #2431
7.1.3 - 2024-09-17
- Fix issue causing sticky scratchpad windows to not work as expected #2394
- Fix window query scratchpad property flag #2391
- When a new window is added to a stack it is placed after the currently focused window (instead of the end) #2387
- Moving windows to other spaces requires SIP to be partially disabled for macOS Monterey 12.7.x #2408
7.1.2 - 2024-08-10
- Allow window_animation_duration to be set to
0.0
without requesting Screen Capture permissions #2378 - Add new window --toggle option
windowed-fullscreen
to fullscreen a window, ignoring all configured padding for both managed and unmanaged windows #2221 - Moving windows to other spaces requires SIP to be disabled on macOS Sequoia #2324 #2331
- Updated scripting-addition mach loader/injection and payload to work for macOS Sequoia Beta 1, 2, 3, 4, and 5 #2324 #2331
- Extend stack window selector to allow numeric indices:
yabai -m window --focus stack.3
#2342
7.1.1 - 2024-05-18
- Assigning a window to scratchpad using rules would incorrectly hide that window immediately #2203
- Moving windows to other spaces should once again work on macOS Sonoma 14.5 (and newer) #2240
- Update scripting addition for macOS Sonoma 14.5 Intel (Apple Silicon is already supported in v7.1.0) #2277
7.1.0 - 2024-04-04
- Added window commands
--raise ['<WINDOW_SEL>']
and--lower ['<WINDOW_SEL>']
#2198 - Added window commands
--scratchpad ['<LABEL>|recover']
and--toggle <LABEL>
#2203 - Added rule property
scratchpad='<LABEL>'
to automatically assign a window to a scratchpad #2203 - Added window and rule query property
scratchpad
#2203
- Config global setting
auto_balance
is now categorized as a space setting instead #2200 - Rule property space should have higher precedence than display #2206
- Properly escape app and title, role and subrole, regex when listing rules #2205
- Properly escape app and title regex when listing signals #2207
- Fixed issue that could cause a crash when trying to detect windows opened before yabai launch #2208
- Fixed issue that could cause a crash when terminating an application in rare cases where there is a large backlog of events #2210
7.0.4 - 2024-03-30
- Consecutive window resize operations would not work correctly because it used a cached value for the window frame #2182
- Fix weird delay caused by interaction between macOS System APIs on Sonoma when using
--insert
in combination with other commands in rapid succession #2188 - Change how background processes are detected and handled #2190 #2168 #2194
7.0.3 - 2024-03-22
- Whitelist zathura process for management because it incorrectly identifies as a background-only process #2168
- Config should be executed if the exec-bit is set, but interpreted if it is not #2169
- Window query property is-sticky would sometimes show the wrong value #2175
- Query commands now take an optional list of properties to select which fields should be included in the output #2180
7.0.2 - 2024-03-13
- Decouple/normalize timer used for mouse_action resize throttling because event timestep varies between macOS versions #2160
7.0.1 - 2024-03-13
- Fix mouse_action resize throttling issue caused by friggin Apple event timestep garbage #2160
7.0.0 - 2024-03-13
- Make space visible on display without stealing focus (the space must belong to the display) #2113
- Restore application_activated and application_deactivated signals #2122
- Restore system_woke signal #2124
- Added new window rules command
--apply
to apply the effects of (specific or all existing rules), or an ad-hoc rule that should only apply once, to all known windows #2123 - Added new argument
--one-shot
to window rules command--add
to specify that this rule only runs once #2123 - Window rules marked as
--one-shot
will be ignored completely by the--apply
command #2123 - Window queries include a new property
has-ax-reference
#2126 - Window command
--sub-layer
and rule propertysub-layer
has been added to replace--layer
andlayer
respectively #2128 - Added new command
config window_animation_easing ..
to select easing function #2131 - Added new command
space --equalize ..
to reset split ratios of all nodes within a space to default value #2133 - Added new command
space --switch ..
to focus a space (substitute with current focus) regardless of its display #549 - Added new command
config display_arrangement_order ..
to change how yabai interprets arrangement indices used to select displays #550 - Added new command
display --label ..
and display query propertylabel
(works like space labels) #1616 - Added display query property
has-focus
#1616
- Preserve relative space ordering when moving spaces to other displays #2114
- Make window animations compatible with window opacity fade effect #2116
- Better filter for background processes #2118
- Managed windows should snap back into place when moved incorrectly using the mouse #1199 #2066
- Managed windows should correct their frame when modified by external means #2117
- Window frame would sometimes not be set correctly when using window animations #2120
- Allow resetting window opacity in window rules #2127
- When adding new window rules, their effects will only apply to windows that open after the rule has been added #2123
- Window queries will now list information about all windows even if yabai does not yet have an AX-reference. Windows that are missing an AX-reference cannot be acted upon until its space has become active #2126
- Fixed window animation flickering #2129
- Fixed weird issue with memory ownership when synthesizing events for autofocus #2130
- Combine effects of all matching window rules before applying rule effects #2123
- Window insert feedback visual should use same layer as parent window #2132
- Updated scripting-addition mach loader/injection and payload to work for macOS Sonoma 14.4 #2146 #2150
- Some space and display signals (where possible) now pass additional env.vars. containing the user-facing index that can be used with yabai commands #2152
- Fixed some window commands that would incorrectly require a focused window to exist in order to operate on an arbitrary window through its id #2153
- Window grid command will now apply the configured space window gap #932
- Config file no longer requires the exec-permission-bit to be set #1993
- Allow
space --swap ..
command to swap spaces between displays. This works by swapping all windows (and interior state) rather than macOS spaces #549 - Focus-follows-mouse should now be a lot more responsive #1958
- Fixed issue causing Dock to not hide if the cursor is moved before animation finishes #1552
- Fixed issue causing Dock to not respect autohide-delay preference #1951
- Fixed issue where using alt as mouse_modifier would trigger macOS functionality that hides all windows #2154 #1809
- Fixed absurd issue where subscribing to mouse_events would cause delayed input in some cases when magic mouse is connected #1877
- When adding new window rules, their effects will only apply to windows that open after the rule has been added. To restore old behavior, run
yabai -m rule --apply
after adding all rules #2123 - Window command
--layer
and rule propertylayer
has been renamed to--sub-layer
andsub-layer
respectively #2128
6.0.15 - 2024-02-22
- Fix weird segfault with consumed mouse-event #1801
- Implement visual feedback for mouse_drag actions, controlled by
insert_feedback_color
#2109
6.0.14 - 2024-02-21
- Mouse actions could stop working if the acting window was destroyed while a mouse action was in progress #2038
- Replicate consumed mouse-click when no mouse-drag action is initiated #1801
6.0.13 - 2024-02-19
- Lock assigned handle while mouse_action resize is in progress #2102
- Modify "no click-zone" when using focus_follows_mouse to activate an empty display #1892 #863
6.0.12 - 2024-02-12
- New config option
menubar_opacity
to make the menubar transparent (or even completely hidden, ignoring mouse-events) #2091
- Using
--toggle native-fullscreen
to exit native-fullscreen mode could sometimes leave the window unmanaged/untiled #2090
6.0.11 - 2024-02-11
- Adjustments to mission control integration on Ventura and Sonoma due to subtle issues with window operations that cross monitor boundaries #2088
6.0.10 - 2024-02-10
- Fixed caching issue when using focus_follows_mouse to switch focus between monitors with no windows #2075
- Attempt to resolve issue where some applications do not incorrectly pass along NSRunningApplication isObservable and isFinishedLaunching properties #1367
- Add compatibility between window animations and JankyBorders #2087
- Config option
window_animation_frame_rate
has been removed. Animations use CVDisplayLink to match monitor refresh rate #2087
6.0.9 - 2024-02-04
- Fix detection of windows that are minimized before yabai is launched #1833
6.0.8 - 2024-02-04
- All windows that report a non-standard window_level should be treated as floating (permanently), unless otherwise specified through manage=on rules #2055
- Fix detection of windows that are minimized before yabai is launched #1833
6.0.7 - 2024-01-25
- Update scripting addition for macOS Sonoma 14.3 Intel (Apple Silicon is already supported in v6.0.6) #2065
- Fix regression causing window_destroyed signal to not trigger #2048
- Improved snappiness of window animations (time from trigger to start of animation) #2060
- Change window sublayer instead of layer, resulting in a more pleasant user experience #2062
6.0.6 - 2024-01-08
- Cleanup handling of root-windows, child-windows, and window belonging to roles that are considered eligible for management #2044 #2036
6.0.5 - 2024-01-07
- Attempt to separate root-windows from child/sub-windows to improve window detection and management logic #2044
6.0.4 - 2024-01-03
- Changes to window detection logic #2036
6.0.3 - 2024-01-03
- Changing window layer using rules or
window --layer
commands will exempt that window from automatic layer changes #1929 - Running
yabai --stop-service
should properly prevent yabai from starting after a reboot #1921 mission_control_enter/exit
signals include an environment variable to identify which mode was activated/deactivated #2026- Stricter window type filter to avoid issues with e.g Text Completion, Input Source changes and other non-windows-that-report-as-windows #1919 #1910 #1997
- Expand process blacklist filter to ignore irrelevant processes (background services and helper services)
6.0.2 - 2023-12-23
- Update scripting addition for macOS Sonoma 14.2 and 14.2.1 #2007
- Spaces in stack layout should no longer incorrectly trigger a layout refresh on mouse down #1493
- Fix frame rounding issues causing small window displacement #1680
6.0.1 - 2023-11-12
- Update scripting addition for macOS 14.1.1 (and probably 14.1) #1936
- Fix issue with focusing stacked windows due to layer changes #1918
- Allow window swap command to work on windows that are in the same space (with layout: stack), using the stack window selectors #1952
- Fix rare crash when processing window destroyed events #1965
6.0.0 - 2023-10-10
- Window query property
layer
has been added #1887
- Fix issue causing window animations to flicker on macOS Ventura and Sonoma #1879
- All managed (read: tiled) windows are now automatically placed in the below layer. All unmanaged (read: floating) windows will use the default macOS normal layer and appear above the tiled layer, replicating the
window_topmost
functionality in a robust way #1887 - Automatic window opacity changes will now only apply to focus switches within the same space #1887
space --create
command now takes an optional<DISPLAY_SEL>
instead of an optional<SPACE_SEL>
- Config option
window_topmost
has been removed #1887 - Window command
--toggle
optiontopmost
has been removed #1887 - Window query property
is-topmost
has been removed #1887 - Signal
application_activated
andapplication_deactivated
has been removed; useapplication_front_switched
instead #1887 - Window borders (and all related options/properties) have been removed #1889
5.0.9 - 2023-10-01
- Updated scripting-addition to support macOS Sonoma 14.0 #1772
- Fix window focusing (autofocus, and autoraise across multiple monitors #109) for macOS Sonoma #1772
- Fix scripting-addition functionality that uses Dock.app connection to the WindowServer for macOS Sonoma #1772
- Fix mission-control integration for macOS Sonoma #1772
- Prevent focus follows mouse from activating the menubar in vertical display arrangements #1857
5.0.8 - 2023-09-12
- Workaround for macOS Ventura reporting bad window levels when running yabai as a service, causing issues with window topmost #1704
5.0.7 - 2023-08-27
- Add launch argument
--help, -h
to print available options. #1825
- Allow window swap commands to work on windows that are in the same stack, using the stack window selectors #960
- Properly remove assigned label when a space is destroyed #1678
- Add signals for
space_created
andspace_destroyed
#1365
5.0.6 - 2023-05-27
- Change launchd service to only restart automatically upon crashes. You will need to run
yabai --uninstall-service
andyabai --install-service
. #1755
5.0.5 - 2023-05-21
- Create
LaunchAgents
folder in~/Library
when installing service file, if the directory does not already exist #1728 - Changed how the users home directory is determined when managing service file #1742
- Calculate memory requirement of service file path and contents instead of using static storage #1749
- Window selector
stack.first
andstack.last
should return an error when there is no stack #1748 - Fixed off-by-one when checking frame positions in
xxx_in_direction
#1511 #1463
5.0.4 - 2023-05-01
- Added launch arguments to manage launchd service:
--install-service
,--uninstall-service
,--start-service
,--restart-service
,--stop-service
#1619 - Check for
-arm64e_preview_abi
bootflag on Apple Silicon before attempting to load scripting addition.
5.0.3 - 2023-03-28
- Updated scripting-addition to support macOS Ventura 13.3 #1297
- Fixed issue with window focusing caused by incorrectly intercepting a synthesized mouse event #1551
- Fixed issue with window warping across displays with only a single window tiled at both displays #1577
- Fixed issue preventing window split from being toggled for windwos on an inactive space/display #1557
- Make window zoom persistence configurable (config window_zoom_persist) #1481
- Make frame rate of window animations configurable (config window_animation_frame_rate) #148
5.0.2 - 2022-12-16
- Updated scripting-addition to support macOS Ventura 13.0.0-13.1.0 #1297
- Properly escape application name when returned in window queries #1489
- Remove window tags used for debugging purposes from result of window query because it could cause a crash under certain conditions when a window closes #1475
- Change window placement of warp command to be more natural when warping windows within the same space #1435
5.0.1 - 2022-09-26
- Only allow window_animation_duration to be set if System Integrity Protection is partially disabled #148
- Output useless dummy .plist file for scripting addition to silence weird AppleScript warning #1449
5.0.0 - 2022-09-23
- Support for animating window move/resize operations (config window_animation_duration) #148
- Command to manually specify the default split_type #1423
- Window borders are now placed below and outside the window; new commands to specify hidpi, blur to act as a backdrop, and corner radius #1430
- Add split-child to output of window query and introduce new options for WINDOW_SEL: sibling, first_nephew, second_nephew, uncle, first_cousin, second_cousin #192
- Implemented a workaround to support window_opacity_duration, bypassing the Apple bug #1406
- Fix regression causing a window to be moved to the active space of an inactive display when sent to an inactive space of an inactive display #1053
- Fix regression causing hidden windows to not show in window queries #1421
- Clamp split ratio instead of resetting when an out of range / invalid value is given #1401
- Applying rule with property manage=on would cause both minimized and hidden windows to be managed, even though the window is not visible #1418
- Fix regression causing window sticky to not work properly #1424
- Make window zoom more flexible, allow parent-zoomed window to enter fullscreen and vice versa #1429
- Fix border size issue when moving a window to a different display on macOS Big Sur #1229
- Check Dock.app isFinishedLaunching property before attempting to inject scripting addition #749
- Properly update window ordering when a window is added to the top of a stack #1311
- Properly update insertion point in a window stack when the marked window is removed from the stack #1275
- Window zoom will now persist through changes to the bsp layout #864
- Removed support for macOS High Sierra, Mojave, and Catalina.
- Removed launch arguments --install-sa and --check-sa. Running --load-sa will automatically install/update the scripting-addition when necessary #1287
4.0.4 - 2022-09-08
- Fix null-deref when an application is spawned with a non-standard window #1399
4.0.3 - 2022-09-07
- Allow combining commands for config, space, and window domains #1371
- Fallback to using the AX API for mouse_action move if the scripting-addition is not available #1376
- Add role and subrole filter to window rules #1398
4.0.2 - 2022-08-24
- Fixed an issue that in rare occasions caused yabai to freeze when focusing an inactve space on an inactive display #1309.
- Fixed an issue that caused a window to incorrectly become focused when assigned to a space through rules #1370
- Fixed an issue that caused windows to snap back to its original position when moved between displays (to an inactive space) using mission-control #820
4.0.1 - 2022-05-17
- The scripting-addition will now also remove the space switch animation when using cmd+tab, clicking on an item in the Dock, and using the numeric macOS mission-control keyboard shortcuts #1235
- Improved logic used to determine the target window in a given direction #1220
- Improve behaviour of focus_follows_mouse autoraise, preventing a window from being raised if it would occlude some other floating window #1246
- The rule option mouse_follows_focus should now work properly (values were inverted) #1267
- Remove minor shadow artifact from border windows #1056
4.0.0 - 2022-03-16
- New config window_origin_display to specify which display a window should become managed at upon creation #951
- Window borders no longer require SIP to be disabled #1054
- WINDOW_SEL prev should correctly identify the correct window in a nested tree #1114
- Fixed an issue with the way unix sockets were handled that would cause an incoming connection to drop in rare occasions #1107
- Update scripting addition to support macOS 12.0.0 -> 12.3 #1054
- Fixed an issue that would cause the target window to snap back to its previous position when moved between displays using the cursor inside mission-control #820
- Properly drain autoreleased objects (from Apple frameworks) #751
- Detect and manage windows that are moved into the first space of a display when a space with active windows on it is destroyed #813
- The command space --balance now takes an optional axis as its argument #985
- Malformed windows that are managed through rules should be eligible for window alpha, focus follows mouse, and window borders #788
- Improve behaviour of focus_follows_mouse autoraise, preventing a window from being raised if it would occlude some other window. autoraise is temporarily disabled while a menu is opened. #407
- Work around broken Apple code for retrieving menubar dimensions on Apple Silicon M1 #793
- Rework query attributes and define dataformat as part of the API #775
- Properly clear space.last-window and space.first-window query attributes when the last window is made floating #786
- Reworked signal system; events are no longer coupled 1-1 with observed system events. Some events are now eligible for a new filter, active, only triggering for the application/window with key-focus. The window_focused signal is now triggered when the key-window changes, regardless of whether its application is frontmost or not. The window_created signal is now triggered for windows that are implicitly created at application launch. The window_destroyed signal is now triggered for windows that are implicitly destroyed at application exit; it is also eligible for app filter #581
- The following signals have been removed: mouse_up, mouse_down, mouse_dragged, mouse_moved, mission_control_check_for_exit, menu_opened, system_woke, daemon_message
3.3.10 - 2021-05-26
- Update scripting addition to support macOS 10.15.7 Supplemental Update
3.3.9 - 2021-05-25
- Update scripting addition to support macOS 11.4
3.3.8 - 2021-04-28
- Update scripting addition to support macOS 11.3
3.3.7 - 2021-02-02
- Update scripting addition to support macOS 11.2 #823
3.3.6 - 2020-12-18
- Update scripting addition to support macOS 11.1 #762
- Try to workaround resizing issues in some applications due to weird undocumented accessibility properties #109
- A sticky window will implicitly be treated as floating, but should not actually set the floating property #760
3.3.5 - 2020-12-03
- Improved SIP detection logic #716
- Windows that do not report a title at all should be treated as having the empty string as its title #707
- Allow SPACE_SEL to be used instead of mission-control index when specifying config options for a specific space #705
- Native fullscreen transitions would freeze on macOS Mojave due to internal API differences between macOS version #690
- Report proper error message when trying to use absolute resizing on a managed window #661
- Space/Window commands that utilize the scripting addition should correctly return a non-zero exit code upon failure #181
- Undo #545 because it created weird issues with focus #660
- Allow enabling/disabling mouse_follows_focus for specific windows using rules, overriding the global setting #675
- Space labels are now allowed to start with a digit, as long as it is followed by at least one or more non-digit character(s) #739
3.3.4 - 2020-11-14
- Fixed an issue (exposed on Big Sur, maybe didn't exist on prior macOS versions ??) that caused yabai' message receiver to block in read #714
3.3.3 - 2020-11-13
- Prevent window_opacity_duration from being used on Big Sur, because of an Apple bug #277
3.3.2 - 2020-11-13
- Focusing a space incorrectly returned a non-zero exit code even when the operation succeeded #181
3.3.1 - 2020-11-13
- New self-signed certificate used to sign the released binaries. You will have to re-enable accessibility permissions after this install.
- Update scripting-addition to support macOS Big Sur 11.0.1 #589
- Return a non-zero exit code when focusing a space fails due to an issue with the scripting-addition #181
3.3.0 - 2020-09-03
- Implemented support for stacking multiple windows in the same region (bsp node) #203
- Implemented a fullscreen layout, using stacking as its backing mechanism #337
- Fixed an issue that caused a window to not become unmanaged when a space with a single window changed to float #586
- Restore opacity back to full if window_opacity is disabled #585
- Prevent window_opacity_duration from being used on Catalina, because of an Apple bug #277
- Update scripting-addition to support macOS Big Sur 11.0 Build 20A5354i #589
- Border windows should not have shadows #617
- external_bar should not have to be set before regular padding #615
- Adjust reported mouse location to use when synthesizing events for ffm autofocus #637
- Extend SPACE_SEL and DISPLAY_SEL to include the option mouse #644
3.2.1 - 2020-06-17
- Fixed a race condition upon receiving window destroy notifications from macOS because their API is garbage and reports duplicate notifications for the same window #580
- focus-follows-mouse autofocus needs to perform some validation in order to see if the window is focusable #578
- Properly set mouse location for synthesized events used by ffm autofocus #545
3.2.0 - 2020-06-14
- Re-introduce a more efficient window border system #565
- New command window --opacity to explicitly set the opacity of a window #503
- Re-construct application switched and window created events in the correct order when the window is moved through a rule upon creation #564
- Improve interaction between window_topmost and windows that enter native-fullscreen mode #566
- Properly set focused window id cache upon window detection at first space activation #567
- Don't modify the properties of AXUnknown and AXPopover windows #535
- The window attribute visible should be 0 for minimized windows #569
- Prevent mouse_action move from placing the y-coordinate of a window outside valid display boundaries #570
- Properly allow the user to float windows that are forced to tile using window rules (manage=on) #571
- Improve visual feedback effect of the window --insert message selection #572
- Fix inconsistencies when mixing floating and sticky properties on a window #574
3.1.2 - 2020-06-09
- Revert changes because they can trigger a loop, causing slow window move/resize #16
3.1.1 - 2020-06-08
- If focus follows mouse is enabled, moving the cursor to a different display will now focus that display even if it is empty #459
- Extend definition of DISPLAY_SEL to include DIR_SEL so that displays can be targetted using cardinal directions #225
- When an application is launched or a window is created; tile the window on the space that has focus, rather than the display it spawned at #467
- Properly re-adjust window frame of managed windows if they break the assigned region in response to an event not invoked directly by the user #16
- Cardinal directions for WINDOW_SEL will only consider managed windows due to various issues with detecting the correct window #562
3.1.0 - 2020-06-05
- New command to output list of registered rules and remove by index #511
- New command to output list of registered signals and remove by index #458
- Blacklist loginwindow and ScreenSaverEngine processes #537
- Resolve some issues with the lifetime of NSRunningApplication #543
- Resolve some obscure issue that would in some cases lead to a double-free upon process termination #543
- Properly clear insert feedback settings if active on the root node when it is closed #546
- Window selector recent should properly work across spaces #544
3.0.2 - 2020-05-22
- Properly clear focus-follows-mouse cache upon space change #528
- Revised process type restrictions and observation requirements to correctly track some applications that don't identify correctly #529
- Translate newline (0x0a) and carriage return (0x0d) when outputting window titles through the query system #533
3.0.1 - 2020-05-09
- Update scripting addition for macOS 10.15.5 Beta (19F72f) #501
- Allow calling
space --label
without an argument to intentionally remove a previously assigned label #514 - Fixed an issue where a window moved across displays using mouse action move would be invisible #506
- Fixed an issue where the last window on a display would not properly update the focused window of the original display upon move, causing selectors to not work as expected #505
3.0.0 - 2020-05-01
- The deprecated rule option topmost='<BOOL_SEL>' has been removed.
- The built-in status bar has been removed. #486
- Window borders have been removed. #487
- New window commands
--minimize
and--deminimize
. Minimized windows are now reported through window queries and there is a new attributeminimized
to identify the current state #379 - New config option
external_bar
to specify special padding compatible with thespace --toggle padding
option #454
- New self-signed certificate used to sign the released binaries because the previous one expired at april 21th, 2020. You will have to re-enable accessibility permissions after this install. Sorry about that.
- Window commands using cardinal directions use euclidean distance to identify best target window #301
- Config option
insert_window_border_color
changed toinsert_feedback_color
#487 - Fixed an issue that would invalidate a manual insertion point, if a mouse action triggered #492
2.4.3 - 2020-04-14
- Changed how mouse down events are handled to reduce cycles spent in macOS event tap callback #376
- Fixed an issue that would cause a border to persist on fullscreen videos playing in Safari #360
2.4.2 - 2020-04-12
- Fix memory leak that would occur if realloc failed when reading from a socket #436
- Increase number of window and space commands that return a non-zero exit code upon failure #187
- Fixed a repositioning issue that would occur when a managed window was moved through click & drag through macOS native titlebar #473
2.4.1 - 2020-03-01
- Fixed a crash that could occur when reading from a socket (EBADF) or writing to a socket (SIGPIPE) #430
2.4.0 - 2020-03-01
- Support exclusion for command arguments of type REGEX #173
- Add ability to specify window layers; below (desktop), normal, and above (topmost) #429
- Properly return focus to the active window on the current space when a window is moved through a rule #418
- Prevent space operations (create, destroy, focus, swap, move and send to display) from applying while mission-control is active or the display is animating #417
2.3.0 - 2020-02-14
- New command space --swap SPACE_SEL command to swap the selected space with a given space. The selected and given space must belong to the same display #127
- Allow use of DISPLAY_SEL and SPACE_SEL for specifying display and space in rules #378
- Extend space --move command to operate on SPACE_SEL instead of prev/next. However, the selected and given space must belong to the same display #127
- Fixed issue where some window event would trigger a signal with an invalid window causing an invalid memory access #412
2.2.3 - 2020-02-12
- Ignore minimized windows when an application is unhidden (required by some applications like Chrome..) #300
- Don't add window to the window tree when moved to a different space when the window is minimized (required by some applications like Chrome..) #382
- Config file is no longer required for yabai to start #393
- Clear umask before trying to install scripting addition #400
- Update scripting addition to work with macos Catalina 10.15.4 Beta #404
- Don't forward MOUSE_UP event to the target application if we consumed the corresponding MOUSE_DOWN event #376
- Only float small windows if they are NOT resizable #179
- Fixed an issue that caused filtering signals by window title to not work properly #410
2.2.2 - 2020-01-20
- Fix use after free.. #375
2.2.1 - 2020-01-19
- Specify minimum macOS target version 10.13 when compiling #371
2.2.0 - 2020-01-19
- Ability to do real picture-in-picture of any arbitrary window #286
- Disable live-resizing of bsp-layout when using mouse-drag so that we are consistent with other mouse-interactions #341
- Improved spin-lock while waiting for native-fullscreen enter/exit animation to end #339
- New attribute uuid returned through display queries #346
- Ignore window moved events for windows in native-fullscreen mode. This is necessary because of weird macOS behaviour where a window in fullscreen-mode would trigger a window_moved event upon entering mission-control #347
- Allow borders to join native-fullscreen spaces because some applications create sub-windows that are visible in fullscreen spaces #353
- Ignore mouse-up event after clicking on a window maximize button #354
- Proper error reporting for rules and signals #357
- Properly preserve layout of spaces belonging to 4k and 5k displays after waking from sleep #259
- Add guard to make sure that we cannot incorrectly tile a window twice in case of weird macOS event behaviour #348
- Properly detect when mission-control is exited (with dock visible, hidden, and while a fullscreen space is active) #319
2.1.3 - 2019-11-29
- Fix regression causing window_destroyed signal to not be triggered (after adding app and title filter) #308
- Fixed an invalid memory access when using mouse-drag to warp a window to another display when both displays contain only a single window #309
- Reset zoom of all nodes in the subtree of the node that got removed #289
- Adding/removing nodes to/from the tree should properly reset the zoom-state #227
- Ability to enable/disable debug output at runtime #312
- Fix improper calculation of overlapping parts of status_bar when truncating title, and resolve an invalid free if the title could not be truncated #313
- Automatically offset the position of the status_bar if the macOS Menubar is not set to autohide #220
- Remove the line drawn at the bottom of the status_bar in a poorly dimmed version of the background color.
2.1.2 - 2019-11-10
- Fix regression causing windows to be added more than once in some circumstances #297
2.1.1 - 2019-11-10
- Remove buffer-size restriction when reading data from socket #221
- Replace strtok with custom function to parse key-value arguments in rules and signals #307
2.1.0 - 2019-11-09
- Config option window_border_radius to specify roundness of corners #281
- Config option window_border_placement to specify placement of window borders (exterior, interior, inset) #216
- Config option active_window_border_topmost to specify if the active border should always stay on top of other windows (off, on) #216
- Ability to label spaces, making the given label an alias that can be passed to any command taking a
<SPACE_SEL>
parameter #119 - New command to adjust the split percentage of a window #184
- Don't draw borders for minimized or hidden windows when a display is (dis)connected #250
- Sticky windows are no longer automatically topmost. New option to toggle window always on top through command or rule. New attribute topmost returned in window queries. #255
- Prevent the last user-space from being destroyed or moved to another display, because macOS does not actually support this #182
- Properly read window titles on macOS Catalina #278
- Smart swap/warp for window drag actions - the decision to swap or warp is based on where in the window the cursor is #142
- Fix subtle lock-free multithreading bug in the event processing code #240
- Changing border properties should not cause borders of minimized windows or hidden applications to be redrawn #305
- Automatically truncate title of window drawn in status_bar if it would overlap with other parts of the bar #214
- Remove throttling for mouse-drag move and lessen throttling for mouse-drag resize #285
- Properly float/unfloat windows that are tiled/untiled when marked as managed=on|off with a rule #297
2.0.1 - 2019-09-04
- window_opacity_duration was a copy-pasta job #208
2.0.0 - 2019-09-03
- Commands to toggle mission-control, show-desktop, and application expose #147
- Command to close windows that provide a close button in its titlebar #84
- Expose window shadow as a property in window queries and add shadow as an option to window --toggle #171
- Config option to set the duration of the transition between active / normal window opacity #208
- Automatically restart Dock.app after installing the scripting-addition, and tweak messages shown when a payload gets loaded, is already loaded or does not support the version of macOS it's running on #135
- Work around macOS craziness so that we can properly tile a window after it leaves native fullscreen mode #36
- Return an error for queries with invalid, named selectors #158
- Resolve a potential multi-threaded issue due to "undefined behaviour" regarding x86 instruction ordering #153
- Fix space padding and gap underflow when modified with a relative value #141
- Window_* signals no longer pass the application pid #154
- Ignore all windows that report a main role of AXPopover #162
- Ignore all windows that report a sub role of AXUnknown #164
- Track when the Dock changes preferences #147
- Properly detect when mission-control is deactivated #169
- Pass arguments to signals through environment variables instead #167
- Revert change that made the status bar draw above other windows because of compatibility with "windowed fullscreen" applications #170
- Warping a window should respect insert direction in scenarios where the default warp is equal to a swap operation #146
- Exiting mission-control will invalidate the region assigned to Spaces/Views as because a Space may have been dragged to a different monitor #118
- Application_Launched signal incorrectly fired multiple times due to accessibility retries #175
- Global space settings should properly apply again #176
- Fixed an issue that could cause windows to be overlapped when tiled #183
- Verify that a message was given before trying to connect to the running yabai instance #197
- Properly re-zoom a window when toggling its border #211
- Workaround to make sure a window actually set the proper dimensions #226 #188
- Moving window to a different space using rules could leave an empty tile #232
- Windows spawned while the owning application is hidden should not cause an empty tile to be created #233
- Properly handle destruction and re-creation of view when layout changes between bsp and float #230
1.1.2 - 2019-07-15
- Float native macOS fullscreen spaces #130
- Write error messsages returned to the client through stderr #131
- Allow window focus command to work without the existence of a focused window #133
1.1.1 - 2019-07-14
- The status bar should be disabled by default, if setting is missing from the config #126
1.1.0 - 2019-07-14
- Make loading scripting-addition more robust - validating version and functionality #108
- Merge options for query constraints with command selectors to have a unified method for addressing displays, spaces, and windows, as well as allowing commands to specify both a selected and a given entity of its type #112
- Dragging a tiled window to another display using the mouse will cause the window to be warped to that display upon release #103
- Escape quotes in window titles returned through query commands #114
- Extend window, space and display properties exposed through query commands #116
- Native macOS fullscreen spaces can now be addressed using their mission-control index, and can also be moved #117
- Opacity changes only apply to windows that properly identify as "standard" or "dialog" windows #120
- The status bar should now properly draw above any potential window that overlaps its frame #124
- Support XDG_CONFIG_HOME when locating the config file #125
- Allow every single config setting to be applied at runtime with immediate effect. Run config asynchronously after initialization #122
1.0.6 - 2019-07-09
- No longer necessary to depend on the scripting-addition to focus a window #102
- Extend definition of WINDOW_SEL to include smallest and largest #105
1.0.5 - 2019-07-07
- Fix missing quotation of string value outputted through window query commands #90
1.0.4 - 2019-07-06
- Fixed an issue that prevented yabai from running under multiple users simultaneously #95
- Extend window properties exposed through query commands #90
- Extend definition of WINDOW_SEL, SPACE_SEL and DISPLAY_SEL to include first, last, and recent #85
1.0.3 - 2019-06-30
- Prevent status_bar and window borders from displaying in native fullscreen spaces #71
- Fixed an issue with the status_bar where has_battery and charging would not be default initialized when macOS report that there are zero power sources #60
- Properly destroy the underlaying view when a space changes layout #81
1.0.2 - 2019-06-25
- Hide power indicator from the status-bar if a battery could not be found #60
- Disable focus follows mouse while the mouse_modifier key is held down #62
- Silence meaningless warning reported by the scripting-bridge framework #55
- Extend definition of WINDOW_SEL to include mouse, targeting the window below the cursor #66
- Allow all config (except status_bar) settings to be edited at runtime #69
- Window should not be added to the window-tree twice when deminimized on an inactive display #70
- Expose window_placement as a config setting to specify if windows become the first or second child #65
1.0.1 - 2019-06-23
- First official release