Tech off the top of my head

Menu

Progress on the Converged Desktop

It’s still very early days in Canonical’s efforts to unify the experience from phone to tablet to desktop to TV, but results are starting to trickle in.

Unity8 home screen on a Lenovo Yoga 2 Pro

One of the side projects on my plate is a Unity8 login session you can install alongside the regular Unity7 desktop (or other desktops, your choice). The idea is to have a preview session available for the Trusty Tahr that lets Unity 8 developers and Touch App developers tune the experience on the desktop. For example, there’s evidently still some work to be done to make Unity8 useful on high-DPI screens like my Lenovo Yoga 2 Pro (3200×1800 pixels on a 13″ laptop).

Sorry for the potato. I haven’t got screen capture working yet so I had to use an actual physical camera. Early days. You can see the high-DPI issues in this picture. For example, see the teeny-tiny indicators at the top? Didn’t think so.

The cool thing about this session is it runs on the Mir display server with no X11 in sight. LightDM (the program that accepts your password and logs you in in Ubuntu) uses X11 to run the Unity7 greeter, then shuts it down gracefully and starts a Mir server, then uses Upstart to run a Unity8 session. Gee whiz.

Right now you could just install this from a PPA and go at it, but there are some big wrinkles that still need to be worked out. For instance, there’s no cursor support so mouse and trackpad support is a little troublesome (works swell with a touchscreen), and keyboard input seems to have no effect — Unity8 has been developed with phones and tablets in mind, they don’t generally have a mouse, trackpad, or keyboard. It’s OK, there are plans in the works to add those, and that’s one of the reasons we have this session at this point in the Ubuntu release cycle.

Also, there is no way to log off from Unity8 (phones and tablets don’t generally support that concept) so that pretty much requires a reboot of the whole system unless you have an SSH session open.

Finally, there seems to be some trouble actually launching applications. No worries, that’ll get fixed too.

I think this is pretty exciting. That’s why I’m letting you all in on this project in its infancy. The Ubuntu community deserves to be kept abreast of the coming excitement that will be available in Ubuntu 14.04 LTS.

Post navigation

23 thoughts on “Progress on the Converged Desktop”

Is there (now) already a way to set the grid unit for unity8-lxc?
It would make testing the desktop features a lot more practicable (if not even enjoyable🙂 ) Currently it’s hard…
I have in unity7 dconf: com.ubuntu.user-interface.scale-factor={‘eDP1’: 20}
or do I have to set (in which file?) GRID_UNIT_PX=20 before starting the unity8-lxc session?

I tried the ppa and installed unity8-desktop-session-mir on a Yoga 2, but it seems lightdm does not shutdown properly (it’s still visible, the top menues are responsive but the login form is removed).
What could be wrong, or how could I launch it to get error messages output?

Interesting. It sounds like the Unity Greeter is still running on an X server, which sounds like a problem in LightDM. If the system Mir server (unity-system-compositor) does not start, LightDM may not shut down the X server the greeter runs on.

Make sure you have the newest version of LightDM installed, and you don’t have any packages that fool around with unity-system-compositor, such as the ubuntu-dektop-mir package.

The LightDM logs are in /var/log/lightdm if you want to check for errors. You can check the logs from a Unity7 session, since they’re preserved across logins. I usually use SSH to connect from another machine when things go wrong, since if you’re troubleshooting this stuff yuo can’t always rely on the system console being useful.

In the third [TODO] I was not very clear saying “dynamic configuration”. I meant that ultimately the setting of how the screen is scaled (today’s GRID_UNIT_PX) should be available for the user to tweak as it is on Mac OS/X for example [1]. In today’s Ubuntu, that setting should land in the System Settings app [2].

It would be nice if it used the same settings as we’re shipping in Ubuntu 14.04 LTS for Unity7 to do exactly this.

It’s true that in Unity7 we use the 700-years-old traditional typesetting units of points and ems currently in widespread use throughout the World Wide Web rather than more modern NIH units, but scaling only requires a unitless ratio to do properly so it should be possible to have a single configuration setting and when a developer installs unity8-desktop-session-mir in Trusty it picks up his fine-tuned preferences automatically.

I don’t think having everyone open some text file and edit it to adjust a DPI value for each display whenever they install Ubuntu is really going to make the grade. The size of the grid units needs to be calculated automatically from each output device pixel density and do the right thing by default. If it’s not doing that right now, it’s a bug and need to get fixed before Unity8 gets promoted to the default desktop shell.

It would be wrong to hardcode the unity8-desktop-session package to assume a particular pixel density. For one, which pixel density should I choose for my multi-monitor setup? For another, how will that look when I plug in a projector to demonstrate to a crowd?

Just saying that it’s not unity8 which has high DPI issues, but its the setup.

Usually, devices with High DPI screens do automatic downscaling on the external video outputs. So right now, everything would be similarly tiny when attaching a projector. If you make things look good on your screen, they should also look good on the external video out, just with less pixels.

Usually, devices with High DPI screens do automatic downscaling on the external video outputs.

A lot of people attach a high-DPI monitor as their second (or second and third) display. This is a very common configuration now for sysadmins and a within a couple of years a very common scenario on the home desktop. If you don’t support automatic dynamic device detection and scaling in the software, your product won’t make it past the starting gate.

The GRID_UNIT_PX’s default value is of 8 which is good for non retina desktops. Everywhere else the OEM that ships Ubuntu with the device (be it laptop, tablet, etc.) needs to choose the appropriate value and preconfigure it for users. That is for example what we do on the phones and tablets that are enabled right now.

[TODO] As a fallback mechanism we can and will use the physical screen size and resolution of the screen and compute a reasonable value from that. However this information is not always reliably reported by the driver/display server.
[TODO] As for multi-monitor support, it is non existent for now and needs to be implemented.
[TODO] I would also like to move away from the environment variable and use a dconf property instead so that we could dynamically change the value. Actually, dynamic configuration and multi monitor support will require that.

Florian

ps: note that GRID_UNIT_PX has in fact nothing to with Unity8 but is defined and implemented as part as the Ubuntu QML UI Toolkit (lp:ubuntu-ui-toolkit).