BrightnessAndDisplays

Differences between revisions 26 and 27
Revision 26 as of 2016-04-04 08:08:52
Size: 18689
Editor: mpt
Comment: tweaks
Revision 27 as of 2016-04-04 08:36:05
Size: 18421
Editor: mpt
Comment: “Phone brightness:” > “Display brightness:”; “Wi-Fi Display” > “Wi-Fi display”
Deletions are marked like this. Additions are marked like this.
Line 37: Line 37:
||<tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment: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.
||<tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment:brightness-display.phone.2.png}}||
Line 42: Line 40:
Whatever the slider is labelled, it should be followed by the “Adjust automatically” checkbox and its caption (bug Bug:1314672). The “Display brightness:” slider should be followed by the “Adjust automatically” checkbox and its caption (bug Bug:1314672).
Line 127: Line 125:
||<^ tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment:brightness-display.phone.png}}||<^ style="border:none">{{attachment:brightness-display-on.phone.2.png}}|| ||<^ tablestyle="float:left;margin:0 1em 1em 0" style="border:none">{{attachment:brightness-display.phone.2.png}}||<^ style="border:none">{{attachment:brightness-display-on.phone.2.png}}||
Line 134: Line 132:
“Wi-Fi Display” should be present if it is possible for the device to use Wi-Fi display, with a summary value of “Connected” or “Not connected”. It should navigate to [[#wi-fi-display|the “Wi-Fi Display” screen]]. “Wi-Fi display” should be present if it is possible for the device to use Wi-Fi display, with a summary value of “Connected” or “Not connected”. It should navigate to [[#wi-fi-display|the “Wi-Fi display” screen]].
Line 163: Line 161:
=== “Wi-Fi Display” === === “Wi-Fi display” ===
Line 169: Line 167:
Therefore, the “Wi-Fi Display” screen should eventually consist of three sections: Therefore, the “Wi-Fi display” screen should eventually consist of three sections:

Ubuntu should let you adjust the display brightness. Phones and tablets may be able to adjust brightness automatically to suit ambient light. Eventually, all Ubuntu devices should also let you configure external displays, either mirrored or as individual spaces for windows/surfaces. On phones, this will be limited initially to using one external 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;

  • otherwise just “Brightness”.

In the latter two cases, the sun in 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.2.png

The “Display brightness:” slider 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.2.png

brightness-display-on.phone.2.png

The “External display” switch should be:

  • present if it is possible for the device to use an external display (for example, by MHL or Wi-Fi or both);

  • enabled if an MHL display is detected, or if a Wi-Fi display has been chosen;

  • on if an external display is currently in use.

“Wi-Fi display” should be present if it is possible for the device to use Wi-Fi display, with a summary value of “Connected” or “Not connected”. It should navigate to the “Wi-Fi display” screen.

Whenever an external display is on, the phone display is either off or being used as a touchpad. 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 a wired display is detected, or when a Wi-Fi display is chosen, even when neither are currently in use.

The “Rotation:” radio menu should have options “None” (the default), “90° clockwise”, “180° clockwise”, and “270° clockwise”.

The “Resolution:” radio menu should have 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”.

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.

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 display in use at a time, there should be no diagram of displays, and the external display should be labelled “External display” instead of being named by model.

Since, if you can see this interface, you are already using the only external display you can use, there should be no “Launcher placement” or “Sticky edges” controls, and no “Detect Displays” button.

Erratum: “Scale UI elements” should be “Scale buttons and other controls”.

“Wi-Fi display”

The interaction model, and therefore the UI, for using Wi-Fi display is very similar to that of Bluetooth devices. The main difference is that initially it will not allow using the Ubuntu device as a receiver, which would require an equivalent to Bluetooth’s “discoverable” mode. Also, since only one Wi-Fi display can be used at a time, displays that will connect automatically need ordering by preference.

wi-fi-display.phone.png

Therefore, the “Wi-Fi display” screen should eventually consist of three sections:

  1. The text “No Wi-Fi display connected”, or if there is, “Connected display:” followed by a page stack item representing it.
  2. The text “No displays detected”, or if there are, “Choose a display:” or “Use another display:” depending on whether one is already in use, followed by items for each of the currently-detected displays except any that are currently in use or set to be used automatically. An item should end in an ellipsis if it’s known in advance that using it will require entering a PIN.

  3. If any displays are set to be used automatically (once implemented), “Use automatically when detected:” followed by page stack items for each of them. If there are more than one, each should have a drag handle for reordering them.

The icon for each display item should represent its protocol (for example Miracast or Wi-Fi Direct). The label for each item should consist of the “Brand” followed by the “Model number” (not the “Name”, since that is often both long and non-distinguishing). Across all three sections, if two or more displays have the same label, those displays only should be distinguished by having their labels end with their MAC address in brackets. Therefore, whether they include a MAC address or not, over-long labels should be ellipsized in the middle.

Connecting manually

wi-fi-display-pin.phone.png

Choosing a display from the “Choose a display:”/“Use another display:” list should attempt connection. While in progress, the list item for the display should have a spinner at its trailing end.

If the display requires a PIN, a ‘PIN for “{label}”’ dialog should appear with an empty numeric field for entering the PIN, and “Cancel” and “Connect” buttons. “Connect” should be disabled whenever the field contents are the wrong length. When you choose “Connect”, the dialog should stay open in the standard progress state until connection is complete, in case you entered the wrong PIN and need to correct it.

Connecting in general

If connecting fails, an alert should appear, with an “OK” button, and primary and secondary text depending on the situation:

  • This device can’t connect to “{display label}”.
    • There is no Wi-Fi channel both devices can use.
  • This device can’t connect to “{display label}”.
    • There is no Wi-Fi frequency both devices can use.
  • “{display label}” is not responding.
    • Try powering the display off then on again.
  • There was an unknown error connecting to “{display label}”.
    • Try moving closer to the display and reconnecting.

Examining and disconnecting manually

wi-fi-display-individual-connected.phone.pngwi-fi-display-individual-disconnected.phone.png

Choosing a device in the “Connected display:” list, or the “Connect automatically when detected:” list, should navigate to a screen with the same device label as its header. It should contain a key-value table showing the “Brand:”, “Name:”, “Model:”, “Protocol:” (with icon), and “Status:” — “Connecting…”, “Connected”, “Disconnecting…”, or “Not connected”.

When “Status:” is “Not connected”, it should be followed by “Last connected:” with the date and time that the display was most recently connected.

Finally, the screen should have a “Connect automatically when detected” checkbox (once implemented), and if the display is currently connected, a “Disconnect” button. “Disconnect” should be disabled whenever “Connect automatically when detected” is checked (because otherwise the device would immediately reconnect, making disconnecting pointless).

If you choose “Disconnect”, that button should become insensitive, “Status:” should change to “Disconnecting…”, and one second later you should be returned to the main “Brightness & Display” screen to see the device sliding down from the “Connected display:” list to the “Choose a display:”/“Use another display:” list.

If you uncheck “Connect automatically when detected” for a display that is not currently in use, the display’s details should not be deleted until you navigate to any other System Settings page, so that you have an opportunity to undo the setting before the display page disappears.

Disconnecting automatically

If the external display powers off, display should return to the main device.

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