Color Inverse on display. Toggle Negative Image

Bug #1400580 reported by odm
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Fix Released
Daniel van Vugt
mir (Ubuntu)
Fix Released
unity8 (Ubuntu)

Bug Description

I would like to see a feature that allowed Unity8, to easily inverse the desktop colors. To be able to easily turn on and off a negative (inverse) display of the desktop. For now, it can be done with X (xcalib). It would be nice to see Unity8 do this natively, instead of Ubuntu users needing this feature hoping, X-11 support will always be available.

This is a feature I use, due to impaired eye-sight.

Tags: enhancement

Related branches

Revision history for this message
Michał Sawicz (saviq) wrote :

Indeed, we should build accessibility features in as early as possible. I wonder if this should happen in unity8, or maybe this should be a function of Mir itself?

Changed in unity8 (Ubuntu):
status: New → Confirmed
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It's trivial to do in a fragment shader:
   gl_FragColor = vec4(1.0 - red, 1.0 - green, 1.0 - blue, 1.0);

The only issue is that Unity doesn't share shader logic with Mir. We'd have to implement it in Unity8/Qt at least.

I'll leave the Mir task open because we might get a separate proof of concept done in Mir still.

tags: added: enhancement
Changed in mir:
importance: Undecided → Wishlist
status: New → Triaged
Michał Sawicz (saviq)
Changed in unity8 (Ubuntu):
status: Confirmed → Triaged
importance: Undecided → Wishlist
Changed in mir:
assignee: nobody → Daniel van Vugt (vanvugt)
milestone: none → 0.11.0
status: Triaged → In Progress
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.11.0

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.2 KiB)

This bug was fixed in the package mir - 0.11.0+15.04.20150209.1-0ubuntu1

mir (0.11.0+15.04.20150209.1-0ubuntu1) vivid; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.11.0 (
    - Enhancements:
      . Lots more major plumbing in the Android code, on the path to
        supporting external displays.
      . Add support for clang 3.6.
      . Major redesign of server classes in mir::shell,scene and friends
        (still in progress).
      . Added client API for creating dialogs and tooltips.
      . Added new surface states: mir_surface_state_hidden and
      . Performance: Use optimally efficient fragment shading when possible.
      . Performance: (Desktop) Composite using double buffering instead of
        triple to reduce visible lag.
      . mir_proving_server: Can now resize windows from any edge or corner
        using the existing Alt+middlebuttondrag.
      . mir_proving_server: Added some demo custom shaders (negative and
        high contrast modes: Super+N/C).
      . mir_proving_server: Can now close clients politely via Alt+F4.
      . Added MirPointerInputEvent (part of the new input API, the old
        MirMotionEvent is still supported also for now).
    - ABI summary: Servers need rebuilding, but clients do not;
      . Mirclient ABI unchanged at 8
      . Mircommon ABI unchanged at 3
      . Mirplatform ABI bumped to 6
      . Mirserver ABI bumped to 29
    - Bug fixes:
      . [regression] mir_demo_server exits immediately with boost
        bad_any_cast exception (LP: #1414630)
      . need way to position menus and tooltips (relative positioning to
        parent) (LP: #1324101)
      . GLibMainLoopTest failure seen in CI (LP: #1413748)
      . Clang builds fail in CI (LP: #1416317)
      . segfault in mir::compositor::GLProgramFamily::Shader::init()
        (LP: #1416482)
      . GLRenderer: The default fragment shader is sub-optimal for alpha=1.0
        (LP: #1350674)
      . mesa::DisplayBuffer::post_update is triple buffered - more laggy than
        it needs to be (LP: #1350725)
      . Cannot connect to nested server when started from a differen vt
        (LP: #1379266)
      . [testfail] AsioMainLoopAlarmTest fails in CI (LP: #1392256)
      . Compositor report inconsistently reports frame time during bypass,
        and render time otherwise (LP: #1408906)
      . [regression] mir_demo_client_fingerpaint doesn't paint anything any
        more (with the mouse) (LP: #1413139)
      . Hardware cursor is always slightly ahead of the composited image
        (LP: #1274408)
      . integration tests are outputting (too many) DisplayServer log
        messages (LP: #1408231)
      . [regression] doesn't work any more (unless you
        have umockdev installed already) (LP: #1413479)
      . Color Inverse on display. Toggle Negative Image (LP: #1400580)
      . mir-ubuntu-vivid-armhf-ci fails consistently (LP: #1407863)
      . Double-buffered surfaces may lag or freeze if event driven and not
        constantly redrawing (LP: #1395581)
      . Pointer motion and crossing events...


Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
Revision history for this message
mikodo (odm-f) wrote :

I have been hesitant to add a comment to this bug. Personally as stated, I have impaired eye-sight although, I remain fully functional for now with a few adjustments. I have a brother that is more encumbered who, is legally blind and, needs many more enhancements to cope with computer use. He is helped with compositing for Zoom Effect & Magnifier and uses <xcalib -i -a> on start up as I. I am cognizant of the importance of fixing this bug for Unity8 users around the globe. Not all people are going to know of the alternatives available to them within Linux. So, I am impeaching for the resolution of this within Unity8 for, many more users than we two brothers. The availability of Unity users especially, casual users needing these features, (red-shift, high-contrast, and possibly including, the zooming and magnifying effects also) within Unity8 as gui is, much needed for these people who, have much less ability to find solutions because of their sight limitations and casual computing use.

I believe work on Unity8 is being done now, to bring it to functionality as the Ubuntu X server replacement. I think now, should also be the time to build in these important gui features.

Thank you.

Revision history for this message
mikodo (odm-f) wrote :

"imploring" not, impeaching.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Status in mir_proving_server:
  Negative: DONE (Super+N)
  High Contrast: DONE (Super+C)
  Red Shift: TODO (but would be trivial)
  Zoom: Done (Super+mousewheel)

None of these features are available in Unity8 yet but all of them except Zoom would be easy to move into Unity System Compositor so that Unity8 could use them. That may well be easier than re-implementing them in Unity8.

Desktop zoom is harder to reuse in Unity8 because it relies on the mouse cursor position, and Unity8 has its own mouse cursor movement so Unity System Compositor would be unable to zoom to the correct location for the Unity8 cursor.

Revision history for this message
Gerry Boland (gerboland) wrote :

Hi Mikodo,
thank you for your messages on this topic. Accessibility is something we need to work on for Unity8. We have plenty to do, from the visual assistance features you've mentioned, to proper keyboard navigation and text-to-speech support. We have a solid list of TODOs (we had a meeting on this topic only this week), we just need to get to work.

I've been doing desktops since the Unity2d days, which had reasonably good accessibility support. We intend to make Unity8 even better.

The unfortunate reality is that features like convergence do tend to get more business focus than important usability features. It is messages like yours that give us not only the motivation but also persuasive arguments and evidence ("users are asking for this") to give more resources to this topic.

Thanks for commenting here. We'll be in touch when we've features ready for testing.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.