An open API service indexing awesome lists of open source software.

https://github.com/metaory/mactile

Setup script for tiling window manager on macOS
https://github.com/metaory/mactile

macos macos-tile skhd skhdrc tiling tiling-window-manager yabai yabairc

Last synced: 25 days ago
JSON representation

Setup script for tiling window manager on macOS

Awesome Lists containing this project

README

          



logo
mactile



Setup script for tiling window manager on macOS



Installs and configures yabai and skhd for tiling

---

## Features

- Two-column adjustable layout with gaps
- Keyboard shortcuts for window management
- Auto-start with sensible defaults
- Minimal dependencies

## Setup

```bash
# Clone and setup
cd /path/to/this/project
./setup.sh
```

## Manual Setup

### Dependencies

```bash
brew install yabai skhd jq
```

### Configuration

```bash
mkdir -p ~/.config/yabai ~/.config/skhd
ln -sf "$(pwd)/yabairc" ~/.config/yabai/yabairc
ln -sf "$(pwd)/skhdrc" ~/.config/skhd/skhdrc
```

### Permissions

- System Settings → Privacy & Security → Accessibility
- Add Terminal and yabai, skhd

### Start

```bash
./start.sh
```

### Auto-start

```bash
brew services start yabai
brew services start skhd
```

## Hotkeys

### Window Switching
- `alt+tab` - Next window
- `alt+shift+tab` - Previous window

### Layout
- `m+space` - BSP layout
- `m+shift+space` - Float layout

### Window Controls
- `m+m` - Maximize/restore
- `m+n` - Minimize
- `m+f` - Toggle float
- `m+shift+f` - Toggle sticky

### Window Movement
- `m+shift+h/j/k/l` - Swap window direction

### Window Resizing
- `m+ctrl+h/j/k/l` - Resize by 50px
- `m+alt+h/j/k/l` - Resize by 10px

### Spaces
- `m+1-9` - Focus space
- `m+shift+1-9` - Move window to space

### Navigation
- `m+h/j/k/l` - Focus window by direction
- `m+r` - Rotate layout
- `m+b` - Balance windows
- `m+p` - Toggle padding

### Utilities
- `m+t` - Toggle borders
- `m+shift+r` - Reload yabai
- `m+shift+escape` - Float all windows

## Status

```bash
./status.sh
```

## Logs

```bash
log show --predicate 'process == "yabai"' --last 5m
log show --predicate 'process == "skhd"' --last 5m
```

## Restart

```bash
./stop.sh && ./start.sh
```

## Uninstall

```bash
./uninstall.sh
```

## License

[MIT](LICENSE)