Enhanced Zoom Desktop

Package

Plugins Main

Category

Desktop

Originally developed as a part of a Summer of Code project for Ubuntu

The Enhanced Zoom Desktop plugin allows the whole screen to be zoomed in for improved legibility. It is possible to continue working with other applications while zoomed in.

This plugin requires the Mouse position polling plugin to be enabled.

Using Enhanced Zoom Desktop

Enhanced Zoom Desktop (also known as ezoom) is a zoom plugin based on the original Zoom Desktop plugin, but with a wider scope. The target group of this plugin are visually impaired users, but most of the features developed for ezoom are highly usable for people with normal vision.

Enhanced Zoom Desktop works like a magnifying glass that allows users to zoom in on a specific portion of their desktop and move that zoomed area around to see other portions of their desktop that were "pushed" outside the zoomed area.

Unlike the Zoom Desktop plugin, Enhanced Desktop Zoom allows you to interact normally with your windows while the screen is zoomed in.

Zooming in and out

This is the basis of this plugin and is configured in the Zoom In/Out section of the plugin's settings in CompizConfig Settings Manager.

Action

Description

Default Mouse Binding

Default Keyboard Shortcut

Zoom In

Increase the zoom

<Super>Button4

Disabled

Zoom Out

Decrease the zoom

<Super>Button5

Disabled

Zoom Box

Click and drag to select the region to zoom in to.

<Super>Button2

N/A

Option

Description

Default Setting

Zoom factor

The factor by which to Zoom In and Zoom Out

1.15


Mouse Behaviour

The following settings are configured in the Mouse Behaviour section.

Action

Description

Default Binding

Center the Mouse

Centers the mouse on the screen

<Super>c

Mouse centering can be used when Enhanced Zoom is enabled, even if the desktop is not actively zoomed. Other Mouse Behavior options include:

Option

Description

Default Setting

Sync Mouse

If enabled, the zoom area is always synced to the mouse cursor's position, and vice versa. In other words, the zoom area moves to follow the mouse.

On

Scale the mouse pointer

Shows a proportionally scaled mouse cursor when zooming in/out. If the zoom area is locked, then this cursor will show the correct position of the mouse (thus allowing correct mouse input when zoomed in).

Off

Hide original mouse pointer

Hides the mouse cursor when zoomed. Recommended if Scale the mouse pointer is enabled; otherwise, both the original and scaled cursors will be visible.

Off

Restrain the mouse to the zoom area

Prevents the mouse cursor from moving outside of the zoom area. This has no effect if Sync Mouse is enabled.

Off

Mouse panning

Pans the zoom area when the (scaled) cursor touches the edge of it. See the Panning section (below) for more configuration of this behaviour.

Off

Mouse Restrain Margin

The size of the margin inside the zoomed area when restraining the mouse. Only applicable if Restrain the mouse to the zoom area is enabled.

5


Manipulating the zoom area

Zoom Area Movement

Panning

Because zooming in on an area may move something off the screen that is outside the zoomed area, Enhanced Zoom Desktop allows the user to move the zoomed area to see other parts of the screen. With the exception of the Mouse Panning option discussed above, these settings are found in the Panning subsection, under the Zoom Area Movement section.

Action

Description

Default Binding

Toggle zoom area lock

When locked, the zoom area (field of view) will not move to follow the mouse cursor.

<Super>l

Pan Zoom Left/Right/Up/Down

Moves the zoom area (field of view) in the corresponding direction. This can be used when the zoom area is locked.

Disabled

Pan Factor

determines how much to move the zoomed area when using the keybindings

0.10

Mouse panning

Pans the zoom area when the (scaled) cursor touches the edge of it.

off

Fitting

Some windows or objects may be larger than the zoomed area, or a user may want to use an optimized zoom level to fit a specific window or object; because of this the plugin allows the user to let Enhanced Zoom Desktop calculate the zoom level or window size for them.

Action

Description

Location

Default Binding

