App exclusion recipes
Patterns for excluding apps from tiling. Blocklist mode (default) tiles everything except listed apps. Allowlist mode tiles only listed apps.
System apps
Exclude apps with non-standard windows or dialogs:
spoon.Shoji:configure({ filter_mode = "blocklist", filter_apps = { "com.apple.finder", "com.apple.systempreferences", "com.apple.Preview", "com.apple.calculator", "com.apple.ActivityMonitor", },})Finder windows have variable sizes. System Settings uses sheets and popovers. Preview is often used for quick document viewing.
Spotlight alternatives
Launcher apps should float over tiled windows:
spoon.Shoji:configure({ filter_mode = "blocklist", filter_apps = { "com.raycast.macos", "com.runningwithcrayons.Alfred", "com.flexibits.fantastical2.mac", },})Password managers
Password manager windows are temporary and should overlap:
spoon.Shoji:configure({ filter_mode = "blocklist", filter_apps = { "com.1password.1password", "com.bitwarden.desktop", "com.lastpass.lastpassmacdesktop", "org.keepassxc.keepassxc", },})Video conferencing
Exclude meeting apps where camera/sharing windows behave unpredictably:
spoon.Shoji:configure({ filter_mode = "blocklist", filter_apps = { "us.zoom.xos", "com.microsoft.teams", "com.microsoft.teams2", "com.google.Chrome.app.kjgfgldnnfoeklkmfkjfagphfepbbdan", "com.cisco.webexmeetingsapp", "com.tinyspeck.slackmacgap", -- Slack huddles },})Media and creative tools
Apps with floating palettes, inspectors, and preview windows:
spoon.Shoji:configure({ filter_mode = "blocklist", filter_apps = { "com.apple.iPhoto", "com.apple.Photos", "com.spotify.client", "com.apple.Music", "com.figma.Desktop", "com.bohemiancoding.sketch3", },})Development focused allowlist
Tile only coding apps, everything else floats:
spoon.Shoji:configure({ filter_mode = "allowlist", filter_apps = { "com.apple.Terminal", "com.googlecode.iterm2", "io.alacritty", "com.mitchellh.ghostty", "com.microsoft.VSCode", "com.jetbrains.intellij", "org.mozilla.firefox", "com.apple.Safari", "com.google.Chrome", },})This is stricter than blocklist. Only the listed apps participate in tiling. Useful when you have many utility apps that shouldn’t be tiled.
Combining with minimum size
Filter apps and small windows together:
spoon.Shoji:configure({ filter_mode = "blocklist", filter_apps = { "com.apple.finder", "com.apple.systempreferences", }, min_width = 400, min_height = 300,})Finder floats regardless of window size. Other apps float only if their windows are smaller than 400x300.
Finding bundle IDs
Look up an app’s bundle ID:
osascript -e 'id of app "AppName"'Replace “AppName” with the app’s display name. For example:
osascript -e 'id of app "Visual Studio Code"'# Returns: com.microsoft.VSCodeFor Electron apps or apps with unusual names, check the app’s Info.plist:
defaults read /Applications/AppName.app/Contents/Info.plist CFBundleIdentifierCommon bundle IDs reference
| Application | Bundle ID |
|---|---|
| Finder | com.apple.finder |
| System Settings | com.apple.systempreferences |
| Terminal | com.apple.Terminal |
| Safari | com.apple.Safari |
| VS Code | com.microsoft.VSCode |
| iTerm2 | com.googlecode.iterm2 |
| Alacritty | io.alacritty |
| Ghostty | com.mitchellh.ghostty |
| Firefox | org.mozilla.firefox |
| Chrome | com.google.Chrome |
| Slack | com.tinyspeck.slackmacgap |
| Discord | com.hnc.Discord |
| 1Password | com.1password.1password |
| Raycast | com.raycast.macos |
| Alfred | com.runningwithcrayons.Alfred |
| Zoom | us.zoom.xos |
| Teams | com.microsoft.teams2 |
| Spotify | com.spotify.client |