You are browsing as a guest. Sign up (or log in) to start making projects!

unisnap

  • 3 Devlogs
  • 15 Total hours

a one-stop MacOS window management utility for your desktop~

Open comments for this post

3h 49m 8s logged

i swear this is the last devlog even tho i shipped already…

v0.2 release

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.

0
0
4
Open comments for this post

16m 32s logged

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:

  • no multi-monitor support
  • unsigned app (so macOS will quarantine it); there’s a one-line terminal fix in the README.

It is available as proper .dmg release (or you can download v0.1 zip version).

0
0
7
Ship #1 Changes requested

this is unisnap - a lightweight macOS toolbar utility for window management.
I made it because it was bothersome to keep rearranging my windows to maximise my productivity, and traditional methods like raycast commands are too slow. So, I've merged all the features I want into one, and condensed it into a tiny footprint that fits in the top toolbar.
This was basically my first time building a macOS anything in Xcode, so that was certainly challenging. A lot of the times the coordinates weren't matching; the alignment was offset; and it didn't quite work how I wanted it.
But after many attempts, I've finished it, and I'm quite proud of that. In the end, the result was rather polished and I liked it a lot, so I guess that's great!

Try project → See source code →
Open comments for this post

10h 53m 10s logged

unisnap - a lightweight macOS toolbar utility for window management.

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!

  1. No need to manually config desktop layout!
  2. No more manual reconfig required when you suddenly want another app in a different place!
  3. Basically fully customisable everything!
  4. No AI slop integration / cloud / account / selling your data, 100% open source!

There are:
3731 possible custom layouts for you to try!

hope this helped anyone? or just me lol

0
0
2

Followers

Loading…