Swish-Style Window Management for BetterTouchTool

I love the idea of managing and tiling windows using only trackpad gestures. Swish is obviously amazing in this particular department, but I often missed the kind of deep customization you can only get with BTT. This led me to this fun project: recreating the main features of Swish using BTT.

Out of the box, most gestures in this preset are set up the same way Swish is, but since it's BTT, you can further customize it any way you like.

What It Does

Displays a visual trackpad for window management, complete with live previews (optional) that show exactly where your window will snap on the desktop.

Core gestures

Works on window titlebars, dock icons, or anywhere on the screen if you hold the Fn key.

  • Swipe Left/Right → Halves
  • Swipe Up → Maximize
  • Swipe Diagonally (e.g., left then up) → Quarters

Conditional Gestures (Advanced)

This feature is actually not available in Swish. Swish, like many similar apps, relies on pressing a modifier key or using more than two fingers during a swipe to activate additional window positions. I tried to create a "longer swipe" logic to implement this while still using the same gestures as the main 4x4 tiling.

  • Continuously Swipe Left or Right: Switch between thirds, two-thirds, and middle third.
  • Continuously Swipe Up: Switch to a 65% resized, centered window.

This type of continuous swipe logic isn't natively built into BTT, which is why this feature comes disabled by default, since It will likely require some fine-tuning of the code to match your specific trackpad size and sensitivity. Before enabling it, please review the JavaScript code in the "Variable Value Did Change" trigger and adjust the thresholds to your preference. It works surprisingly well when tuned right.

Alternative: 3-Finger Swipes
The same window positions are available via 3-finger swipes instead of 2 (enabled by default).

Other Gestures

Secondary actions that will display a quick popover symbol indicating the triggered action.

Over Window Titlebar:

  • Pinch Out: Enter fullscreen mode
  • Swipe Down: Minimize window (or exit fullscreen)
  • Pinch In: Close window

Over Dock Application:

  • Swipe Down: Minimize all windows of that app
  • Swipe Up: Activate/Launch
  • Pinch Out: New window/tab (executes ⌘N for that app)

Over Menubar:

  • Swipe Left/Right: Focus previous or next window (swipe multiple times to go deeper into your active apps list)
  • Swipe Down: Hide all windows (all apps)
  • Swipe Up: Unminimize/Bring to front all opened applications

Some Notes

  • :warning: After importing the preset, please restart BetterTouchTool (this is needed for screen dimension detection). If you later change your display settings (like toggling auto-hide for the Dock or Menubar), restart BTT again to keep the live previews accurate, if you're using it.
  • I recommend changing BTT’s trackpad swipe sensitivity settings to make it a bit easier to trigger. Mine is set to around 0.2.
  • Most of the settings and preferences are named triggers that reside in the Automation Named & Other Triggers tab. If you want to disable or tweak any of these settings, I suggest navigating to that tab.

Download

Swipe Gestures.bttpresetzip (274.2 KB)

Tell me if it's working for you!

Just downloaded this and it is very cool. Works really well. The only hiccup I get is that if I swipe (e.g. left or right with 2 fingers) too quickly, the window preview pops up and gets stuck without actually resizing the window. This doesn’t happen if I hold a second after swiping before lifting my fingers. Any idea how to avoid this? Thanks for your work here!

Thank you! Sorry for the delay in getting back to you.

I’m not entirely sure about this. I’m currently working on fixing some general lag issues with the floating menus, but the window resizing itself usually triggers instantly for me.

The only thing that comes to mind is disabling the 'Activate Window Under Cursor Before Snapping' named trigger. That one runs an if condition that might be interrupting the resize action when the swipe gesture is too quick.

Let me know if it works!

1 Like

Can confirm disabling this made it significantly smoother on my end. Still had some cases (namely when maximizing windows) where the popup would take the full window size and persist. Continuous swipe logic is working as well.

Thanks so much - yes, I can confirm this did help as well. And @habili I also do still have times when the blurred popup persists as well. Usually this happens if I am too quick with the swipe. A slower deliberate swipe with a slight hold at the end always works correctly.