# Shelf (/docs/haus/rooms/shelf)



Drag a file, flick up to the notch, and a shelf drops down to catch it:
[perch](/docs/perch), wired up here.

## Enable it [#enable-it]

```nix
haus.shelf.enable = true;
```

```sh
haus rebuild
```

Off by default. On, Perch.app is copied to `/Applications`, kept current, and
`perch` goes onto your PATH:

```sh
perch add report.pdf shot.png     # and list, rm, doctor
```

The room grants nothing. It switches &#x2A;*Desktop & Dock ▸ "Drag windows to top of
screen to enter Mission Control"** off without asking: the shelf cannot work
with it on.

Perch itself asks for one thing, and only when you go to pair a phone:
**Local Network**, which is how a paired iPhone or iPad finds your Mac. A Mac
with nothing paired never advertises, so it is never asked. `haus permissions`
has a card for it. If you dismissed that dialog, opening &#x2A;*Pair a Device…**
again asks you afresh, which is quicker than the trip to System Settings.

## Colour [#colour]

```nix
haus.shelf.followSystemAppearance = true;
```

On, the shelf follows macOS Light/Dark at your `haus.theme.contrast`, no
rebuild, no relaunch, rather than your
[`haus.theme.flavor`](/docs/haus/rooms/appearance) like every other themed tool.

## Screenshots [#screenshots]

```nix
haus.shelf.watchScreenshots = true;  # the default wherever the shelf is on
```

Screenshots reach the shelf on their own through a watched folder; this clears
macOS out of the way. The floating thumbnail goes off
(`haus.screenshots.thumbnail`, at `mkDefault`, so naming it in your host puts it
back): macOS *holds* the capture for about five seconds before writing the file,
so a watched folder catches it that late.

perch offers your screenshots folder in Settings ▸ Watched Folders rather than
make you find it, which it can only do if it knows where captures land. It
reads macOS's own setting for that; where this machine sets one
(`haus.screenshots.location`), haus writes the folder into
`~/.config/perch/config.json` as the fallback.

## Remove it [#remove-it]

```nix
haus.shelf.enable = false;
```

haus stops installing and updating perch. `/Applications/Perch.app` stays until
you delete it, and the Mission Control setting keeps the value haus wrote, so
flip that back by hand. While the room is on, every rebuild ends with the shelf
running: one you quit comes back.

## Options [#options]

[Every setting, with types and defaults](/docs/haus/reference/options#shelf).
