Launchpad entry: (none)
Contributors: Stephen M. Webb
Packages affected: unity
This is the specification for the task of adjusting Unity7 to adapt to high-DPI displays.
This specification defines the work required to modify the Unity 7 Desktop Environment to support higher-DPI display hardware.
This specification applies to the unity Version 7 Desktop Shell and some of the software suite required to implement that product.
Definitions, Acronyms, and Abbreviations
- dots per inch -- a measure of pixel density on a display
a unit of measure: effectively the same number of puxels as the width of the letter m in the current font.
- more than 100 pixels per inch (eg. 3200 x 1800 on a 15" display)
This specification consists of an overall description of the changes required to the Unity 7 Desktop Shell to adapt to and improve the user experience on high-DPI display hardware, followed by descriptions of changes required to the individual components that make up the Unity 7 Desktop Shell.
The Unity 7 Desktop shell is a primary interface for launching and control of applications on a desk computer. In 2013, a number of readily-available consumer grade device are appearing on the market with display devices capable of high-resolution (high pixels-per-inch), sometimes up to 3200 x 1800 pixels on a 15 inch screen. When Unity 7 is run in such a device's native resolution, the controls shrink to an unusable size. Increasing the system font size to accommodate the shrinkage causes problems because some text fields have hard-coded sizes, and has no effect on control sizes (for example, the close button on windows).
Because the Unity 7 product does not adjust well to higher pixel density displays at their native resolution, the user is forced to run their device at a lower, non-native resolution. This defeats the purpose of such a device and causes frustration and product dissatisfaction.
Modifications to the Unity 7 Desktop Shell must include the ability to scale text fields, decorations, icons, and spacing automatically to adjust to font size changes. To this end, all decoration and widget sizes should be expressible in em units.
The ability to scale all graphics on a display device to adjust for different DPI is required. Each display shall have a different adjustable configurable scale factor with a reasonable default based on a multiplier ration to the original designed 96 DPI.
Expected user of the high-DPI Unity 7 Desktop Shell range from casual users with a modern laptop computer to artists or engineers with a multiple-monitor setup including one or more 4K displays. Set up and adjustment of high-DPI behaviour must be simple and straightforward.
The scope of adjusting the Unity 7 Desktop Shell for high-DPI devices is large and the resources for completing this task in the Ubuntu cadence timeframe are few. It is possible or even likely that not all required tasks can be completed by the 14.04 LTS release dates.
Apportioning of Requirements
Modules and tasks not complete by the Ubuntu 14.04 LTS feature freeze may need to be delayed indefinitely.
External interface requirements
Unity Font Settings
Display-Specific Scaling Settings
Autodetection of Display Addition and Removal
System Notifications of Changes
How to find and change the screen DPI (from askUbuntu, last updated 2013-12-20)