Window Management

Decknix includes tiling window manager support for macOS.

AeroSpace

AeroSpace is a tiling window manager inspired by i3. Decknix provides both home-manager and darwin modules.

Enabling

# home.nix
{ ... }: {
  decknix.wm.aerospace.enable = true;
}

Options

OptionDefaultDescription
decknix.wm.aerospace.enablefalseEnable AeroSpace
decknix.wm.aerospace.prefixKey"cmd+alt"Prefix key for commands
decknix.wm.aerospace.keyStyle"emacs""emacs" (arrows) or "vim" (hjkl)
decknix.wm.aerospace.enableModeIndicatorShow current mode in status bar

Workspaces

Define named workspaces with optional monitor assignment:

{ ... }: {
  decknix.wm.aerospace.workspaces = {
    "1" = { name = "Terminal"; };
    "2" = { name = "Browser"; };
    "3" = { name = "Code"; };
    "4" = { name = "Chat"; monitor = "secondary"; };
  };
}

Default workspaces: 1–5 (main, web, term, mail, chat) + D, E, N, M, S (decknix, emacs, notes, music, system).

System-Level Settings

The darwin module optimises macOS for tiling:

OptionDefaultEffect
decknix.services.aerospace.disableStageManagertruePrevents conflicts
decknix.services.aerospace.disableSeparateSpacestrueMulti-monitor support
decknix.services.aerospace.disableMissionControlShortcutstrueFrees Ctrl+arrow keys
decknix.services.aerospace.autohideDocktrueMaximises screen space

Hammerspoon

Hammerspoon provides Lua-based macOS automation.

{ ... }: {
  decknix.wm.hammerspoon = {
    enable = true;
    modifier = "Meta + Ctrl";
  };
}

Generates Lua configuration with space navigation bindings.

Spaces

Multi-monitor workspace management with named space groups:

{ ... }: {
  decknix.wm.spaces.workspaces = {
    dev = {
      name = "Development";
      startSpace = 1;
      spaces = [ "terminal" "editor" "browser" ];
      key = "d";
    };
  };
}

Generates space picker scripts with shortcodes for quick switching.