Simple Window Manager - SWM

Hi, currently i'm using moom because of one feature - it can save layout of windows on desktop, so i can easily organise different apps windows on every desktop.

Does this manager have this such a function or maybe planned ?

Also, is it possible to map/remap hotkeys to move active app windows around desktop ? and maybe on other desktop (left/right/exact number)

Thanks

yes i will add an option for layouts but its for general use and not fixed to selected app, here is a wip from layout builder


remapping SWM shotcuts is possible but its not user friendly, which one you want to remap

BTT has "Move to Desktop N" actions and you can use any shortcuts for them
i use this ones
fn + 1 > Move to Desktop 1
fn + 2 > Move to Desktop 2
fn + 3 > Move to Desktop 3
fn + 4 > Move to Desktop 4
fn + Tab > Move to Right Space ( easier than ctrl right )
fn + Shift + Tab > Move to Left Space

thanks for reply, probably will stay on Moom, more convenient it seems

Thanks for the app, seems very nice

Though how would I fix the grid scaling issue in the screenshot? It looks tiny inside a tiny window

Also, would is it possible for the user to change the significantly increase the size of the whole section? I don't plan to use it on hovering those tiny window buttons, but only via a shortcut, so the small size isn't helpful when using the grid

SWM

sorry im too busy lately, i couldnt look much to swm. i hope i will release a new version soon with these fixes

here is your solution for now.

1 Like

thanks, that works! by the way, do you happen to maybe have a more readable source file? Maybe I could tweak the size myself as well, just those abbreviations make it hard to follow

sorry i prefer to keep source as minified to boost performance.

there is no global setting to change size of ui yet and possibly it should be complicated because there are many things to edit on code also on btt side. but i will add this to to-do list. i will add if i can find a simpler way

whats your screen resolution, is buttons too small

did you tried fullscreen overlay feature. i guess this version not includes custom grid for fullscreen. but i already implemented it for next release

thanks!

they're not "so small", it just doesn't make sense to use those buttons at all since you can have much more productive triggers

exactly, there is no grid. Looking forward to the new version.
Though will your grid be fullscreen (as that would be too big)?

Just wanted to drop in to say that this is a marvel. Very impressive for something built on BTT, which I find a bit confusing to develop with. I bought SWM through Gumroad just to give credit for such meticulous detailed work. Window management (especially with multiple monitors) is still an unsolved problem on macOS but this does a lot more than many other paid solutions and it has a nice design too. Congratulations on the achievement.

@esv
SWM doesnt offer drag to corner or edges for tiling. cause its already bundled with BTT. i guess you using tiling thats why predefined actions not useful for your workflow. currently SWM has option to start with which ui (Predefined Layouts / Custom Grid)

and here is fullscreen custom grid


@macd thanks for your support. yep development is a bit tricky but using webview is totally worth. im using mac and windows daily, window tiling mostly fixes that problem on windows and real problem on macos, apple dont care about minimized windows. they added stage manager instead of improving dock

2 Likes

Excited for the update, looks incredible.

1 Like

Updated gumroad page with 1.0 release and i will update first post over time

Some features might require BTT alpha releases, update to alpha if you have any problems first

:clipboard: Changelog

:round_pushpin: Predefined Actions View (Popup Window)

  • New setting "RememberPage"- SWM remembers last used predefined page and shows it on next launch
  • New icon for Predefined Actions View
  • Swipes changes pages / grids instead of scrolling
  • You can scroll / swipe anywhere on popup window to change predefined actions pages or custom grids
  • Scrolling up on first page goes last page and scrolling down on last page goes first page on Predefined Actions View
  • Reorganized 2x3, 3x3 and 4x2 predefined actions and added new ones for 2x3 and 4x2
  • Predefined action icons for window resize now generated by javascript with given coordinates and most of icons not using pixel images. So you can create your own buttons without dealing icon design. Here is a template
<!--
<pg> creates page for Predefined actions view
<pg> element's t attribute: Tooltip text for navigation dot
<c> creates row
<a> creates icon
<a> element's c attribute: X start, Y start, Width, Height in percentage
<a> element's t attribute: Tooltip text
-->
<pg t="3x2 and 2x3 Layouts">
<c>
<a c='0,0,33,50' t='3x2 Top Left Corner'></a>
<a c='33,0,33,50' t='3x2 Top Middle'></a>
<a c='66,0,34,50' t='3x2 Top Right Corner'></a>
<a c='0,0,66,50' t='3x2 Top Left Corner Two'></a>
<a c='33,0,67,50' t='3x2 Top Right Corner Two'></a>
</c>
<c>
<a c='0,50,33,50' t='3x2 Bottom Left Corner'></a>
<a c='33,50,33,50' t='3x2 Bottom Middle'></a>
<a c='66,50,34,50' t='3x2 Bottom Right Corner'></a>
<a c='0,50,66,50' t='3x2 Bottom Left Corner Two'></a>
<a c='33,50,67,50' t='3x2 Bottom Right Corner Two'></a>
</c>
<c>
<a c='0,0,50,33' t='2x3 Top Left'></a>
<a c='0,33,50,33' t='2x3 Left Middle'></a>
<a c='0,66,50,34' t='2x3 Bottom Left'></a>
<a c='0,0,50,66' t='2x3 Top Left Two'></a>
<a c='50,0,50,66' t='2x3 Top Right Two'></a>
</c>
<c>
<a c='50,0,50,33' t='2x3 Top Right'></a>
<a c='50,33,50,33' t='2x3 Right Middle'></a>
<a c='50,66,50,34' t='2x3 Bottom Right'></a>
<a c='0,33,50,67' t='2x3 Bottom Left Two'></a>
<a c='50,33,50,67' t='2x3 Bottom Right Two'></a>
</c>
</pg>

