BrightnessAndDisplays

Differences between revisions 20 and 21
Revision 20 as of 2015-05-26 16:06:18
Size: 11010
Editor: mpt
Comment: + beginning of external display settings for pocket PC; - bug 1289478
Revision 21 as of 2015-05-27 10:41:18
Size: 13396
Editor: mpt
Comment: completes display settings for pocket PC
Deletions are marked like this. Additions are marked like this.
Line 75: Line 75:
<<Anchor(displays-pc)>>
Line 130: Line 131:
Initially for the pocket PC, whenever the external display is on, the phone display is off, and vice versa. However, an external display may not work with selected settings, so it needs to regress back to the phone display unless you confirm that the new settings have worked… ''TBD'' Initially for the pocket PC, for graphics driver reasons, whenever the external display is on the phone display is off, and vice versa. However, just as with a PC, an external display may not work with selected settings. This has two consequences:
 * just as with a normal PC, the settings for the external display need to be available on the built-in display;
 * the display needs to revert back to the phone if you do not confirm that the external display settings are working.

So, the rest of the external display settings should appear on the phone whenever an external display is detected, even when it is not currently in use.

“Rotation” should navigate to a “Rotation” screen with radio options for “None” (the default), “90° clockwise”, “180° clockwise”, and “270° clockwise”. It should have a summary value showing the current setting formatted the same way.

“Resolution” should navigate to a “Resolution” screen with radio options for each available resolution for the display, taking the rotation into account: for example “1280 × 800” if Rotation is set to “None”, but “800 × 1280” if it is set to “90° clockwise”. It should similarly have a summary value showing the current setting formatted the same way.

Unlike most of the rest of System Settings, it saves a lot of time to change and apply display settings all at once. Therefore, rotation resolution and scale changes should not apply until you choose “Apply Changes”. The button should be insensitive whenever there are no changes to apply.

