After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 324620 - add simple magnification
add simple magnification
Status: RESOLVED OBSOLETE
Product: metacity
Classification: Other
Component: Iain's compositor
trunk
Other All
: Normal enhancement
: ---
Assigned To: Metacity compositor maintainers
Metacity compositor maintainers
Depends on:
Blocks:
 
 
Reported: 2005-12-20 15:44 UTC by George Kraft IV
Modified: 2020-11-07 12:35 UTC
See Also:
GNOME target: ---
GNOME version: Unversioned Enhancement



Description George Kraft IV 2005-12-20 15:44:33 UTC
Please add simple magnification with Metacity's new composite management.  The
magnifier should receive commands from the screen reader.
http://mail.gnome.org/archives/metacity-devel-list/2005-December/msg00002.html
http://cvs.freedesktop.org/xapps/diopter/
http://cvs.gnome.org/viewcvs/gnome-mag/idl/
Comment 1 bill.haneman 2005-12-20 16:27:07 UTC
For consistency and backwards compat, it would be best to expose this functionality as a gnome-mag server (see gnome-mag IDL). IOW, metacity would call BAS and advertise itself as a provider of GNOME::Magnifier:1.0 or whatever.

Do we need to support "multiple zoomers"?  I suggest that the API should allow it, but that we can live without it in the short term (i.e. requesting more than one 'zoom region' should fail detectably).  From the POV of internal API, we need some kind of pluggability that allows renderop to plug into the WM/CM (probably on a per-toplevel-window basis (or per-window-node basis?))  Since the output of the pixop may be bigger than the input, some API will need to be provided which tells the WM what policy to use when placing the resulting output on the physically composited "screen".  

So for instance, a bilinear-resampling-scaling pixop that does 2x magnification could be plugged in at the root window of a display, so that the entire window stack gets resized/resampled in the last compositing step; at that point the WM will be handed a pixmap too large to fit the current screen, so some kind of viewport-moving API would be required.  Either the plugin could use internal API to tell the WM/CM what subregion to render to the physical screen, or the WM/CM could implement GNOME:Magnifier:ZoomRegion::setROI() directly, so that clients could tell the WM where to "pan" to.

A similar scenario illustrating how the plugins might be "per toplevel window" - you might want to use the rescaling plugin only on the currently active toplevel, leaving the other windows at normal size.  Or you could decrease the contrast on the non-active toplevels, for cognitive impairments (making the surrounding screen contents less distracting), etc.  You can probably think of eye-candy sorts of things that could be achieved in the same way, by putting some pluggable filters in the chain for a particular toplevel window, or for the "active window".  etc.
Comment 2 Rob Adams 2005-12-20 16:41:10 UTC
This may be worth adding to EWMH.  Clients could set properties asking the window manager to turn their window into a zoom region.  We could then have the actual implementation of the gnome-mag server be in a client, with only the actual window scaling needing to be handled by the compositing manager.  All the UI and such would be in a client.
Comment 3 bill.haneman 2005-12-20 16:46:31 UTC
Rob, that's how it works now (more or less); the logic for "what to display" is in the client, and the magnification service is just a pixel repainter (with client control over the viewports and source/target regions, of course).
Comment 4 bill.haneman 2005-12-20 16:47:06 UTC
BTW by "how it works" I mean "how gnome-mag works/how the gnome-mag API was intended to be used".
Comment 5 bill.haneman 2005-12-20 16:49:13 UTC
re-reading; it's not the "client" in the sense of the window manager client that's calling the shots here, it's a third-party, the "assistive technology client" which is sending messages/service requests to a magnification service.  I guess the magnifier could potentially be setting WM hints on other applications' windows, but that seems rather invasive to me, isn't only the client app or WM supposed to go poking around in window props?
Comment 6 Rob Adams 2005-12-20 16:56:30 UTC
The window that holds the magnified region could set window properties on itself to instruct the compositing/window manager that "This window should contain the contents of the following desktop region, scaled to fit the window."  The magnifier could use EWMH mechanisms to query for window manager support for doing that, then fall back to using the old slow way if unavailable.

This has the advantage that 1) it uses the existing system to communicate with the WM, 2) it could be standardized in the future so that the magnifier could be used on any desktop with any compliant WM or compositor.
Comment 7 Havoc Pennington 2005-12-22 00:08:24 UTC
If KDE is using dbus I think further unnatural acts with X properties would be a little masochistic, for things that aren't naturally/directly related to EWMH/window-management kind of stuff.

I'd rather avoid adding bonobo as a dep though, for a variety of reasons that don't need rehashing again. We could easily make a bonobo proxy process that implements the IDL, and have it talk to metacity via whatever saner IPC mechanism is practical and easy. That way gnome-mag can remain unmodified.
Comment 8 Elijah Newren 2006-01-07 19:22:13 UTC
Moving to compositor component.  
Comment 9 George Kraft IV 2006-02-01 19:22:17 UTC
See the following two documents as possible designs:
http://www.alphaworks.ibm.com/technologies/mcm/mcm.pdf
http://www.alphaworks.ibm.com/technologies/mcm/gscope.pdf
Comment 10 bill.haneman 2006-02-02 10:51:21 UTC
George:  404 on both those URIs.
Comment 12 korn 2006-02-02 20:51:40 UTC
George, your mcm URL doesn't work for me, but this one does:
 http://www.alphaworks.ibm.com/tech/mcm
Comment 13 Soren Sandmann Pedersen 2006-04-25 16:44:15 UTC
Note that current metacity HEAD does have a simple magnifier. If you start metacity with the environment variable USE_MAGNIFIER=1, it should show up.

I am not closing this bug though, since it is not yet a full solution.
Comment 14 Thomas Thurman 2008-01-20 19:11:31 UTC
This is something we need to ask Iain about now. (Iain, sorry to add a ton of spam to your inbox today.)
Comment 15 André Klapper 2020-11-07 12:35:50 UTC
bugzilla.gnome.org is being replaced by gitlab.gnome.org. We are closing all
old feature requests in Bugzilla which have not seen updates for many years.

If you still use metacity and if you are still requesting this feature in a currently supported version of GNOME (currently that would be 3.38), then please feel free to report it at https://gitlab.gnome.org/GNOME/metacity/-/issues/

Thank you for reporting this issue and we are sorry it could not be implemented.