Skip to content

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:

Terminal window
osascript -e 'id of app "AppName"'

Replace “AppName” with the app’s display name. For example:

Terminal window
osascript -e 'id of app "Visual Studio Code"'
# Returns: com.microsoft.VSCode

For Electron apps or apps with unusual names, check the app’s Info.plist:

Terminal window
defaults read /Applications/AppName.app/Contents/Info.plist CFBundleIdentifier

Common bundle IDs reference

ApplicationBundle ID
Findercom.apple.finder
System Settingscom.apple.systempreferences
Terminalcom.apple.Terminal
Safaricom.apple.Safari
VS Codecom.microsoft.VSCode
iTerm2com.googlecode.iterm2
Alacrittyio.alacritty
Ghosttycom.mitchellh.ghostty
Firefoxorg.mozilla.firefox
Chromecom.google.Chrome
Slackcom.tinyspeck.slackmacgap
Discordcom.hnc.Discord
1Passwordcom.1password.1password
Raycastcom.raycast.macos
Alfredcom.runningwithcrayons.Alfred
Zoomus.zoom.xos
Teamscom.microsoft.teams2
Spotifycom.spotify.client