unisnap
- 3 Devlogs
- 15 Total hours
a one-stop MacOS window management utility for your desktop~
a one-stop MacOS window management utility for your desktop~
i swear this is the last devlog even tho i shipped already…
Bug Fixes:
issues #1 #2 on github
#1: wallpaper capture only works for sometimes (due to beta feature)
wallpaper capture is currently a beta; it uses NSWorkspace.shared.desktopImageURL(for:) to get the URL for the wallpaper, then prompts access to your folder where the wallpaper is actually stored even with sandbox disabled.
This only works for static wallpapers. Apple built-in dynamic / slideshow / video wallpapers will NOT work.the API has also been depreciated since macOS 14.
(This also looks incredibly suspicious when it’s just retrieving an image).
Fix 1: use CGWindowListCreateImage to take a screenshot of the wallpaper/desktop and then theme from that, but that requires screen capture permissions + couldn’t get it working
Fix 2: feature removed in favour of using desktop system accent + light/dark theme.
#2: window layouts switch sometimes.
fix: profile editor puts row 0 at bottom (based on +/- grid system). but absoluteFrame (LayoutProfile.swift:25) applies row 0 to the top of the screen. switched indexing to be correct way.
Theming is now determined by system set accent colour + light/dark theme to avoid requiring any additional permissions.
some redundancies removed.
New dmg installation background.
Finished up unisnap and the proper README docs (formatting issues previously). You should now be able to follow through on that README and install it for yourself with no problem!
A few things worth mentioning that I didn’t get into in my previous devlogs:
unisnap just utilises the AXUIElement API, reads the window position/size/title and writes them to match the set layout. it is also that coordinate math that caused most of the pain for me.
unisnap was designed to be ultra-compact, taking up the least possible footprint while maximising your productivity. That’s why I decided to put it in your toolbar, so that you can access it anytime without occupying a large window to configure all the settings/profiles etc.
The drag-to-create custom profile editor is where the 3727+4 (custom+default) possible layouts number comes from. It is max 1-4 columns × max 1-3 rows, and accounting for every combination + merged cell you get 3731.
Wallpaper theming is a beta. It’s not really that big of a deal either as this project has limited UI.
Known limitations/bugs include:
It is available as proper .dmg release (or you can download v0.1 zip version).
now available on github for v0.1 (macOS only…)
here -> https://github.com/qubixal/unisnap
I wanted to solve a long time problem I had. In Windows 11, there was a set option where dragging the window above the screen could reorganise them into halves/quarters of the screen. This is doable with raycast, but it takes long (manually config each window). So, I made:
unisnap!
There are:
3731 possible custom layouts for you to try!
hope this helped anyone? or just me lol