Proof-of-concept
A first proof-of-concept shows that this should be possible with reasonably small changes to mutter and gnome-shell respectively.
About halfway through, the video clip shows a clash between this implementation and the workspace scrolling feature in the gnome-shell overview.
Design of the PoC
The code changes was based on the 'main' branches of mutter/gnome-shell sometime after the 42.rc tag.
Suggested roadmap
Focus on the non-gui parts and leave all user-facing GUI stuff to last.
-
Mutter
-
Sort out what gsetting schema/key(s) that shall be added to toggle the scroll-event+modifier key mask event filtering in mutter.
-
Sort out how to handle some (possible) kinks of the combination of this feature and the current Super+scroll workspace switching.
-
Implement the mutter updates and get the resulting MR accepted.
-
-
gnome-shell
-
Decide if the chosen solution of changing the magFactor via the gsettings schema is acceptable or if an alternative is needed (for performance or other reasons)
-
Decide what gsettings schemas/keys shall be added/changed to control this feature.
-
Implement the gnome-shell updates and get the resulting MR accepted.
-
-
User facing GUI stuff
-
Decide how to add this feature to preference dialogues and similar
-
Design the GUI
-
Implement and merge (I do not currently know which project(s) this would affect).
-
Questions
How can I work towards getting this into the next gnome release (44?)?
-
Can I get a sponsor/mentor to pester with questions ranging from the development environment to what communication channels are appropriate for certain questions?
Loads of questions around implementation design, eg:
-
What is the proper way to move the hard-coded values into gsetting keys/schemas?
-
Where should these properties be added in the schema hierarchy?
-
How should the dynamic desktop zoom relate to the other functionality of the magnifier?
-
Is the chosen implementation (to change the mag-factor gsetting using scroll events) ok from a performance perspective or does one want to avoid the round-trip via gsettings and change the mag-factor directly? (if ok, the chosen way has some benefits I think)
-
The current proof-of-concept
-
clashes with the workspace scrolling in the 'Overview' action mode. I would like the dynamic zooming to take preference in all action modes, are there any hindrances/downsides to this?
-
does not work when the lock-screen is active, is fixing this a problem?
-
does not work in the gdm welcome screen. Is fixing this a problem? To me, this is low prio.
-