When you start using an external display with a phone, you are very likely to want to use the display’s speakers and/or set up an external keyboard too. Therefore, the screen should end with two buttons:
 * A “Sound Settings…” button that navigates to the Sound settings, automatically scrolled to [[Sound#external-display|the external display control]].
 * An “External Keyboard…” button, that navigates to [[LanguageAndText#Phone|the “External Keyboard” screen]].
Line 133: Line 148:

||<^ tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment:display.pocket-pc.png}}||

On the external display itself, the same settings should be laid out as a subset of [[#displays-pc|the current and eventual settings for Ubuntu for PC]]. Since there is only ever one external display, there should be no diagram of displays, and it should be labelled “External display” instead of being named by model. And radio menus should be used instead of separate screens for rotation and resolution.

||<tablestyle="clear:both" style="border:none">||

On all form factors, you should be able to set the display brightness. Phones and tablets may be able to adjust brightness automatically to suit ambient light. Eventually, all form factors should also let you configure external displays, either mirrored or as individual spaces for windows/surfaces; but for now, on the phone this will be limited to using one external display instead of the phone display.

(X) not possible (./) defined Warning /!\ undefined

Use case

Phone

Tablet

PC

see current brightness level

(./) just look at the display

adjust brightness manually

(./) System Settings

Warning /!\

Warning /!\

set automatic adjustment

(./) System Settings

Warning /!\

Warning /!\

Access

brightness-settings-access.phone.png

The System Settings main screen should have an item named according to the device capabilities: “Displays” if it allows multiple simultaneous displays; otherwise “Brightness & Display” if it allows switching to an external display (Pocket PC); otherwise just “Brightness”.

In the latter two cases, its icon should reflect the current brightness level.

Brightness

PC

We assume that any PC has a hardware brightness control, on either the keyboard or the display itself. And unlike sound volume, brightness does not need reassurance for troubleshooting purposes. Therefore, brightness should not have software UI as well; that would be redundant.

If you use a keyboard key to adjust brightness, a brightness notification bubble should appear.

Phone

brightness-display.phone.png

To avoid ambiguity, the brightness slider should be labelled “Phone brightness:” whenever an external display is connected. To avoid seeming oddly specific, it should be labelled “Display brightness:” in the usual case that an external display is not connected.

Whatever the slider is labelled, it should be followed by the “Adjust automatically” checkbox and its caption (bug 1314672).

The goal of the “Adjust automatically” setting is to maximize the average time you can use the device before feeling the need to adjust brightness manually. This is achieved by frequently adjusting the emitted brightness of the display based on the ambient brightness of the surroundings (bug 1328404). So there is a function representing the emitted brightness desired at each level of ambient brightness detectable by the light sensor.

phone-brightness-curve-automatic.png

Because different hardware has different light sensors and displays, this function should be settable based on the hardware model.

Because users have different preferences, the function should also be user-adjustable. This should be achieved by altering the display brightness manually while “Adjust automatically” is checked. Therefore, the “Display brightness:” slider should be sensitive regardless of whether “Adjust automatically” is checked or unchecked.

If it is checked and you adjust the brightness manually, the function that determines the automatic brightness should be adjusted such that, in future, the current ambient light value would result in your just-chosen brightness being chosen automatically (bug 1314678).

To achieve this, the function that generates emitted brightness E from the ambient brightness A should be a curve connecting from three to five coordinates of (A, E). Where Amin, Amax, Emin, and Emax are the minimum and maximum possible values:

  • If you (or the default values for the handset model) set Emin at Ap > Amin, the function should include E = Emin for AminAAp.

    brightness-curve-automatic-flat-minimum.png

  • If you (or the default values for the handset model) set Emax at Aq < Amax, the function should include E = Emax for Aq ≤ A ≤ Amax.

    brightness-curve-automatic-flat-maximum.png

  • If you manually set a brightness (Ar, Er) where any previously-set points exist with AAr and E > Er, those other points should be discarded from the curve, so that the screen does not brighten when surroundings dim.

  • If you manually set a brightness (As, Es) where any previously-set points exist with AAs and E < Es, those other points should be discarded from the curve, so that the screen does not dim when surroundings brighten.

    brightness-curve-automatic-discard-overbright.png brightness-curve-automatic-discard-overdim.png

  • If you manually set a brightness such that the set of coordinates includes more than one for which Amin < A < Amax and Emin < E < Emax, all of them except the newest one should be discarded, so that the curve is not too complex.

  • A new brightness curve should not be saved until you dismiss the brightness slider you are using (for example, by closing the indicator menu), so that a brief experiment does not obliterate a careful previous curve.

Displays

PC

Atop the “Displays” panel should be a diagram of the current display layout.

displays-pc.png

Errata: • “Scale for menu and title bars:” should be “Size of menu bar and title bars:”. • “Scale for window contents:” should be “Scale window contents:”.

Whenever “Mirror displays” is checked:

  • The heading for the display-specific settings should be “All displays”, and the switch should be both on and insensitive.
  • “Launcher placement” should be insensitive and set to “All displays”.
  • “Sticky edges” should be insensitive and set to Off.
  • The wording of the “Match Selected Display” button should be “Match Display”.

Whenever “Mirror displays” becomes unchecked, the controls that were insensitive because it was checked should return to their previous values.

Otherwise, the heading for the display-specific settings should be the name of the selected display, followed by a switch for whether that display is being used at all. Whenever only one display is detected, or whenever every other display is Off, the selected display’s switch should be both On and insensitive. Whenever a display’s switch is Off, “Rotation:”, “Resolution:”, “Size of menu bar and title bars:”, and “Match Selected Display” should be insensitive.

Under the “General options” header, “Launcher placement:” should have an item for “All displays”, then a separator if there are any other displays, then a color-swatched item for each detected display.

Whenever only one display is detected, “Sticky edges” should be both Off and insensitive. Whenever more than one display is detected, it should become sensitive and return to its previous value.

In future, “Launcher placement” and “Sticky edges” will join the other Launcher settings in a “Launcher & Menus” panel.

Scaling

Unfortunately three separate settings exist for scaling interface elements:

  • ui-scale for Unity elements — Launcher, menu bar, Dash, HUD, and window title bars;

  • scaling-factor for GTK applications;

  • text-scaling-factor for extra scaling of text in GTK applications, beyond that already provided by scaling-factor.

Ideally, we would combine these into a single slider that scales everything on the selected display. But to make things worse, while ui-scale is display-specific (so it can have different values when you connect a high-resolution notebook to a low-resolution projector), text-scaling-factor and scaling-factor are display-independent. This means that when you change the display you are focused on — for example, when you give a presentation — you will often need to change the application scaling to suit that display.

So whenever only one display is On, and its scaling-factor and text-scaling-factor match up with its ui-scale, the Displays panel should have only one slider, “Scale for interface elements:”, which adjusts all three scaling factors at once.

displays-pc-scale-everything.png display-pc-scale-all-the-things.png

But whenever multiple displays are On, or whenever one display is On but its scaling-factor and/or text-scaling-factor don’t match up with its ui-scale, the Displays panel should have two sliders, the display-specific “Size of menu bar and title bars:” (ui-scale), and the display-independent “Scale window contents:” (scaling-factor and text-scaling-factor).

displays-pc-scale.png displays-pc-scale-windows.png

Whenever you choose “Match Selected Display”, the “Scale window contents:” setting should change to match the “Size of menu bar and title bars:” setting, such that (for example) the text in an app’s context menus is exactly the same size as the text in the menu bar on that display.

This means that if only one display is on, with disparate scale settings so that two sliders are present, and you choose “Match Selected Display”, the two sliders and the “Match Selected Display” button should disappear, replaced by the single “Scale for interface elements:” slider.

Phone

brightness-display.phone.png

brightness-display-on.phone.png

The “External display” switch should be:

  • present if it is possible for the device to use an external display;

  • sensitive if an external display is detected;

  • on if the external display is currently in use.

Initially for the pocket PC, for graphics driver reasons, whenever the external display is on the phone display is off, and vice versa. However, just as with a PC, an external display may not work with selected settings. This has two consequences:

  • just as with a normal PC, the settings for the external display need to be available on the built-in display;
  • the display needs to revert back to the phone if you do not confirm that the external display settings are working.

So, the rest of the external display settings should appear on the phone whenever an external display is detected, even when it is not currently in use.

“Rotation” should navigate to a “Rotation” screen with radio options for “None” (the default), “90° clockwise”, “180° clockwise”, and “270° clockwise”. It should have a summary value showing the current setting formatted the same way.

“Resolution” should navigate to a “Resolution” screen with radio options for each available resolution for the display, taking the rotation into account: for example “1280 × 800” if Rotation is set to “None”, but “800 × 1280” if it is set to “90° clockwise”. It should similarly have a summary value showing the current setting formatted the same way.

Unlike most of the rest of System Settings, it saves a lot of time to change and apply display settings all at once. Therefore, rotation resolution and scale changes should not apply until you choose “Apply Changes”. The button should be insensitive whenever there are no changes to apply.

When you start using an external display with a phone, you are very likely to want to use the display’s speakers and/or set up an external keyboard too. Therefore, the screen should end with two buttons:

display.pocket-pc.png

On the external display itself, the same settings should be laid out as a subset of the current and eventual settings for Ubuntu for PC. Since there is only ever one external display, there should be no diagram of displays, and it should be labelled “External display” instead of being named by model. And radio menus should be used instead of separate screens for rotation and resolution.

BrightnessAndDisplays (last edited 2016-10-17 13:01:11 by mpt)