Flache Arrays, keine Bäume
Jeder Space ist eine flache Fensterliste. Layouts sind reine Funktionen über dieses Array — niemals Baum-Chirurgie.
KiwiDesk verwaltet Fenster in flachen Arrays, nicht in i3-artigen Bäumen — voll in Lua konfigurierbar, mit sieben Layouts zum Umschalten. Und es deaktiviert nie SIP.
MIT-lizenziert ↗ · in Swift und Lua geschrieben · signiert und notarisiert · macOS 14+, Apple Silicon
🥝 Version 1.1.2„Tiling-Manager waren immer nur was für Nerds. Ich wollte, dass sie für alle intuitiv funktionieren – wie von Zauberhand.“
„Ich wollte einen Fenstermanager, der mit dir arbeitet — und nicht einen, dem du erst erklären musst, wie er arbeiten soll.“
Zehn verspielte Sekunden mit unserem Maskottchen, das fröhlich einen Bildschirm voller Fenster an seinen Platz bringt — ganz nach KiwiDesk-Art, nur mit ein bisschen extra Charme.
Zum Abspielen klicken — 10 Sekunden 🥝
„Kleine Warnung: Es ist ungefähr so wohltuend, wie Kiwis dabei zuzusehen, wie sie Kiwis stapeln. Du wirst absichtlich Fenster öffnen, nur um zuzusehen, wie sie an ihren Platz wandern.“
Ein flaches, eindimensionales Fenstermodell — und alles Schnelle, Skriptbare und Sichere, das daraus folgt.
Jeder Space ist eine flache Fensterliste. Layouts sind reine Funktionen über dieses Array — niemals Baum-Chirurgie.
bsp, stack, scrolling (PaperWM), monocle, grid, track und floating. Wechsle blitzschnell zwischen ihnen.
Eine isolierte Lua-5.5-VM liest ~/.config/KiwiDesk/init.lua. Eine fehlerhafte Konfiguration kann deine Fenster nicht einfrieren — ein 500-ms-Watchdog passt auf.
Skripte alles. Streame Events über einen Socket an SketchyBar, JankyBorders oder deine eigenen Tools.
Ein Display-Link pro Monitor, sodass gemischte 60-/120-Hz-Setups jeweils in ihrer eigenen nativen Taktung animieren.
Keine Kernel-Erweiterung. Modale Tastenkürzel laufen über Carbon — keine Input-Monitoring-Berechtigung, kein Keylogger.
Ein Sticky-Fenster folgt dir über alle Spaces — oder bleibt auf dem einen Bildschirm, auf dem es lebt. Markierung am Fenster und Abzeichen in der Space Bar zeigen dir, welche.
Unter VoiceOver nennt jedes Bedienelement Namen und Wert, und die Einstellungen lassen sich komplett über die Tastatur bedienen — mit macOS-Tastaturnavigation.
Tabs in Finder, Safari oder Terminal wechseln oder verbinden: Dein Layout bleibt. Für einen Fenstermanager ist jeder macOS-Tab ein eigenes Fenster — daran scheitert Tiling sonst.
Jedes Layout ist eine reine Funktion über dasselbe flache Array — das Umschalten klappt also sofort und vorhersehbar.
Binäre Raumaufteilung: Jedes neue Fenster halbiert einen Bereich.
Ein Master-Bereich neben einer Stapel-Spalte.
Scrollende Niri- / PaperWM-Spalten oder -Zeilen.
Fokussiertes Fenster maximiert, der Rest dahinter.
Dynamische oder feste Zeilen × Spalten.
Spalten oder Zeilen; jedes Resize hat genau ein Ziel.
Der macOS-Standard, unangetastet gelassen.
Lieber Text statt Schieberegler? Schreib echtes Lua in ~/.config/KiwiDesk/init.lua, und es übernimmt — Layouts, Abstände, Tastenkürzel, alles als Code, ausgeführt in einer isolierten Lua-5.5-VM hinter einem 500-ms-Watchdog, sodass ein Tippfehler deine Fenster niemals einfrieren kann.
-- ~/.config/KiwiDesk/init.lua
KiwiDesk.set_gap_global(10)
KiwiDesk.set_mode("music", "floating")
-- one flat array per space, tidy by default
KiwiDesk.bind("cmd+alt+left", function()
KiwiDesk.focus("left")
end)Jede Aktion ist ein Befehl. Binde sie an Tasten, skripte sie oder streame Live-Events über einen Unix-Socket in SketchyBar, JankyBorders oder deine eigenen Tools.
„Als mein Fenstermanager skriptbar wurde, fing mein Desktop an, sich selbst zu verwalten. Seitdem habe ich kein einziges Fenster mehr verschoben.“
$ kiwidesk set_mode monocle
$ kiwidesk focus left
$ kiwidesk get_state
# Live-Events streamen (für SketchyBar, eigene Tools…)
$ kiwidesk subscribe space_change„Obwohl ich mich im Terminal absolut zuhause fühle, war ich es leid, ständig die verschachtelten Container im Hinterkopf behalten zu müssen, nur um meine Fenster so anzuordnen, wie ich will. KiwiDesk hält alles flach. Kein unnötiger Overhead, keine Ablenkung: einfach nur Fokus auf meine Projekte.“
Lieber ein Paketmanager? Ein Befehl, und die kiwidesk-CLI landet in deinem PATH. So oder so hält sich KiwiDesk ab dann selbst aktuell.
Zur DokuDas signierte, notarisierte Image ist dieselbe App — installierst du sie so, verlinkst du die kiwidesk-CLI danach selbst in deinen PATH, wie es die CLI-Doku beschreibt.
$ brew install --cask kiwicanopy/tap/kiwidesk
# die kiwidesk-CLI landet in deinem PATHMIT-lizenziert ↗ · in Swift und Lua geschrieben · signiert und notarisiert · macOS 14+, Apple Silicon
$ git clone https://github.com/KiwiCanopy/KiwiDesk.git
$ cd KiwiDesk
$ swift build -c release
# für Mitwirkende — Homebrew ist der einfache WegLade KiwiDesk herunter oder installiere es mit Homebrew — beides ist derselbe signierte Build, und er hält sich ab dann selbst aktuell.
MIT-lizenziert ↗ · in Swift und Lua geschrieben · signiert und notarisiert · macOS 14+, Apple Silicon
KiwiDesk ist kostenlos und Open Source — mit einem Stern auf GitHub hilfst du anderen, es zu finden.
„Die Leute sagen immer, "an apple a day" — aber die Kiwi hat mehr Vitamine und größere Pläne... 🥝“