Last active
October 2, 2018 01:43
-
-
Save grrowl/bbeb885c92e52cbb96ee7e251b0e7cff to your computer and use it in GitHub Desktop.
collect-windows.applescript — from https://snipplr.com/view/8645/gather-windows/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tell application "Finder" | |
-- get desktop dimensions (dw = desktop width; dh = desktop height) | |
set db to bounds of window of desktop | |
set {dw, dh} to {item 3 of db, item 4 of db} | |
end tell | |
tell application "System Events" | |
repeat with proc in application processes | |
tell proc | |
repeat with win in windows | |
-- get window dimensions (w = width; h = height) | |
set {w, h} to size of win | |
-- get window postion (l = left of window; t = top of window) | |
set {l, t} to position of win | |
-- nh = new window height; nw = new window width | |
set {nh, nw} to {h, w} | |
-- window width is bigger than desktop size, | |
-- so set new window width to match the desktop | |
if (w > dw) then ¬ | |
set nw to dw | |
-- window height is bigger than the desktop size (minus menu bar), | |
-- so set new window height to be desktop height - 22 pixels | |
if (h > dh - 22) then ¬ | |
set nh to dh - 22 | |
-- r = right coordinate of window; b = bottom coordinate of window | |
set {r, b} to {l + nw, t + nh} | |
-- nl = new left coordinate; nt = new top coordinate | |
set {nl, nt} to {l, t} | |
-- left coordinate is off screen, so set new left coordinate | |
-- to be 0 (at the left edge of the desktop) | |
if (l < 0) then ¬ | |
set nl to 0 | |
-- top coordinate is above bottom of menu bar (22 pixels tall), | |
-- so set new top coordinate to be 22 | |
if (t < 22) then ¬ | |
set nt to 22 | |
-- right coordinate extends beyond desktop width, | |
-- so set new left coordinate to be desktop width - window width | |
if (r > dw) then ¬ | |
set nl to dw - nw | |
-- bottom coordinate extends beyond desktop height, | |
-- so set new top coordinate to be desktop height - window height | |
if (b > dh) then ¬ | |
set nt to dh - nh | |
-- if we have calculated a new top or left coordinate, reposition window | |
if (l is not nl or t is not nt) then ¬ | |
set position of win to {nl, nt} | |
-- if we have calculated a new height or width, resize window | |
if (h is not nh or w is not nw) then ¬ | |
set size of win to {nw, nh} | |
end repeat | |
end tell | |
end repeat | |
end tell |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment