< Zurück

02.12.2012 22:20:00 • Categories: Applescript • Tags: Applescript

AppleScript: System Events - versteckte Fenster anzeigen/anpassen

(*
A little script to gather any application windows that are partially offscreen in some way and shift them back to the desktop.
This is particularly useful if you use a MacBook with an external display.
*)
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 &gt; 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 &gt; 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 &lt; 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 &lt; 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 &gt; 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 &gt; dh) then set nt to dh - nh

            -- if we have calculated a new top or left coordinate, reposition window
            if (l &gt; nl or t &gt; nt) then set position of win to {nl, nt}

            -- if we have calculated a new height or width, resize window
            if (h &gt; nh or w &gt; nw) then set size of win to {nw, nh}
        end repeat
    end tell
end repeat

end tell

 


< Zurück | ^ nach oben