Release Notes
What changed in each release, newest first.
Download KiwiDesk 3.1.03.1.0
LatestKiwiDesk 3.1.0 adds one key to put a Space's window sizes back, and Settings now records Hyper shortcuts.
New · 1
- New: ⌃⌥R puts back the sizes in the Space you're on — every window you resized there, by key or by dragging, returns to what your profile set. Updating adds the key where it's free and the action has no shortcut yet, as ✦R if you moved your letter shortcuts to Hyper; change or remove it in Shortcuts & Gestures ▸ Size & float.
Improved · 1
- Switching to a Desktop that loads its own profile is now quicker, without the brief stall it could have on the way in.
Fixed · 1
- With a Hyper key set, Settings now records Hyper shortcuts too: they already worked from
init.luaand the CLI, but recording one in Settings kept only the key. Now holding the Hyper key adds ✦.
3.0.0
KiwiDesk 3.0.0 brings KiwiVision for focus, KiwiHub for windows and shortcuts, a layout cycle, and setup by asking your AI app.
Before you update: Space switches no longer slide — they're instant, and a screen without a Space Bar names the Space for a moment. The menu bar's Layout, Switch Profile and View Shortcuts… rows are now one Open KiwiHub… row.
New · 8
- New: KiwiVision (⌃⌥V) dims and blurs everything but the window you're in. Settings ▸ KiwiVision sets how much, whether the wallpaper or the current app's other windows stay clear, which apps are never dimmed, and whether macOS switches to Dark while it's on.
- New: KiwiVision lenses keep the apps you pick clear, each on its own shortcut and in the profiles you choose; while one is on, KiwiDesk's focus keys stay on those apps. Make one with New Lens… in Settings ▸ KiwiVision.
- New: KiwiHub, one panel on ⌃⌥J, ⌃⌥K and ⌃⌥L. Jump to any window by typing its name (⇧↩ brings it to the Space you're on), see every shortcut, or pick a layout, profile or lens for the Space under the pointer; Tab steps between the three.
- New: ⌃⌥C switches the Space you're on to its next layout and ⌃⌥⇧C to the previous one, with a moment's picture of the cycle. Choose the layouts it walks under Shortcuts & Gestures ▸ Layout ▸ Layouts to cycle; it starts with BSP, Scrolling and Floating.
- New: set KiwiDesk up by asking your AI app. Settings ▸ AI adds KiwiDesk to Claude Desktop in one click or copies a setup prompt for Claude Code, Cursor or Codex, with ready-made prompts for your Spaces, a new look, app rules or a move from another window manager; setting changes stay temporary until you say keep.
- New: focus can follow the mouse — rest the pointer on a window and it takes the focus. Off by default; turn it on under Shortcuts & Gestures ▸ Mouse & trackpad ▸ Focus and the pointer.
- New: a Hyper key. Shortcuts & Gestures ▸ Hyper key turns Caps Lock, a modifier (left and right apart) or an F-key into an extra modifier no app uses, without Input Monitoring, and offers to move your ⌃⌥ letter shortcuts and Go to Desktop keys onto it. Quitting KiwiDesk gives the key back.
- New: a What's new link in Settings Home's footer opens the notes of any release since 2.0.0.
Improved · 8
- Space switches are now instant and no longer slide; on a screen without a Space Bar a plate names the Space you arrived on for a moment. Turn it off under KiwiShelf ▸ Show ▸ Show the Space after a switch.
- A Monocle Space no longer flips a card when focus moves: the next window comes straight to the front, and the two flip settings are gone.
- The menu-bar menu now has one Open KiwiHub… row in place of Layout, Switch Profile and View Shortcuts…; it opens KiwiHub on its Layout, Profile and KiwiVision lines.
- Updating now adds ⌃⌥J, ⌃⌥L, ⌃⌥C, ⌃⌥⇧C and ⌃⌥V wherever the key is free and the action has no shortcut yet; change or remove them in Shortcuts & Gestures. ⌃⌥K still opens your shortcuts, now as KiwiHub's middle side.
- Scrolling and Monocle have new symbols in the Layout menu, the Space Bar and KiwiHub, so the two no longer look alike.
- A look now carries your animations too, so changing them on the shared look reaches every profile that wears it.
- Settings looks and responds more consistently: every button, palette, chip and menu lifts grey under the pointer, searchable lists move one kiwi highlight with both the pointer and the keys, and the font and app pickers match macOS's own pop-ups.
- Settings now lists changes made from outside it, by a shortcut, the command line or an AI app, under Live, not saved in the save pill, and Save no longer puts back a change made while Settings was open; Keep saves them into your profile.
Fixed · 4
- An app that takes a few seconds to start, like Word, Xcode or VS Code, now takes you along to its App Rule's Space.
- Floating windows now stay above the tiles after a Space Bar or App Bar click or a keyboard focus move, and the focus border no longer slips under a floating window or goes missing on a floating sticky one.
- With the menu bar shown on hover, the window you were in no longer flickers while the pointer rests at the top of the screen on macOS 27.0.1.
- A shortcut on ⌃1 to ⌃9 now warns that macOS's Switch to Desktop shortcut takes that key.
Lua & CLI · 3
- If you write your own Lua config:
show_shortcutsis nowkiwihub.show("shortcuts"), the slide'sanimations.set_on_space_change,animations.set_space_change_durationandset_space_switch_liquid_glassgive way toset_space_cue, andanimations.set_on_monocle_focusandanimations.set_monocle_flip_durationare gone. Each old name is refused with its replacement, and shortcuts saved in Settings are renamed for you. - New verbs:
kiwivision.*,look.*,app_rule.*,shortcut.*,explain_windowandexplain_app,move_here,set_hyper_key,mouse.set_hover_focusandmouse.set_hover_focus_delay;kiwidesk mcpserves them to AI apps. kiwidesk completion zsh|bash|fishandkiwidesk watchare new,subscribe --reconnectsurvives a relaunch, and an app verb given an app's name now suggests its bundle id.
2.3.1
KiwiDesk 2.3.1 leaves Spotlight alone on macOS 27.
Fixed · 1
- Spotlight stays where it opens on macOS 27 — KiwiDesk mistook Spotlight's search panel for one of your windows: typing nudged it down, and sometimes it opened in a corner of the screen. KiwiDesk now leaves it alone.
2.3.0
KiwiDesk 2.3.0 puts windows back after a restart, adds keys for moving between Spaces, and floats Settings windows on its own.
New · 6
- After a restart of the Mac or a logout, your windows now go back to the Spaces they were in, and the notice under the menu-bar icon counts them back in.
- New keys for moving between Spaces: ⌃⌥⌘← / → step to the previous or next Space, and ⌥⌘Tab / ⌥⌘⇧Tab go back and forward through the Spaces you visited, like a browser. An updated setup gets ⌥⌘Tab / ⌥⌘⇧Tab added; the arrows keep your swap until you restore the defaults (see below).
- Each screen can now put its bars on its own edge — the Space Bar at the top of one screen and the bottom of another, say — under KiwiShelf ▸ Each bar ▸ Per screen.
- A Desktop switch KiwiDesk makes now shows the Desktop's number for a moment; turn it off under Profiles ▸ Profiles per macOS Desktop.
- An app's shortcut can now bring all of that app's windows into the Space you're on: pick Gather Windows as its action.
- KiwiDesk now warns once when AeroSpace, Amethyst or OmniWM runs beside it, and can quit it for you.
Improved · 10
- Some default shortcuts now sit on better keys: swap is now ⌃⌥⇧ + arrows, freeing ⌃⌥⌘ + arrows for the previous and next Space. Your keys stay as they are; to take the new ones, click Restore Defaults… in Shortcuts & Gestures. It resets only the Default layer, keeps shortcuts you made yourself unless they use one of those keys, and shows what it changes before you confirm.
- New default shortcuts now reach your setup when you update: from this release on, each one is added where its key is free and you have no shortcut for that action yet. Nothing you set is changed, and one you remove isn't added back.
- Windows that can't be resized, like many apps' Settings windows or Calculator, now float on their own instead of being squeezed into a tile. If one floats that you'd rather tile, add its app under App Rules ▸ Tile; App Rules ▸ Automatic floating turns the guess off altogether.
- ⌃⌥⇧⌘ + a number now goes to that macOS Desktop, added for each Desktop whose shortcut is free; one you remove isn't added back.
- Quitting KiwiDesk now gathers floating windows too, and the next launch puts each one back where it floated.
- Unsaved Settings edits no longer wait in a closed window: closing Settings or quitting now asks whether to save them, and open dialogs close instead of holding up a quit.
- A Space can now have its own gaps, set in its Customize… overrides on the Spaces page.
- Advanced Colours now groups colours by what they colour, so one pick can recolour a whole group at once.
- The Monitors page is now called Screens, and KiwiDesk calls a physical screen a screen in every language; searching for "monitor" still finds it.
- An empty temporary Space you visit and leave now goes away, and temporary Spaces sort by number.
Fixed · 11
- A window you close with ⌘W or open with ⌘N is now arranged at once instead of waiting for the mouse to rest.
- Switching macOS Desktops no longer freezes a busy desk for a moment, and the focus border slides away with its window.
- Coming back to a Desktop now focuses the sticky window that followed you, and switching profiles away and back keeps every window in its Space.
- Overlays that cover the whole screen, like Slack's huddle drawing or a dictation HUD, are now left alone.
- Ghostty's configuration-error and update windows, and titled windows of menu-bar apps, now float instead of being ignored.
- A floating window that fills the screen no longer hides the bars as if it were a slide show, and the focus border now fits a floating window that keeps its own size.
- App Bar boxes no longer leave faint trails as they slide with the Liquid Glass look, and pop-up notices no longer clip their ends.
- Settings no longer saves over an init.lua you changed in another editor, and it now says when a first Save moves your shortcuts and rules into the visual editor.
- A new laptop profile's Grid now holds four windows, two by two, instead of piling the third onto the second.
- Open at Login no longer registers a copy that can't start at login, such as one run straight from a download.
- The detached preview card in Settings no longer judders while you drag it.
Lua & CLI · 2
space_bar.set_reserveandapp_bar.set_reserveare new: with reserve off, a bar draws over the windows instead of making room, so showing or hiding it moves no window.kiwidesk self_testis new, and reports which of the private macOS calls KiwiDesk relies on this macOS still answers.
2.2.0
KiwiDesk 2.2.0 is about speed: Spaces, focus and startup no longer wait on a slow app, and Space switches now slide past in a snappy 300 ms.
New · 5
- Space switches now slide: the Space you leave and the one you pick glide past together on plates showing each app's icon, on by default at 300 ms, also in profiles saved before 2.2.0, since the old setting moved the windows themselves. KiwiDesk comes opinionated, but it's yours: turn it off or set its pace under Looks & Animations ▸ Animate Space switches. Reduce Motion keeps the switch instant.
- Rest the pointer on an app in the bars for a list of its windows, the focused one checked; click a row to go straight to it.
- A keyboard layer can now choose which profiles it belongs to, under Applies to in Shortcuts & Gestures.
- Shortcuts & Gestures now opens with a row of jump chips that take you straight to a group.
- A slow start now shows a quiet notice under the menu-bar icon until your windows are in place.
Improved · 10
- Switching Spaces, moving focus and starting up no longer wait on a slow app, like System Settings or a busy GPU, and a new app's first window tiles right away. A Space switch now makes about a third of the accessibility calls 2.1.1 made and moves a quarter of the windows; the performance page has the numbers.
- KiwiDesk no longer rearranges windows under your hand: a window opening or closing while you drag waits until you rest.
- Focus shortcuts pressed quickly in a row now keep going instead of stopping while the previous app comes forward.
- A click on a Space Bar icon that stands for several windows now steps through them, and on another Space's icon goes there.
- The Space Bar's front app now keeps one length, so nothing beside it shifts as focus moves, and it grows in and out as it comes and goes.
- Right-click menus in the bars now name the app at the top, and the Space Bar's front app offers its window's actions too.
- A floating window dropped past the bottom of the screen now shrinks to fit instead of hanging off it.
- Settings now reads more clearly in Dark Mode, and a few names changed: KiwiShelf & Bars is now KiwiShelf, and the motion rows are Window duration and KiwiShelf duration.
- Before an update changes a settings file, KiwiDesk now keeps a copy in
~/.config/KiwiDesk/migration-backups. - Granting Accessibility no longer rearranges your windows by itself: a new setup starts tiling when you press Start Tiling.
Fixed · 10
- The focus border no longer stays over Mission Control on macOS 27 or sits on a slide show, and after a Space switch it arrives with its window.
- On a Scrolling Space, a window no longer jumps back and slides in again right after a Space switch.
- Going to a Space that doesn't exist yet now shows it on the Space Bar instead of an empty desk.
- Closing a window no longer sometimes takes you to the same app's window on another Space.
- KiwiDesk started while the screen is locked now picks up your windows after you unlock.
- The right-most items of a scrolled App Bar now take clicks.
- A floating window flicked up under the menu bar or the shelf now comes back out.
- Deleting a keyboard layer now removes the shortcuts that switch to it.
- Opening Settings while it's open now keeps your page.
- The welcome tour's Looks step is now translated into every language KiwiDesk speaks.
Lua & CLI · 2
- If you write your own Lua config:
pull_or_spawnis nowfocus_or_spawn, the name for what it always did. Shortcuts you made in Settings are updated for you; a call in your owninit.luanow fails and namesfocus_or_spawn. animations.set_on_space_changenow defaults to on, and the newanimations.set_space_change_durationsets the slide's pace, 300 ms unless you set it. A config that calls the setter keeps its value.
2.1.1
A small cleanup this time: a few quick findings I fixed while the bigger performance work is underway. Checking for updates now answers in KiwiDesk's own window, the front app on the Space Bar gets an indicator of its own, and fonts with old-style numbers sit straight on the bar.
Improved · 5
- The front app on the Space Bar now wears the active indicator too — its outline or edge mark, in the front app's colour unless you pick another under Advanced Colors ▸ Front app indicator.
- Check for updates now answers in KiwiDesk's own update window, while it checks and when you're up to date, with this version's notes and Next on my list, now a tab of its own.
- Picking the Pill or Sakura look now also sets its own font, Avenir Next or Hiragino Sans.
- The Font weight slider now greys out for a font with fixed weights only, like Menlo or Apple Chancery, and shows the weight it draws instead of moving without effect.
- Rounded chips on KiwiShelf now leave the same room at both ends, and an empty Space shown by a symbol is as round as a numbered one.
Fixed · 2
- Space numbers now sit centred in fonts with old-style figures, like Apple Chancery or Georgia, instead of low.
- Switching to an empty Space no longer leaves a dark box where the front app was shown.
2.1.0
KiwiDesk 2.1.0 makes KiwiShelf your own. Looks are ready-made shelf designs to start from: pick one, then change the font, the border, the glyph size, the colours and the edge of each bar until it is yours, and keep it as a Look of your own — kiwis come in green, gold and red, and your shelf in whatever you like. The Space Bar keeps the window you are in at the centre of its Space, and a Space made on the fly leaves when it empties. Plugging a screen in or out got smarter too: your windows go back where they were, and new ones wait together in a Space marked with a two-screen icon until their screen comes back. An update now leaves your windows where they are, and a long round of fixes rounds it off. App shortcuts now do what they were made for even when macOS keeps an app running with no window — Safari after its red close button, say: the shortcut brings its window back instead of doing nothing. New here, or not yet through everything KiwiDesk does on a chord or a swipe? Press ⌃⌥K for the overview, or open Shortcuts & Gestures in Settings, where each gesture comes with its own little preview — this release's included: a right-click on KiwiShelf for a menu of what you clicked, and moving through your windows and your Spaces with a trackpad gesture or your mouse.
New · 12
- Looks: ready-made and saved KiwiShelf designs — Glass, Taskbar, Classic, Tiler, Pill and Sakura, each with its colours, where the bars sit, the focus border's shape and the gaps — on the page now called Looks & Animations, and as a step of the welcome tour. One look is shared across your profiles unless a profile keeps its own, and a new palette, Nightfall, joins the bundled ones.
- Each bar can now sit on its own edge — KiwiShelf ▸ Position ▸ Each bar — and on different edges each is its own shelf. New setups start with the Space Bar on top and the App Bar on the bottom; yours stay where they are.
- Right-click the KiwiShelf for a menu of what you clicked: a Space's layout, its settings, New Space and Delete Space; an app's New Window, Move to Current Space, Float or Tile, App Rules…, Close Window and Quit; and KiwiShelf Settings, Looks and Advanced Colors at the end of every menu.
- Click an app glyph on the Space Bar to focus that window — a glyph standing for several opens a menu of them — and hover a glyph or an App Bar item for its full title.
- Hold ⌃⌥ and scroll to move focus window by window, ⌃⌥⌘ and scroll to step between Spaces — trackpad or mouse wheel — set up under the new Shortcuts & Gestures ▸ Mouse & trackpad, which also shows what the mouse and trackpad do, in moving pictures.
- Temporary Spaces: a Space you make on the fly — New Space on the bar, or a shortcut to a Space that doesn't exist yet — is marked with an hourglass, goes away once its last window leaves, and is never saved unless you add it to the profile in Settings ▸ Spaces.
- The Space Bar gains Other Spaces — their apps, or just each Space's name with a window count — a Space label that draws the layout in place of the name, a switch for grouping a Space's same-app windows, and a gap between glyphs.
- KiwiShelf ▸ Style gains a Font and Font weight for the bars' text, a Border around the plate or the boxes, a Glyph size and a Highlight width.
- A sheen on the focus border, the shelf's highlight and border, and the drag borders — a lighter or darker top edge, set under Looks & Animations ▸ Sheen, and on for everyone.
- Floating windows now wear a mark on the window, like sticky ones (Gaps & Borders ▸ Show mark on floating windows), and the App Bar now lists a Space's floating windows after its tiled row.
- KiwiShelf now animates a Space switch: the App Bar grows out of the Space Bar and shrinks back into it, a bar on an edge of its own fades in and out, the row dissolves between two Spaces that both show one, and App Bar groups slide together and apart. Looks & Animations ▸ Animate KiwiShelf and KiwiShelf duration set it, and Reduce Motion lands everything at once.
- What's new now ends with Next on my list — a dated list of up to three things I'm working on next.
Improved · 10
- Floating a tiled window now centres it at a usable size — Float Window (⌃⌥F), or a Float rule saved over an open window — cascading when another float already sits there, and a window you float again returns to where it last floated.
- Installing an update now leaves your windows where they are — Install and Relaunch from the update window, and
kiwidesk service restart— sizes and scroll positions included; a quit still spreads them out. - On quit, windows now fill the screen in a balanced grid before they pile up — two side by side, four as a 2×2, the last one stretched over what is left — and entering or leaving the Floating layout does the same.
- The update window now has tabs — Highlights, New, Improved, Fixed, Lua & CLI — and after Install, What's new opens again at once and says how far the start has got.
- The Space Bar now keeps your focused window centred in each Space's row, with a +n on either side for the rest, and holds still while your pointer rests on it.
- Plugging a screen in or out now remembers your windows: a window that was already open before you plugged in or out goes back to the Space it was in, and the ones opened since stay together in a held Space, marked with a two-screen icon on the Space Bar, that goes back to its screen when the screen does. Held Spaces keep their order and their hidden windows, survive a KiwiDesk restart, and a profile switch now holds any Space it has no name for while it has windows.
- The alert sound and the quit grid's windows per pile are now app-wide, on General, applying without Save; the Behavior page is gone, and its mouse settings live under Shortcuts & Gestures.
- Tile Window now says why it can't — an App Rule, a dialog or a missing Dock icon floats the window — and removing a Float rule now tiles its windows again.
- The starter setup and the workflow presets are now tuned to the shape of your screens — an ultrawide scrolls wide, a portrait screen scrolls tall — and Visual Creative & Developer is now called Design Studio.
- The welcome tour can now be replayed any time from the bottom of Settings Home, and its layout thumbnails, like the preset previews, play their layout once.
Fixed · 12
- Open or Focus now reopens an app that is running with no window, and lands on the window you used last — right after a Space switch it used to do nothing.
- Scrolling the shelf no longer stalls under a boxed Liquid Glass bar.
- A slide show or a borderless-fullscreen game now opens in front, and the bars get out of its way.
- In a Scrolling Space, dragging the outer edge of the first or last column now resizes it instead of snapping back.
- Windows on Spaces you aren't looking at no longer flash onto the screen at launch, and a Monocle Space's windows no longer come back at half size after a relaunch.
- A floating window dragged onto another display now belongs to that display's Space — tiling it no longer sends it back across, and switching the old screen's Space no longer parks it.
- A tiled window moved into a Floating Space no longer lands partly off-screen, and a floating window no longer hides behind the tiles after a move-and-follow.
- Orion's second profile now tiles, and its invisible preview twins no longer take a slot or trade focus with their window.
- A Space no longer gets a second digit shortcut after you reorder Spaces, and a duplicate already in your saved shortcuts is dropped once.
- A shortcut recorded in Settings now takes effect on Save, like every other setting — it used to work at once and vanish on the next start.
- A profile's memory of which windows sit in which Space now survives a restart, and quitting under one profile and starting under another no longer puts the first one's layouts on the second's Spaces.
- A Space chip no longer keeps its hover after a click switched Spaces, a full bar's end items no longer touch the border, and switching Boxed to Plain no longer clips the items.
Lua & CLI · 5
- If you write your own Lua config:
make_autois retired —make_tileddoes its job, and fails on a window a rule or detection floats;set_float_nudgebecomesset_float_placement("center" | "keep"), a saved nudge-off reading askeep;kiwishelf.set_edgeisspace_bar.set_edgeandapp_bar.set_edge;space_bar.set_glyph_capisspace_bar.set_glyph_span;drag.set_ghost_border_widthanddrag.set_drop_zone_border_widthareborder.set_width, anddrag.set_corner_radiusisborder.set_corner_style; andapp_bar.set_content,monocle.set_app_bar_contentandscroll.set_app_bar_contentare gone, the App Bar always drawing icon and title. Each old call is reported in Config Issues with its replacement. - The move and float verbs now take a window:
move_to_space,move_to_space_and_follow,make_floating,make_tiledandtoggle_floatingaccept a window id fromget_stateas a last argument and act on that window instead of the focused one. - New:
new_windowandclose_window, with the same optional window id — they press the app's own File ▸ New Window and the window's close button. create_spaceanddelete_spacenow take a scope,session(the default) orprofile, which also writes the live profile's file; a Space created from a keybinding or the CLI is temporary.set_refusal_sound,quit.set_layoutandquit.set_grid_target_depthnow change the running value only — the settings are app-wide ingui.json, and no profile carries them.
2.0.0
KiwiDesk 2.0.0 puts the Space Bar and the App Bar on one shelf, KiwiShelf: one edge, one look, one set of colours. It declutters the interface — settings the two bars each carried are now one — for a simpler, more consistent experience. Profiles take a firmer hold on your screens and Desktops — unplugging a screen keeps its Spaces until it comes back, a Desktop can load a profile for one particular screen setup, and App Rules and shortcuts say which profiles they apply to. KiwiDesk also brings its own update window, more Liquid Glass, a reworked App Rules page and a round of fixes.
Before you update: Your settings carry over on their own. The two bars now share one edge and one style, and where they differed the shelf takes the Space Bar's — so with the usual setup, the App Bar in a Monocle or Scrolling Space moves up to the top beside the Space Bar. Settings ▸ KiwiShelf & Bars moves the shelf.
New · 12
- KiwiShelf now puts both bars on one shelf — one plate with a divider between them, and when the shelf is full, drag the divider to give the Space Bar more room; double-click resets it.
- A bar with more than fits now fades at its edge and shows a count you can click to page; the mouse wheel and the trackpad scroll it.
- New outer and inner margins set how far the shelf sits from the screen edge and from your windows.
- Unplugging a screen now keeps its Spaces on the screen that remains, windows and layouts included, marked ✱ — plug it back in and they go home. A held Space is never saved into a profile.
- A Desktop can now load a profile for one screen setup — your desk's monitors, say — ahead of the profile bound to it for every setup with that many screens.
- App Rules and shortcuts now say which profiles they apply to: All profiles, or the ones you tick, and a profile can leave a shared shortcut out.
- Opening an app whose App Rule sends it to another Space now takes you there with its window.
- KiwiDesk now has its own update window, listing everything changed since your version as New, Improved, Fixed and Lua & CLI; after an update, What's New shows the same.
- New: Install updates automatically, under Settings ▸ General, installs a downloaded update the next time KiwiDesk quits. It is off by default and never restarts KiwiDesk by itself.
- KiwiDesk now has a Discord community, and Settings Home now ends in the community links — Discord, GitHub and Ko-fi — with the version, the update state and About below. Check for Updates… moved there from the menu bar menu, which shows Update Available… only when an update was found.
- With the Space Bar off, the menu bar icon now shows the Space each screen is on, and the active layer when it isn't the default one.
- With Liquid Glass on, the drag markers and the sticky mark are now glass too, each tinted by its own colour.
Improved · 8
- On Liquid Glass, the shelf's colour now fades from the screen edge toward your windows, so the glass reads lighter.
- Each screen setup now belongs to one profile — the last one you saved or loaded with it — so connecting those screens loads the profile you expect.
- App Rules is now two lists, Open in a Space and Float, and adding a rule starts by choosing which; a rule can no longer be one that does nothing.
- The Profiles page now counts screens and Spaces instead of drawing them, deleting a profile asks first, and "make default" names the screen count it is for.
- In Settings ▸ Spaces, + with an empty name now adds the next free number, and a name another Space already has now says so instead of silently reverting.
- A window you close and bring back now opens where you are, and focused, like a new window — a deliberate choice: a window manager opens windows in front of you, and you can move them from there.
- In Stack, dragging a window's edge along its column now resizes it instead of snapping back, as the keyboard does.
- KiwiDesk now stays smooth while a browser or terminal retitles its window on every page load or command.
Fixed · 8
- The bar no longer stays under the menu bar after turning the menu bar's auto-hide back off.
- Disconnecting a screen or a Vision Pro no longer briefly loads the wrong profile before the right one.
- A window set to stay visible across Desktops now follows a trackpad swipe to another Desktop.
- An app's right-click menu no longer closes on its own when an App Rule puts that app in another Space.
- With the menu bar on auto-hide, reaching the top edge no longer takes focus away from the Settings window.
- ⌘W now closes the Settings window.
- A Space 1 you had renamed or deleted no longer comes back on every launch.
- App icons now sit centred and whole in the bars, a thin Space Bar included, and Adobe apps and others with a version in their name get their icon again.
Lua & CLI · 7
- If you write your own Lua config: the bars' shared setters — edge, alignment, thickness, background style and fit, Liquid Glass, corner roundness, item gap, font size, icon source, dim factor and the colours — move from
space_bar.set_*,app_bar.set_*,monocle.set_app_bar_*andscroll.set_app_bar_*tokiwishelf.set_*.init.luais not rewritten; each old call is reported in Config Issues with its replacement. item_sizeis retired — an App Bar's width follows itstitle_cap, a Space Bar item fits its content —space_bar.set_title_capis nowspace_bar.set_front_app_title_cap, and thegapactive indicator is gone.- New shelf setters:
kiwishelf.set_minimum,kiwishelf.set_order,kiwishelf.set_outer_marginandkiwishelf.set_inner_margin;drag.set_liquid_glassandsticky.set_liquid_glassjoin the Liquid Glass switch. reset_layout_sizingnow returns the active Space, one Space orallto the sizes your profile set.bind_profile_to_desktopnow takes screens to scope a binding to one setup, andsave_profileandload_profilesay when they took a screen setup from another profile.delete_spacenow names what would bring the Space back — a profile,init.luaor your Settings.monitor_changenow fires once the screens have settled, rather than for each in-between report.
1.4.0
KiwiDesk 1.4.0 makes ultrawide screens comfortable — a Scrolling Space says how many windows it shows, and the anchors put the focused window where they say — and brings profiles and macOS Desktops into step, with one profile per screen count and windows returning in the order you left them. Beside that, a card flip when focus moves in a Monocle Space, and a round of fixes.
Desktops and profiles
- A Desktop can hold one profile per screen count — bind a one-screen and a two-screen profile to the same Desktop and the one matching the screens connected loads when you dock or undock. The Desktops card groups its rows by screen count and names the screen under each Desktop.
- Switching to another Desktop and back keeps your windows in order, and a Track Space keeps its columns.
Windows and layouts
- A focus change in a Monocle Space flips a card instead of cutting straight to the next window: the windows blur and a card turns from the outgoing app's icon to the incoming one's. On by default — Flip between windows and Flip duration are under Layout Defaults ▸ Monocle, and macOS's Reduce Motion keeps it off.
- A Scrolling slot of 50% is exactly two windows, gaps included, and a Windows on screen stepper under the slot size sets the count directly; the split ratios gain ¼ ⅓ ½ ⅔ ¾ presets. A saved slot size moves by less than one gap.
- The Left, Right, Top, Bottom and Center anchors now mean what they say: the focused window rests at that position even when the row is shorter than the screen, so the rest of the row can hang off the edge. If you'd rather have the screen always filled with windows, use Follow — it's unchanged, and still the default.
- If one window, fill the screen is a new toggle for Scrolling and Stack, on by default. Off, a lone window keeps its slot size or master zone and the rest of the screen stays empty.
- In Track, a window with a fixed size no longer hogs the width — the leftover goes to the columns beside it, which you can resize again, and switching Spaces and back keeps the arrangement.
Borders and gaps
- The unfocused border is visible again on the dark palettes — six of the built-in palettes drew it too dark to see over dark wallpaper, and each takes a lighter grey now.
- Fit layout gaps makes room for the glow, so a focused window's glow no longer bleeds onto its neighbour, and the button now lives in the Gaps card.
Settings and shortcuts
- ⌃⌥, opens Settings on a new setup, beside ⌃⌥K. An existing setup gets it through Shortcuts ▸ Restore Defaults…
- The gap sliders and the Desktop binding rows stay live — the sliders while the per-edge values differ (a value there sets all of them), the rows while you edit a stored profile, and Save keeps the binding.
- Rows with no effect are greyed and say why — Auto Glow Size with the glow off, Liquid Glass while Reduce transparency is on.
- The icon picker for Spaces and layers opens on Symbols rather than on whichever tab you left it. Furthermore, the picker's search is cleared when it's closed.
- On macOS 27, Settings' dropdowns keep their text grey — the new OS tinted every pop-up's label green while Settings was the front window.
1.3.0
KiwiDesk 1.3.0 is the first release under the Business Source License 1.1 — free to use for everyone, business included; only offering it as a product or service is reserved, and each version becomes MIT after four years. Beyond that: Liquid Glass on by default, a Mac Checklist in Settings, windows that respect an app's own minimum size, a swipe that stays where you sent it, and a Settings window that comes to the front when asked.
Liquid Glass and the bars
- Liquid Glass is on by default on macOS 26, and it honours Reduce transparency the moment you switch that on. A setup that had it off keeps it off.
- Both bars start at 40 pt thick on a new setup, on every screen size, and the Thickness sliders now go down to 20 pt.
- The Space Bar shows which shortcut layer is active, leading with the layer's icon while one other than the default is on — and scripts can hear the switch as a
layer_changeevent.
Windows and layouts
- An app's own minimum size is respected, and the resize pill says whose limit you hit. A split makes room for a window that won't go narrower instead of letting it overlap its neighbour, Track opens only as many tracks as fit, and This app won't go smaller names the app where Minimum window size reached still means the setting you can lower.
- A double-clicked title bar or edge no longer knocks a tiled window out of its slot, nor does an app resizing itself — the window goes straight back, and a floating window that zooms is kept clear of the bars.
- Switching a Space to Floating no longer leaves windows off screen or piled on top of each other — anything you couldn't reach is laid out in a grid.
- The Track limit is the number of tracks you see. A limit of 3 used to show four; the default is now 3, and saved configs are adjusted on first load so nothing moves on screen.
- Floating windows get the unfocused border too, and clicking around a Floating Space no longer lifts a sticky window over the others.
Desktops and profiles
- A swipe to another Desktop no longer gets pulled back a second later.
- A Desktop binding fires only when its profile fits the screens connected. Bound to a one-screen profile with two screens plugged in, the Desktop takes the profile for that screen count instead, and the Desktops row says which count the binding is for.
Settings
- Settings opened from the menu bar comes to the front again, including after you closed it once in a Scrolling Space.
- A Mac Checklist card lists the macOS settings a tiling window manager fights — Stage Manager, rearranging Spaces by use, edge tiling — read live from your Mac, with the habits that make tiling stick. The guide link now lives at its foot, and the tour ends there.
- Search opens the drawer a setting hides in, and finds your palettes by name.
- The Track shortcuts sit behind their own drawer — Move windows in the track layout, below the Desktop one — instead of beside shortcuts every layout uses.
1.2.2
A one-fix release: floating windows that come back where you left them.
Floating windows
- A floating window no longer gets stuck in the screen corner. Switching spaces could lose where a floating window belonged — after a Desktop switch, a relaunch, or simply a slow app — and from then on it came back tucked into the bottom corner where hidden windows park. Its place now survives all three, and a window whose place is genuinely lost comes back centred on its screen instead of in the corner.
1.2.1
A small release: Desktop switches that stay put, profiles that keep their arrangements, and an update you can actually see.
Desktops
- A swipe to another Desktop stays there instead of bouncing you back a moment later, and the swipe back keeps the window macOS refocused.
- Switching Desktops no longer reads or rewrites your profile files. A hand-edited profile takes effect at the next reload or apply.
Profiles
- A profile keeps the arrangement you left it with through a Settings save, a preset, a discard, Reset All Settings and a backup restore — a window parked on another Desktop included.
Updates
- You are told when an update is waiting: an orange dot on the menu-bar icon and an Update Available… row, instead of a window opened behind everything else.
Settings and the command line
- The Desktop shortcut drawers explain themselves with a ? that says what a macOS Desktop is next to a KiwiDesk Space.
focus_desktopandmove_to_desktop_and_followreturnswitched,falsewhen the Desktop was already showing.
1.2.0
This release is about macOS Desktops. KiwiDesk now knows which windows live on the Desktops you are not looking at, keeps each Desktop's and each profile's Spaces apart, brings sticky windows along when you switch, and puts focus back where you left it when you come back. Around that: a keyboard preview you can read, one honest cue for every blocked resize, and several focus jumps that are gone — including the one that pulled you off a fullscreen video. Liquid Glass now covers every KiwiDesk surface from a single switch, and three long-standing translation defects are fixed.
Desktops, done properly
- Every profile owns its own Spaces. Two profiles' Space 1 used to be one Space, so switching profiles and back could merge an arrangement away for good. Each profile now records what its Spaces held when you leave it and restores them when you return. A brand-new Desktop picks a Space no other Desktop is showing instead of landing on one whose windows are all somewhere else.
- A Desktop keeps its identity when Mission Control renumbers it. Adding, removing or dragging a Desktop — or plugging a screen in — shifts every Desktop number, and everything keyed by number silently pointed at a different Desktop. KiwiDesk now stamps each Desktop with its own identifier, so profile bindings and remembered Spaces stay with the Desktop they were made on.
- Windows on other Desktops are known, not forgotten. KiwiDesk reads which windows each Desktop hosts, so a window that vanished because you switched Desktops is reported as away rather than closed, keeps its Space and slot for its return, and Open or Focus can reach it across Desktops.
get_statelists them underaway_windows, and startup no longer counts parked or system windows among them. - The Space Bar shows the Desktop in front of you. Windows parked by KiwiDesk in another Space are the bar's job; windows sitting on another macOS Desktop are not, and no longer appear.
- Sticky windows come with you across Desktops. A window marked ∞ follows you to every Desktop; one marked 📌 follows across its screen's Desktops. On by default and switchable with
sticky.set_desktop_reach, with a per-window override for the one window you want left behind. - Coming back to a Desktop puts focus where you left it. Returning used to jump focus to the first window in the row; KiwiDesk now remembers each Space's last focus per Desktop and hands it back at that window's own return.
- Move a window to a Desktop and into a Space in one verb.
move_to_desktop(3, "mail")andmove_to_desktop_and_followtake an optional Space the window joins when it lands. - A ∞ window entering a floating Space on another screen moves onto that screen, scaled to it, instead of staying where its previous Space drew it — and its ∞ mark shows on the one bar that actually has it.
- A new docs page explains how screens, Desktops, profiles and Spaces relate, with a diagram — the model the app assumed you already had.
Liquid Glass, and the bars
- Liquid Glass is one switch, and it covers everything. It used to be an App Bar setting alone. It now lives in Colors & Animations and lays macOS's translucent material over the Space Bar, the App Bar and the shortcuts panel together, with each bar's Fill colour tinting its own material. The shortcuts panel stays untinted on purpose — a large panel summoned over the desktop reads best as clear glass. If your three surfaces are set differently today, turning the switch on adopts all three.
- The bars honour Reduce Motion. With the system setting on, a bar no longer slides or fades — it just appears where it belongs. The affordance stays; only the motion goes.
Focus stops jumping
- KiwiDesk stops believing focus reports that are not yours. Apps announce focus changes that are not system focus changes: a window re-focusing itself a second after KiwiDesk places it, a duplicate report landing after your next keypress, a small panel that takes the keyboard without bringing its app forward. Each one moved KiwiDesk's idea of focus off the window you were actually on — and at worst left every focus shortcut refused until you clicked a window to resync. All three are recognised now.
- A window that blinks out keeps its place. Some browsers drop their window for half a second entering and leaving native fullscreen, and some apps stop reporting a window during fast focus changes. Both read as a close, so the window lost its slot and focus moved to a neighbour. Leaving a fullscreen video now returns you to the video.
- Clicking KiwiDesk's own Settings window focuses it. On a scrolling Space, clicking another window pans Settings out of view — and clicking it again within two seconds did nothing at all.
Resizing tells you why it stopped
- Every blocked resize draws a pill, and a drawn pill may sound. A resize press in a layout with no resizing, or on an axis the zone does not have, used to be cued by sound alone — invisible with sound off. One cue now covers every refusal.
- The pill lands on the window that cannot move. In BSP a refusal named the focused window as at its minimum when a neighbour was the one stuck, sending you to resize the wrong window.
- A window alone in its zone says so. "Nothing to divide here — try the other axis" and "This zone has nothing to divide" replace six silent cases and one message that was false; a one-window stack no longer shows a row of "Minimum window size reached" pills on a window filling the screen.
- Two more presses now answer properly. A native full-screen window is refused, and says so, in every layout — it used to be silent in one and shove its neighbours around in another. And a window floating because its whole Space uses the floating layout now resizes like one, which until now only windows you had floated by hand did.
Shortcuts you can read
- The keyboard preview answers a real question now. Hover a key to see every action on it, chord first, with what a collision costs spelled out — the red key finally says which two bindings collide. And the board draws the layer you are editing, so "is this key free here" is answered for the layer that will actually fire rather than for all of them at once.
- A conflict warning names the cost, not just the collision, and reads macOS's live shortcut settings: a system chord you have turned off no longer counts as a conflict, and one you turned on does.
- Swap rides ⌃⌥⌘ plus an arrow; ⇧ keeps the digits. The three-modifier claw for swapping is gone: ⌃⌥⌘ with an arrow swaps with a neighbour, ⇧ with a digit sends the window to that Space. Fresh installs get the new defaults; a keymap you edited is yours and does not move.
- Per-Desktop shortcut rows appear once you bind one. A dozen unbound "Go to Desktop N" rows no longer sit in the Focus and Move cards on every Mac with several Desktops.
- The shortcuts panel says when it has more to show. On a default install the panel is taller than its ceiling and scrolls, and nothing said so — the rows below the fold were simply not there as far as you could tell.
- Picking an app binds it, in one press. Choosing an app for a shortcut no longer needs a second button afterwards, which is how app rules have always worked.
Settings
- Export Log… in General ▸ Advanced. Pick a time range, save the file, attach it to a bug report — no terminal needed.
- Picking an app adds its rule immediately. The separate "Add app rule" button is gone, and with it the half-added state that drew no icon.
- Keyboard navigation got shorter and quieter. Arriving in an area focuses the page instead of the back chip (six presses fewer to the first field), a segmented control costs one Tab stop instead of one per segment, and the focus ring appears only when the keyboard asked for it — mouse clicks no longer draw one, the Space chip included.
- The save pill lists the screen changes the header claims. Clicking it opened nothing when the only unsaved change was a screen setup drifting from the profile.
- The profile card's help states the rule correctly: the main screen's Desktop selects the profile, and all four rungs of the selection ladder are there.
- "Save as new" says screen, and speaks every language. The message called a screen a monitor and was missing from every non-English catalog.
- Bar titles default to ten characters. The bars show window titles, and each item is sized from the widest, so the old 25-character default spent the bar before you chose anything.
- And a run of smaller fixes. The hex field in Advanced Colors can be clicked into, the app picker finds apps in subfolders and both of its surfaces answer Escape alike, the Space chips in Monitors show they can be dragged, a profile card stays marked while you point at another, and Save is readable in light mode while Settings is inactive.
In your language
- Switching language now changes every label. Some lists — the bars' Position and Alignment pickers, the shortcut recorder's help — kept whichever language was live the first time you opened that page, so the window came back part English and part German.
- Track shortcut rows read as sentences. "Move window to next track" was assembled from a bare "next", which five languages cannot inflect into a sentence; each row is now translated whole.
- The shortcuts panel has one name. Everything pointing at it said "shortcuts panel" while the panel announced itself to VoiceOver as "Shortcuts reference".
1.1.2
Switching a layout from the menu bar and then saving in Settings used to undo the switch — that is fixed, and the menu row that makes a switch permanent now says what it does. BSP also picks a new default split, which changes how untouched setups tile.
Saving in Settings stopped undoing your layout
- Save no longer puts the old layout back. Switch a Space to Monocle from the menu bar, then open Settings to change a gap and press Save: the Space used to snap back to whatever the profile held, and that is what got saved — the switch was destroyed by saving something unrelated. Save now touches only what you changed in Settings, so the gap is saved and the Monocle switch stays on screen, still temporary until you keep it. Changing a Space's layout in Settings itself is a real edit, and that one wins.
- The menu row is now "Keep Layout in Profile ‹name›". Same action, honest name: a layout switched from the menu bar is temporary until you keep it, which is how macOS words this choice elsewhere.
- That row lights up whenever any screen is on a temporary layout, not only the screen you are looking at. It writes the whole profile, so it used to grey itself out while another screen's menu said the layout was unsaved.
- Settings no longer narrates temporary layouts at all. The menu bar's "not saved to profile" line is now the single place a temporary layout is announced — and Revert went back to being just "discard my edits".
BSP splits alternately now
- New windows alternate horizontally, then vertically, as they nest. That alternation is what most people mean by BSP; the old default cut each area's longer side, which read as the layout misbehaving rather than as a choice. Both options are still there, in BSP's settings and in
bsp.set_strategy. - This changes how you tile if you never picked a strategy. If you did pick one — in Settings or in your config — it is stored and nothing moves. Fresh installs and untouched setups get the new default.
Floating spaces respect your bars
- A window in a Floating space is now pushed clear of the App Bar and the Space Bar, the same as a window you floated by hand. It could previously sit underneath one with its title bar covered, and nothing ever moved it back out.
Smaller things
- Settings shows just the version number. The build hash moved to
kiwidesk --version, which is where support asks for it. - Release plumbing: the release notes and the update feed publish themselves again, without a hand on the wheel.
1.1.1
A small patch about focus: one fix for the moment your Mac wakes, one for the keyboard path in Settings. The rest is housekeeping — the site now names the sticky feature what Settings names it, a localization tool refuses a half-redirect it once obeyed silently, and a broad comment trim landed across the Settings tree.
Waking up
- Shortcuts work right after your Mac wakes. Waking or unlocking used to restore your focused window on screen — ring, bars, everything — while macOS quietly kept another app in front, so every shortcut was denied until a rescue click produced a real focus change. The wake restore now actually hands that window the focus (and when it is gone, the window genuinely in front), and if macOS refuses the handoff, the first key press heals it instead of dying.
The Settings keyboard path
- Jumping between areas keeps the keyboard with you. Following a cross-reference link, or picking a search result that lives in another area, left keyboard focus stranded at the top of the window. It now lands on the ← Home chip, exactly as opening an area from Home always did, so Tab keeps walking from where you are. (As before, full keyboard access needs System Settings ▸ Keyboard ▸ Keyboard navigation turned on.)
1.1.0
The release where resizing a window started telling you the truth, and where the keys got out of your way. Most of what changed you will notice without looking for it. It gets more technical as you read down — and four things need a minute of your attention, marked where they come up.
Resizing, made honest
- This got the most attention of anything in the release, because nearly every complaint about it turned out to be the same thing: KiwiDesk was resizing something other than what you asked, or refusing for a reason that did not exist.
- A resize press acts on the focused window, measured from the size it is actually drawn at. Before, the first several presses could do nothing visible, or silently resize every neighbour instead.
- Holding the chord resizes continuously, at your display's refresh rate, rather than stepping along a key-repeat timer that got slower the longer you held it.
- A floating window grows and shrinks from both edges, keeps working when it is parked against the edge of the screen, and will not grow underneath a bar. Held resizing on a floating window now travels the whole distance you asked for — with Reduce Motion on, it used to deliver under a third of it.
- When an app refuses to go smaller or larger, you are told on the first press. "Maximum window size reached" is a message now, in your language, instead of ten silent presses followed by the window snapping back.
- Resizing stopped stalling. A pass that froze for up to two seconds and then jumped now runs clean; in the measured session, forty-two stalls became one.
- Scrolling spaces stopped sliding. Resizing no longer drags the focused window toward the leading edge, a slot cannot be grown past what is drawn, and a window resting against the trailing border keeps that border.
- Apps that fight back are handled. The Android emulator and its kind used to send tiling into an endless expand-and-snap loop about once a second. Now there is one adjustment when the window appears, and then the row settles.
A keyboard layout that gets out of the way — and how to take it up
- The shipped shortcuts were re-measured against what macOS and common apps actually claim, and moved accordingly.
- Resizing has its own layer,
⌥⌘, on digits rather than arrows —⌥⌘1/⌥⌘2for width,⌥⌘4/⌥⌘5for height. Arrows were rejected because⌥⌘with arrows is next and previous tab in most browsers and terminals, and those have no menu to fall back on. ⇧means one thing again. Sticky moved to⌃⌥Sfor everywhere and⌃⌥Pfor this screen only.- The numeric keypad works. Keypad digits fire the same bindings as their number-row twins — so if you already have space shortcuts on
⌃⌥1through⌃⌥9, they start answering the keypad the moment you upgrade, with nothing to configure. - Worth knowing: none of the other shortcut changes reach an existing install by themselves. The shipped set is seeded only into a configuration that has no shortcuts at all, so it never overwrites anything you or your Lua wrote. If you have been using KiwiDesk, your keys are exactly where you left them.
- Restore Defaults… is how you take them up, at the top of Settings ▸ Shortcuts. It puts back the set a fresh install would get — for your Desktops and your resize step, not a fixed list — including defaults added since you installed. Your own shortcuts are kept. The one exception is a shortcut of yours sitting on a key a default needs, which cannot stay without putting two bindings on one key; the confirmation counts those before you agree, and says so plainly when the answer is none. Settings search finds it under "restore", "defaults" or "reset".
- The guide now teaches how to choose a shortcut of your own — what makes a chord safe, why ⌃⌥ is the quiet corner, and the one thing worth doing before you commit to a new one. In English, German and Japanese.
Reduce Motion and VoiceOver
- Reduce Motion is honoured across Settings. Layout previews arrive instead of springing, and fifty-one animation sites that ignored the system setting now stand down with it.
- Starting VoiceOver no longer steals your focus to a different app a few seconds later.
- Drawer headers behave as one thing across fifteen drawers, and all of them join the VoiceOver headings rotor.
Start at login does one job now
- The switch installs the login item and nothing else. Crash supervision used to ride along with it, unasked. It is still available, deliberately, as
kiwidesk servicefrom the command line. - If you relied on that supervision, turn it on explicitly after upgrading. Nothing else changes for you.
- Turning Start at login on while KiwiDesk is running no longer steals focus every ten seconds, indefinitely.
- The update prompt comes to the front when it is ready to install and restart, instead of waiting behind every other window where it could not be found.
KiwiDesk can move around macOS's Desktops
- Switching Desktops and sending windows between them now works — on stock macOS, with System Integrity Protection on. This was listed as impossible for most of KiwiDesk's life. Two new commands,
focus_desktopandmove_to_desktop, and the Space Bar and shortcut editor speak them like anything else. - A switch KiwiDesk drives performs the real transition, instead of leaving two Desktops drawn on top of each other for a moment.
- Moving a window to another Desktop and following it lands your keyboard focus on that window, every time, rather than most of the time.
- A window sent to a Desktop on another screen stays there instead of springing back to where it came from.
- Switching Desktops settles immediately. It used to take five to ten seconds to stop rearranging, even switching to an empty one.
Scripting
- Every command describes itself.
kiwidesk list_commandsnow documents all 262 — group, typed arguments, and a one-line summary each.kiwidesk help <command>works, andlist_commands <group>filters instead of returning everything. - Output is readable at a terminal and unchanged in a pipe. Pretty-printed when you are looking at it, the same compact line when a script is reading it. Keys are sorted either way.
- One rename needs your hand:
animations.set_scroll_speedis nowanimations.set_scroll_duration. It always was the duration — raising it made scrolling slower — and the setting is renamed in the interface to match. Your stored configuration is migrated for you. Lua is not, on purpose: if yourinit.luaor one of your keybindings callsset_scroll_speed, it will fail loudly at the moment you press it, which is better than failing silently. Rewrite it once and it is done.
Also
- New installs open in Scrolling on every screen but the smallest, with a deliberate slot width instead of an automatic one. Existing setups are untouched.
- One word per concept, in every language. Width, floating, the Track unit, and "make it bigger" each had two words in at least one language and now have one. Japanese and Korean can now tell Go to Space from Move to Space, and German and Korean can tell the shortcuts a profile inherits from the ones KiwiDesk ships.
- The Restore Defaults confirmation speaks your language. It was English everywhere but English — at the one moment it is telling you what you are about to lose.
- Your profiles move to a newer format the first time this version saves one, which means 1.0.1 cannot read them afterwards. Nothing to worry about: kiwis only grow, they never shrink back. 🥝
1.0.1
A small release with one thing to know if you script KiwiDesk. Nothing about how your windows behave changes.
One word for macOS Desktops, everywhere
native_spaceis nowdesktopon the wire. The copy has said Desktop for macOS's desktops and Space for KiwiDesk's own since 0.9.7; the commands and events now say the same. If yourinit.luabinds profiles to Desktops, or a script listens for the switch event, update the spelling — the old names are gone, not aliased:KiwiDesk.bind_profile_to_native_space(n, profile)is nowKiwiDesk.bind_profile_to_desktop(n, profile), thenative_space_changeevent is nowdesktop_change, andkiwidesk get_statereportsdesktopinstead ofnative_space.- Bindings made in the Settings window need nothing from you. They live in KiwiDesk's own settings file, not in
init.lua, and keep working as they are.
1.0.0
The Kiwi is ripe. KiwiDesk is 1.0. 🥝
Ready is the headline
- 1.0 is not a feature dump, it is a verdict. Seven layouts, Lua configuration, profiles, per-Desktop setups, the App and Space Bars, and a Settings window you can drive end to end from the keyboard — all of it has been carrying real desks through the beta. Nothing about how your windows behave changes today, and that is exactly what a 1.0 should feel like: the boring release, arrived at on purpose.
Just download it already
- Homebrew is no longer the price of entry. Take the signed, notarized disk image from the KiwiDesk site, drag the kiwi into your Applications folder, and you are done. No terminal, no tap, no incantation.
- Same app whichever way you get it. Homebrew keeps one perk — it puts the
kiwideskcommand on your PATH — and from then on KiwiDesk quietly keeps itself up to date either way.
Also
- The site now argues for KiwiDesk the way the people using it do, by naming the everyday Mac annoyances it takes off your hands. It also says out loud that Settings can be driven entirely by VoiceOver and the keyboard, and the release-notes page no longer sprawls to the window edge.
0.9.10
BetaA large accessibility release: Settings is now fully usable with VoiceOver and the keyboard. Plus steadier window resizing and several focus fixes.
Accessibility
- Settings works with VoiceOver. Every control announces its name and its current value, sections are proper headings, and the keyboard shortcut board is read out as one description instead of a grid of loose cells.
- The App Bar names its buttons. Bar controls that show only an icon now announce what they do.
- Right-click reaches the keyboard. Press ⌃. to open the same menu the mouse opens on the focused row.
Windows and layout
- Resizing stops where it should, and says why. A window that cannot shrink any further shows a cue on the first attempt instead of silently refusing, and growing a window is now limited by what its neighbours can give up.
- The Settings window resizes like any other tile. Dragging its edge moves the neighbouring windows, which it previously did not.
- Track columns keep their proportions. Column widths no longer drift when windows join or leave a track.
Fixes
- Focus stays where you put it. Dismissing a quick terminal or summoning KiwiDesk no longer steals focus from the window you were working in.
- Hidden apps leave no ghosts. Hiding an app now reports a hide rather than a close, so its windows do not linger in the layout.
Also
- Settings drawer headers are clickable across their full width, the count badge no longer wears an alert colour, and the German, Japanese, French and seven other catalogs carry the new VoiceOver strings.
0.9.9
BetaRefined window behavior, mouse resizing in Track layout, and polish across Settings and the bars.
Windows and layout
- Apps that hide stay out of your way. Closing an app like Discord or Spotify that keeps running in the background no longer leaves a ghost tile in your layout.
- Mouse resizing in Track mode. Dragging borders between track columns or windows in the Track layout now resizes them smoothly, matching the keyboard shortcuts.
- Shrinking stops cleanly at minimum size. Shrinking windows no longer risks tripping into an unexpected full-screen cascade when reaching minimum dimensions.
Bars and Settings
- Bars name the active window. The App Bar and Space Bar now show the title of the specific document or window you are on rather than only the application name.
- Minimizable Settings. The KiwiDesk Settings window can now be minimized from the title bar like any standard Mac window.
- Palette duplicate notices. Adding a color already in a palette now clearly explains that the duplicate is skipped.
Also
- Smoother title updates, accessible names for App Bar controls, and automatic migrations for saved configuration profiles.
0.9.8
BetaKiwiDesk can keep itself up to date now.
Updates
- New versions arrive on their own. KiwiDesk checks quietly in the background and tells you when there is something newer, so you no longer have to go looking for it. Nothing installs without you saying yes.
- Ask whenever you like. There is a Check for Updates… item in the menu for when you would rather not wait to be told.
- See what changed before you take it. The update window shows you the notes for the new version, and the same notes now live on the KiwiDesk site.
0.9.7
BetaThe biggest Settings pass so far.
Multi-screen Desktops
- Bind profiles to Desktops without changing a macOS setting. "Load this profile on Desktop 2" now means Desktop 2 on your main screen — so it works with macOS's normal "Displays have separate Spaces" setting left switched on, and KiwiDesk no longer asks you to turn it off (which cost you a menu bar on each screen, the Dock on any screen, and fullscreen not blanking your other displays). The bindings list shows your main screen's Desktops, marks any you bound elsewhere, and a "?" explains the trade either way.
Windows behave
- Apps that won't shrink no longer break your layout. Some apps — browsers especially — refuse to go below a minimum size. KiwiDesk now notices when an app won't budge and arranges the others around it, instead of asking over and over and leaving windows overlapping.
- The focus outline keeps up. It used to trail behind when windows moved quickly.
- Scrolling stops at the edge of your screen. Windows scrolled off to the side no longer slide across onto your other monitor.
- Monocle: choose where the hidden windows go. They stack behind the focused window as before, or you can park them out of the way.
- No more phantom entries in the Space Bar from right-click menus and popups.
- Quicker, quieter startup, and waking from sleep now says what it actually restored.
Profiles
- See a preset before you apply it. Open any preset and look at the real layouts it will create — no more guessing what "Coder & Monitor" means.
- Saved profiles and presets look alike now, so you can compare them at a glance, and the ones that fit your current screens are listed first.
Settings
- Live previews for Colours and for Spaces & Layouts — change a value, watch it happen.
- Settings works without a mouse. Keyboard navigation, focus that lands somewhere sensible after you delete something, and a greyed-out control that tells you why it's greyed out.
- Back up your setup — Export and Restore, in General.
- A per-screen Layout menu in the menu bar when you have more than one screen connected.
- A Release Notes link in About, pointing here.
Translations
- Better translations across all ten languages: a batch of sentences that couldn't be phrased naturally in other languages have been rebuilt so they can be.
Also
- Fixes to the site and branding, a newer icon font, and stricter release checks so a release can't be cut while its milestone still has open work.
Looking for older releases? View all releases on GitHub ↗