Automatically zoom new pages in Safari

Jan 20, '10 07:30:02AM

Contributed by: grav

Safari has a nice feature to zoom in (or out) on a webpage, which is great for large monitors. Unfortunately, you're not able to set a default zoom level for new pages. CSS hacks exist, but zooming via CSS doesn't seem to work as well as the native zoom function in Safari. The AppleScript in this hint zooms in on any new web page using Safari's own zoom function.

The script is quite a hack -- it checks every tenth of a second to see if the currently active tab isn't zoomed in. If it's not zoomed in, the script activates the corresponding keyboard shortcuts to zoom the page. You can edit the script to change how often the zoom-check should be made, and what level of zoom should be made.

repeat
  try -- we have to try, since safari might not be running, and theUrl might not be defined
    if frontmost of application "Safari" then
      tell application "Safari"
        set theUrl to URL of current tab of window 1 -- window 1 is apparently always the active window in Safari
      end tell
      if theUrl is not "" then -- this will ignore new tabs where a page is not yet loaded
        tell application "System Events"
          tell process "Safari"
            -- these may differ according to the OS X language
            set activeMenuItem to enabled of menu item "Actual Size" of menu "View" of menu bar item "View" of menu bar 1
          end tell
          if not activeMenuItem then
            -- here we fire off the key shortcuts 
            -- these may differ according to the OS X language
            keystroke "+" using command down
            keystroke "+" using command down
          end if
        end tell
      end if
    end if
  end try
  delay 0.1 -- how many seconds to wait until next check
end repeat
With a delay of 100ms, the scripts gobbles 1% of the CPU time on my system. One idea is to make an application from the script, and launch that instead of launching the script directly from the AppleScript Editor. Any suggestions for improvement are welcome!

[robg adds: I tested this in 10.6.2 on a MacBook Pro, and the script used about 5% of the CPU. It did, however, work as described.]

Comments (7)


Mac OS X Hints
http://hints.macworld.com/article.php?story=20100117104428919