Back to Silas S. Brown's home page | X11 configuration

Mac magnification setup

OS X and macOS have built-in magnification:

Setting minimum and maximum zoom

If you set Minimum Zoom to 1 (the extreme left of the slider), and Maximum Zoom to your preferred level (e.g. 2), that will allow you to switch between 1 and 2 with a single keypress. You can still zoom further by holding down the keys, but it's useful to be able to quickly get to a preferred integer level.

Avoiding anti-aliasing

Especially on older Macs without high-resolution "Retina" displays, you might want to minimise anti-aliasing when using zoom. It appears that the zoomed image is processed as follows:
  1. Text is anti-aliased onto a non-zoomed screen buffer
  2. The pixels are then mapped onto the larger zoomed buffer (which degrades quality if the zoom factor is not an integer)
  3. An additional "smoothing" step is optionally applied to the new image (I don't know if this step has knowledge of the original pixels, but it doesn't seem to have any knowledge of the original fonts).
The above steps acting in combination can blur the result. So my suggested settings are: Where possible, turn off antialiasing altogether:

Avoiding "getting lost" in panning

In the zoom options' screen movement section, I usually find the option called "So the pointer is at or near the center of the image" works better than the other two, unless you are working with tooltips, in which case set the mouse "tracking speed" (acceleration) fast so you can use the "when the pointer reaches an edge" setting for more control.

Ideally it would be possible to reduce the desktop's overall height and width to about 1.6 to 1.8 times that of the magnified area, to reduce the chances of "getting lost". This is possible on non-Mac systems with old-style X11 setups but does not seem to be available on the Mac without reducing the magnification factor to a non-integer.

If you do have to reduce the magnification factor to less than 2 and the resulting text is too small, then you might be able to make up the size by also using a lower-resolution display mode. In 10.x modes can be set under System Preferences / Display; in 11.x use System Preferences / Displays / Scaled / Larger text. (Some third-party applications are not tested with this setting and might display windows larger than the screen.)

External monitors for laptops

When macOS 11 is running on a laptop that's connected to an external display, it defaults to a dual-screen setup that interacts rather badly with zoom: the magnified image is divided over both screens, cannot be panned left or right unless you drag the mouse to the edge of the corresponding screen, and tends to split windows down the middle in a way that doesn't work very well when the screens are different physical sizes.

The Accessibility settings do however give you the option of showing the zoomed image on the external display while showing the un-zoomed image on the laptop.

If you then close the lid of the laptop, macOS reverts to zooming the single external display (you might have to re-press the key to zoom in). But when you re-open the lid (for example to use the camera), macOS (as of 11.4) does not restore the "Choose Display" mirroring setting---and if you were zoomed in at the time, the Mac's graphics subsystem might end up in an inconsistent state (e.g. desktop vertically repeated) and you'll have to zoom out before it lets you change the settings back.

Unfortunately I have not found a way to restore preferred zoom settings from a command-line script: it requires painful small-print mouse work every time.

Speak selected text

On OS X 10.5+ you can enable a keyboard shortcut to speak selected text (defaults to Alt-Escape; press a second time to stop). This needs to be switched on in the text-to-speech preferences (in 11.x it's Accessibility / Spoken Content / Speak selection).

In 10.8, you need to take two additional steps to work around a bug: (1) change the keyboard shortcut (if you like the default, change it back again), (2) press "Play" to hear the voice's demo. The shortcut key will then work. (These additional steps were not needed in 10.5 through 10.7.)

The shortcut works in most native Mac applications, including Terminal, but not iTerm 1 or (some versions of?) Chrome.

Here is a script to change the voice from the command line (useful if you work in several languages).

"Linuxify" the Mac command line

Here is a script to make the Mac more GNU/Linux-like by: The script can be added to, or sourced from, your ~/.zshrc on 10.15+, or your ~/.bashrc and ~/.bash_profile on earlier versions (it's written in a common subset of bash and zsh).

You may also want my Emacs configuration.

Using Old Safari "Reader" with zoom

[Historical interest only: please do not use old versions of Safari on untrusted websites.]

The "Reader" feature of Safari 5.0, 5.1 and 6.0 doesn't work well with zoom because it uses a fixed-width layout which can easily be too wide for the zoomed viewport; this was fixed in 6.1 but if you're stuck with an old version you can try this reader narrowing script (requires administrator access to the machine) which also allows you to change the colours.

Safari 6.1's Reader fixed the width issue but doesn't allow colour changing (unless you invert the whole display in Universal Access); it doesn't respond to my stylesheets for low vision or to the above script.

Mac screen sharing with magnification

OS X has included VNC "screen sharing" since 10.4, but 10.7 introduced a feature that can make it hard for non-Mac VNC clients if your desktop size is not 1280x1024. One solution is to use an alternative VNC server, such as Vine (OSXVnc) which can be set to serve just one user session (can run on login with automatic login). Notes: Fundamentally it's still best to use a Mac desktop by connecting the display directly to the machine.
All material © Silas S. Brown unless otherwise stated.