Fit the window to the zoom level

Resizes the focused window so that it fills the field of view.

General tab

<Super>v

Fit zoomed area to window

Adjusts the zoom level so that the window fills the field of view.

Zoom Movement tab

<Super>r


Focus Tracking

Focus Tracking is a feature of Enhanced Desktop Zoom that is an automated combination of Panning and Fitting. This feature follows the users window selection while zoomed and allows the plugin to automate the pan and fit accordingly. These settings are adjusted in the Focus Tracking section of the plugin.

Option

Description

Default Setting

Enable focus tracking

When the focus changes, move the zoom area to the focused window.

On

Fit zoom level to window on focus change

When the focus changes, adjust the zoom level so that the focused window fills the field of view.

off

Always fit to window on focus track

Even if not actively zoomed in, if the zoomed area moves to the focused window, then the zoom level will also adjust to fit the window in the field of view.

off

Follow Focus Delay

Only attempt to center newly focused windows if the mouse hasn't moved in this amount of seconds. Use this to avoid jumping when using sloppy focus.

1


Specific Zoom

Three different preset zoom levels can be configured in the Specific Zoom section and can be activated via their respective keyboard shortcuts to allow for fast switching between precise, predefined zoom levels. These are each set to a value (Factor) between 0.1 and 1.0. Dividing 1 by this number gives the zoom percentage as the result, eg. a zoom factor of 0.5 means a 200% zoom.

Option

Default Factor

Default Binding

Zoom Specific Level 1

1.000

<Super>1

Zoom Specific Level 2

0.500

<Super>2

Zoom Specific Level 3

0.200

<Super>3

The user also has the option to allow Enhanced Zoom Desktop to automatically pan the zoomed area to the currently focused window when the user activates a Specific Zoom Level keystroke:

Option

Default Value

Target Focused Window on Specific level

On


Animation and appearance

The following settings can be configured in the

Animation tab of the plugin to suit the users visual preferences.

Option

Description

Default Value

Speed

The speed of the transition when changing the zoom level and panning the zoom area.

25.0000

Timestep

How "bouncy" the movements are when changing the zoom level.

1.2000

Filter Linear

Whether or not to use a linear filter, which smooths pixels, when zooming in.

On


Information for developers

Feature List

  • Infinite full screen zoom through scaling (not z-translation).
  • Mouse and keyboard is enabled while zooming
  • Different approaches on how to handle the mouse
    • Beryl inputzoom style "mouse sync" to avoid xfixes bugs.
    • Scaled mouse pointer with more natural mouse panning
  • Focus tracking; The zoom area can move to newly focused windows and fit the zoom level to those windows.
  • Preset zoom levels
  • Advanced dbus access
  • Key binding to fit the zoom area to a window
  • Floating zoom levels
  • Key bindings to adjust the zoom area

DBus interface

Ezoom was developed with external applications in mind, and provides a few powerful interfaces for use by other applications to control ezoom over DBus.

As these interfaces are still not widely used, they are subject for change if it is prudent to do so. If you wish to use any of these interfaces in your application, or need an adjustment, contact the Compiz Fusion developers on the developer mail list.

ensure_visibility

Ensure visibility of an area defined by x1->x2 and y1->y2

Arguments:

int

x1

left X coordinate

int

x2

right X Coordinate

int

y1

top Y coordinate

int

y2

bottom Y coordinate

bool

scale

zoom out if necesarry to ensure visibility

bool

restrain

Restrain the mouse cursor

int

margin

The margin to use (default: 0)

If x2/y2 is omitted, it is ignored.

set_zoom_area

Set the zoom area

int

x1

left x coordinate

int

y1

top y coordinate

int

x2

right x

int

y2

bottom y

boolean

scale

True if we should modify the zoom level, false to just adjust the movement/translation.

boolean

restrain

True to warp the pointer so it's visible.

x2 and y2 can be omitted to assume x2==x1+1 y2==y1+1