You can add template marked line in SWM.html (search "" in document to quick navigation".

Predefined action view supports up to 7 pages. If you add more it will not show.

Navigation dots generate automatically after adding new pages to html file.

:round_pushpin: Fullscreen Overlay

  • Added Custom Grid. You can edit grid with context menu
  • Fixed SWM closes while switching Continuous Mode with context menu
  • Many minor improvements

:round_pushpin: Double Click to Titlebar

  • Changed activation area, only triggered if mouse cursor close to 20 px to top edge and not on window buttons
  • Fixed - Right clicks triggers action (it still but mostly works without problem)
  • Fixed - Maximize / Restore action not triggering if window has no previous size to restore

:round_pushpin: Gestures for Windows

  • Added setting "GesturesOverWindow" for disabling / enabling feature
  • Fixed - Minimize window Fn+Scroll down gesture shows HUD
  • Fixed - Closing windows from mission control / app expose not working
  • Changed - Closing window on Mission control / App Expose with trackpad gesture to Fn + 3 Finger Tap instead of 4 finger tip tap left. Works faster and stable
  • Improvement - Faster process detection for Close / Minimize window under cursor

:sparkles:New Features

  • New easier way to switch between modes and grids / layouts with trackpad / mouse / keyboard
    • Change page on Predefined Actions View or change grid Custom Grid with
      • Swipe Up / Down
      • Scroll Up / Down
      • Space
    • Switch between modes (Predefined view / Custom Grid) with
      • 2 Finger Tap
      • Right Click
      • Shift + Space
  • K keyboard shortcut for Keep on Top (or Always on Top) feature. Select window and press K again to deactivate

:barber: Changes

  • Custom grid uses width x height now instead of height x width order. Sorry you have to set your custom grids again
  • Removed 3 finger tap gestures for Popup Window & Fullscreen overlay to reduce conflicting with other presets. Use right click /2finger tap or Shift + Space to switch between Custom Grid and Predefined Actions View / Grids

:telescope: Improvement

  • Optimisations for better performance
  • SWM uses same cache and not rebuilds cache while switching between keyboard and yellow button triggers
  • Added some console logs for Developer mode for easier troubleshoot
  • Added a basic notification system to show critical errors. SWM sends error message as a system notification
  • Added support for system settings > highlight color > other (works only if you set SWM settings > AccentColor to 0 (auto)

:hammer_and_wrench: Fixes

  • Right click on minimize button not working on non-active windows
  • Trackpad swipes moves SWM popup window
  • Scrolling on Custom Grid shows Predefined actions view on Popup Window
  • SWM asks application location for some apps like "Voice Memos"
  • Popup window flickers on launch
  • Blurry icons on Popup Window
  • Custom Grid and align functions area not rendering correctly on Popup Window

:paperclip: New Tasks for Future Plans

:pushpin: [β­‘β­‘β­’] Global keyboard shortcuts as an optional preset

:pushpin: [β­‘β­‘β­’] Setting for don't add Edge Gap to screen edges

:pushpin: [β­‘β­‘β­’] UI scaling setting for popup window

:pushpin: [β­‘β­’β­’] Incremental resize, move and align buttons for Fullscreen Overlay context menu

:white_check_mark: Completed Tasks on Future Plans

:pushpin: [β­‘β­‘β­’] Custom grid for Fullscreen Overlay

1 Like

First of all I would like to tell you that I think that SVM is AMAZING, although only I can say this reading the features because I can't check it because when I try to import the preset, BTT crashes.

I've upgrade BTT to the last alpha version (4.273) but still closes just after press Start preset import button.

My macOS version is Sonoma 14.0 and the preset version is 1.0

EDIT: I've just checked v0.9 and it works. It appears a v1.0 bug.

@Korvenwin interesting i did all same with previous versions
can you try this
1 - delete swm preset
2 - BTT settings > Scripting BTT > Reset all variables
3 - Retry importing 1.0 version
maybe its related with old settings

@Andreas_Hegenberg btt crashes when importing new swm version. might be a bug. i exported from ventura + latest alpha 4.273

Ah strange, the importer seems to fail parsing this condition that's used somewhere:

(NOT (hovered_element_details BEGINSWITH "<AXApplication: \"Dock\">
 <AXList>")) AND visible_window_list CONTAINS "Dock - (null) -"

I'm currently trying to find what's wrong with that.


NOT (hovered_element_details CONTAINS "<AXMenuBar>" OR hovered_element_details BEGINSWITH "<AXApplication: \"Dock\">")

is any thing wrong with advanced condition

1 Like

no, it looks good but still crashes the Apple Predicate parser. I'm not yet sure why. Are you also on Sonoma?

nope, using ventura

@yw4z

I've tried what you say with the same results.

Unfortunately this looks like a macOS bug with parsing "negating" conditions if they are represented as text. I will switch to the old way of storing the conditions in the preset export, which is unfortunate but I can't find another solution yet.
Unfortunately this workaround will take until Monday!

1 Like