Dogfooding Unity 8

screenshot20160506_103257823During the Ubuntu Online Summit last week, my colleague Daniel Holbach came up with what he called a “10 day challenge” to some of the engineering manager directing the convergence work in Ubuntu. The idea is simple, try and use only the Unity 8 desktop for 10 working days (two weeks). I thought this was a great way to really identify how close it is to being usable by most Ubuntu users, as well as finding the bugs that cause the most pain in making the switch. So on Friday of last week, with UOS over, I took up the challenge.

Below I will discuss all of the steps that I went through to get it working to my needs. They are not the “official” way of doing it (there isn’t an official way to do all this yet) and they won’t cover every usage scenario, just the ones I faced. If you want to try this challenge yourself they will help you get started. If at any time you get stuck, you can find help in the #ubuntu-unity channel on Freenode, where the developers behind all of these components are very friendly and helpful.

Getting Unity 8

To get started you first need to be on the latest release of Ubuntu. I am using Ubuntu 16.04 (Xenial Xerus), which is the best release for testing Unity 8. You will also need the stable-phone-overlay PPA. Don’t let the name fool you, it’s not just for phones, but it is where you will find the very latest packages for Mir, Unity 8, Libertine and other components you will need. You can install is with this command:

sudo add-apt-repository ppa:ci-train-ppa-service/stable-phone-overlay

Then you will need to install the Unity 8 session package, so that you can select it from the login screen:

sudo apt install unity8-desktop-session

Note: The package above used to be unity8-desktop-session-mir but was renamed to just unity-desktop-session.

When I did this there was a bug in the libhybris package that was causing Mir to try and use some Android stuff, which clearly isn’t available on my laptop. The fix wasn’t yet in the PPA, so I had to take the additional step of installing a fix from our continuous integration system (Note: originally the command below used silo 53, but I’ve been told it is now in silo 31). If you get a black screen when trying to start your Unity 8 session, you probably need this too.

sudo apt-get install phablet-tools phablet-tools-citrain
citrain host-upgrade 031

Note: None of the above paragraph is necessary anymore.

This was enough to get Unity 8 to load for me, but all my apps would crash within a half second of being launched. It turned out to be a problem with the cgroups manager, specifically the cgmanager service was disabled for me (I suspect this was leftover configurations from previous attempts at using Unity 8). After re-enabling it, I was able to log back into Unity 8 and start using apps!

sudo systemctl enable cgmanager

Essential Core Apps

The first thing you’ll notice is that you don’t have many apps available in Unity 8. I had probably more than most, having installed some Ubuntu SDK apps natively on my laptop already. If you haven’t installed the webbrowser-app already, you should. It’s in the Xenial archive and the PPA you added above, so just

sudo apt install webbrowser-app

But that will only get you so far. What you really need are a terminal and file manager. Fortunately those have been created as part of the Core Apps project, you just need to install them. Because the Ubuntu Store wasn’t working for me (see bottom of this post) I had to manually download and install them:

sudo click install --user mhall com.ubuntu.filemanager_0.4.525_multi.click
sudo click install --user mhall com.ubuntu.terminal_0.7.170_multi.click

If you want to use these apps in Unity 7 as well, you have to modify their .desktop files located in ~/.local/share/applications/ and add the -x flag after aa-exec-click, this is because by default it prevents running these apps under X11 where they won’t have the safety of confinement that they get under Mir.

The file manager needed a bit of extra effort to get working. It contains many Samba libraries that allow it to access windows network shares, but for some reason the app was looking for them in the wrong place. As a quick and dirty hack, I ended up copying whatever libraries it needed from /opt/click.ubuntu.com/com.ubuntu.filemanager/current/lib/i386-linux-gnu/ to /usr/lib/i386-linux-gnu/samba/. It’s worth the effort, though, because you need the file manager if you want do things like upload files through the webbrowser.

Using SSH

IRC is a vital communication tool for my job, we all use it every day. In fact, I find it so important that I have a remote client that stays connected 24/7, which I connect to via ssh. Thanks to the Terminal core app, I have quick and easy access to that. But when I first tried to connect to my server, which uses public-key authentication (as they all should), my connection was refused. That is because the Unity 8 session doesn’t run the ssh-agent service on startup. You can start it manually from the terminal:

ssh-agent

This will output some shell commands to setup environment variables, copy those and paste them right back into your terminal to set them. Then you should be able to ssh like normal, and if your key needs a passphrase you will be prompted for it in the terminal rather than in a dialog like you get in Unity 7.

Getting traditional apps

Now that you’ve got some apps running natively on Mir, you probably want to try out support for all of your traditional desktop apps, as you’ve heard advertised. This is done by a project called Libertine, which creates an LXC container and XMir to keep those unconfined apps safely away from your new properly confined setup. The first thing you will need to do is install the libertine packages:

apt-get install libertine libertine-scope

screenshot20160506_105035760Once you have those, you will see a Libertine app in your Apps scope. This is the app that lets you manage your Libertine containers (yes, you can have more than one), and install apps into them. Creating a new container is simply a matter of pressing the “Install” button. You can give it a name of leave it blank to get the default “Xenial”.

screenshot20160506_105618896Once your container is setup, you can install as many apps into it as you want, again using the Libertine container manager. You can even use it to search the archives if you don’t know the exact package name. It will also install any dependencies that package needs into your Libertine container.

screenshot20160506_105942480Now that you have your container setup and apps installed into it, you are ready to start trying them out. For now you have to access them from a separate scope, since the default Apps scope doesn’t look into Libertine containers. That is why you had to install the libertine-scope package above. You can find this scope by clicking on the Dash’s bottom edge indicator to open the Scopes manger, and selecting the Legacy Applications Scope. There you will see launchers for the apps you have installed.

Libertine uses a special container manager to launch apps. If it isn’t running, as was the case for me, your legacy app windows will remain black. To fix that, open up the terminal and manually start the manager:

initctl --session start libertine-lxc-manager

Theming traditional apps

screenshot20160506_122713187By default the legacy apps don’t look very nice. They default to the most basic of themes that look like you’ve time-traveled back to the mid-1990s, and nobody wants to do that. The reason for this is because these apps (or rather, the toolkit they use) expect certain system settings to tell them what theme to use, but those settings aren’t actually a dependency of the application’s package. They are part of a default desktop install, but not part of the default Libertine image.

screenshot20160506_112259969I found a way to fix this, at least for some apps, by installing the light-themes and ubuntu-settings packages into the Libertine container. Specifically it should work for any Gtk3 based application, such as GEdit. It does not, however, work for apps that still use the Gtk2 toolkit, such as Geany. I have not dug deeper to try and figure out how to fix Gtk2 themes, if anybody has a suggestion please leave it in the comments.

What works

It has been a couple of months since I last tried the Unity 8 session, back before I upgraded to Xenial, and at that time there wasn’t much working. I went into this challenge expecting it to be better, but not by much. I honestly didn’t expect to spend even a full day using it. So I was really quite surprised to find that, once I found the workarounds above, I was not only able to spend the full day in it, but I was able to do so quite easily.

screenshot20160509_121832656Whenever you have a new DE (which Unity 8 effectively is) and the latest UI toolkit (Qt 5) you have to be concerned about performance and resource use, and given the bleeding-edge nature of Unity 8 on the desktop, I was expecting to sacrifice some CPU cycles, battery life and RAM. If anything, the opposite was the case. I get at least as many hours on my battery as I do with Unity 7, and I was using less than half the RAM I typically do.

screenshot20160509_103139434Moreover, things that I was expecting to cause me problems surprisingly didn’t. I was able to use Google Hangouts for my video conferences, which I knew had just been enabled in the browser. But I fully expected suspend/resume to have trouble with Mir, given the years I spent fighting it in X11 in the past, but it worked nearly flawlessly (see below). The network indicator had all of my VPN configurations waiting to be used, and they worked perfectly. Even pulse audio was working as well as it did in Unity 7, though this did introduce some problems (again, see below). It even has settings to adjust the mouse speed and disable the trackpad when I’m typing. Most imporantly, nearly all of the keyboard shortcuts that have become subconcious to me in Unity 7 are working in Unity 8.

Most importantly, I was able to write this blog post from Unity 8. That includes taking all of the screenshots and uploading them to WordPress. Switching back and forth between my browser and my notes document to see what I had done over the last few days, or going to the terminal to verify the commands I mentioned above.

What doesn’t

Of course, it wasn’t all unicorns and rainbows, Unity 8 is still very bleeding edge as a desktop shell, and if you want to use it you need to be prepared for some pain. None of it has so far been bad enough to stop me, but your mileage may vary.

One of the first minor pain-points is the fact that middle-click doesn’t paste the active text highlight. I hadn’t realized how much I have become dependent on that until I didn’t have it. You also can’t copy/paste between a Mir and an XMir window, which makes legacy apps somewhat less useful, but that’s on the roadmap to be fixed.

Speaking of windows, Unity 8 is still limited to one per app. This is going to change, but it is the current state of things. This doesn’t matter so much for native apps, which were build under this restriciton, and the terminal app having tabs was a saving grace here. But for legacy apps it presents a bigger issue, especially apps like GTG (Getting Things Gnome) where multi-window is a requirement.

Some power-management is missing too, such as dimming the screen after some amount of inactivity, or turning it off altogether. The session also will not lock when you suspend it, so don’t depend on this in a security-critical way (but really, if you’re running bleeding-edge desktops in security-critical environments, you have bigger problems).

I also had a minor problem with my USB headset. It’s actually a problem I have in Unity 7 too, since upgrading to Xenial the volume and mute controls don’t automatically switch to the headset, even though the audio output and input do. I had a workaround for that in Unity 7, I could open the sound settings and manually change it to the headset, at which point the controls work on it. But in Unity 8’s sound settings there is no such option, so my workaround isn’t available.

The biggest hurdle, from my perspective, was not being able to install apps from the store. This is due to something in the store scope, online accounts, or Ubuntu One, I haven’t figured out which yet. So to install anything, I had to get the .click package and do it manually. But asking around I seem to be the only one having this problem, so those of you who want to try this yourself may not have to worry about that.

The end?

No, not for me. I’m on day 3 of this 10 day challenge, and so far things are going well enough for me to continue. I have been posting regular small updates on Google+, and will keep doing so. If I have enough for a new blog post, I may write another one here, but for the most part keep an eye on my G+ feed. Add your own experiences there, and again join #ubuntu-unity if you get stuck or need help.

This entry was posted in OpenSource, Work and tagged , , , , , , . Bookmark the permalink.

50 Responses to Dogfooding Unity 8

  1. citrain host-upgrade 053 didn’t effect for me, still black screen after login…

    • Michael Hall says:

      The fixed package has been moved to silo 31 (I just updated the article). So try citrain host-upgrade 031

      • Jarlath Reidy says:

        Has it moved again? It’s not working for me with 031.

        • Jarlath Reidy says:

          Turns out I had a mesa PPA that didn’t have the Mir patches. I’m up and running now. Thanks! Hopefully the store will start working soon.

  2. Sam Segers says:

    Small notes that could help others:

    I don’t think cgmanager is installed with the desktop session. You probably had it installed with a previous attempt. Also, the enable only enables it at the next boot. It you also execute the start command, you can use unity8 immediately.

    I got the store to work.
    Apparently you need the packagekit-plugin-click package. I don’t know it that’s everything I did.

    The biggest issues for me in my previous attempts were keyboard layout not changeable. Glad that that is solved (only alt-gr combinations are not working). The other issue was no tty switching, even not to tty1, which I was hoping to use because I couldn’t get the terminal to work and was struggling with the QWERTY setting.

    I now tried to log in to unity8 with one user and to unity7 with another. It’s working well. You can switch them with ctrl-alt-F7 etc. Switching in the graphical way isn’t working.

    I’m amazed by the progress that’s been made.

    • Jarlath Reidy says:

      packagekit-plugin-click wasn’t enough to get the store working for me. But as Ads20000 says below it seems use the Unity 8 package in the Xenial/Yakkety repositories may be the way to go in the future anyway unless you want to test bleeding edge.

  3. Kai Mast says:

    The webbroser is still aweful.

    Is there a roadmap to port Firefox to Mir? Would make much more sense than to develop a entirely new browser.

    • NOX says:

      Intel finishes porting Chromium too wayland https://github.com/01org/ozone-wayland
      I read some time ago that Mir can reuse this work.
      And yes, Canonical browser is unusable buggy app.

    • Alan Bell says:

      It isn’t an entirely new browser, it is a port of Chromium, if they started from Firefox it would be basically the same.

      • Kai Mast says:

        Well, there is already a Firefox UI (both for desktop and mobile). Not sure why they have to build a new one from scratch.

        I also don’t understand why they have to build their own wrapper around chromium (oxide or whatever is called) instead of using the Qt libraries that already exist.

        • Alan Bell says:

          well I guess they wanted a QML user interface that is native to the Ubuntu Touch platform and follows their UI guidelines rather than one designed for something else. I don’t think Qt works in general on Mir, just QML. Firefox uses Xul which is it’s own thing, not sure if that is something that comes for free if GTK works on Mir or if Xul needs porting to Mir as well. It is all a bit confusing really.

  4. Alan Bell says:

    For all the talk of convergence, this stuff doesn’t feel like it was designed to run on all form factors in so many ways.

    • seb24 says:

      This stuff feel like what it is : a WIP.
      For me if I can test it as alternative session on Ubuntu 16.10 I will be happy. I think in 6 month they can fix more of the problems we see here and continue to add new functionalities like multi-screen.

    • maokei says:

      They still lack allot of desktop features been using it on my phone it works really well but desktop features are a bit lacking when connecting to a display.

    • Jarlath Reidy says:

      That’s because it’s not done yet. Not even the phone is ready for prime time yet so don’t expect much from the desktop at this stage in development.

  5. Nice blog entry and nice work! :-)

    There were a couple of packages mentioned in the comments and in your post, could they all be added to unity8-desktop-session-mir?

  6. Foxoman says:

    Nice informative article but Still Black screen, I could not log in to unity 8 :(

    • Jarlath Reidy says:

      Make sure you do not have mesa installed from a PPA. This will prevent you getting the mir patched one provided by Ubuntu.

  7. Garth Greenaway says:

    Hey Michael, thanks for the great post.
    Am still stuck on that black screen, that after following the instructions as best I could in spite of the LFCS training. Got about as much hair left as Mark has, as the anticipation is high. Any chance of a step by step instructions by yours Sudo?
    Regards, and thanks to you and the amazing Ubuntu Team,
    Garth
    Intel i7 2600 Dell Optiplex 990

    • Michael Hall says:

      Hey Gareth, what GPU do you have? Also, can you pastebin ~/.cache/upstart/unity8.log

      • Garth Greenaway says:

        Hey Michael,
        GPU: Intel i7 2600 Graphics (Desktop, mesa; i.e. no AMD or Nvidia).
        PasteBin: apologies, pastebin limit exceeded non-pro user (1.7MB file). If you don’t mind / or are keen, could you offer another means to sending the file; perhaps e-mail me privately to this post address?
        Regards,
        Garth

        • Michael Hall says:

          You can email to mhall119@ubuntu.com, but you’ll probably get faster help if you put the last hundred or so lines into paste.ubuntu.com and then jump into #ubuntu-unity and share the link with them

          • Garth Greenaway says:

            Hey Michael,

            Thanks very much, and apologies as I only just spotted this now:
            ‘sudo apt-get install phablet_tools phablet-tools-citrain’
            Of course the underscore should be a dash!

            I was suffering from the black screen issue like you mentioned in this post; the phablet-tools install solved it as stated. This message typed from within Unity 8!

            Regards,
            Garth

  8. Mitu says:

    Talking about the multi-window per app feature, it’s vital for the Unity 8’s file manager – it does not support tabs yet. And even if it will, it is still not the same as dragging files between two windows.

    Are there any plans how to reintroduce HUD? That is a thing I would definitely miss in U8, as it’s a wonderful feature.

    I am also curious of a few things:
    1. How about snaps – will they work out of the box when installed as just as clicks do (for example ubuntu-clock-app installed from a snap package)
    2. Ubuntu’s GTK3 has already baked in the Mir support, hasn’t it? Could you package Nautilus or GEdit as a snap or click and show them running without XMir and Libertine?
    3. Is it possible to keep the launcher always visible as in Unity 7?
    4. Why is the font in file manager blue? Is it a bug or a feature? ;)
    5. Are there any design works according to the dash on Windows? May it be the dash browser or not, but for sure it can’t be the always-open window.
    6. Are there any plans to implement the icons on desktop?
    7. I read that nVidia has recently added Mir and Wayland support to their proprietary drivers. Is it possible to run Unity 8 on these nVidia drivers yet?
    8. A few years ago some of the Suru icons has been shown – including folder icons, filetype icon etc. They were beautiful. Will they ever land?

    • Michael Hall says:

      Global/window menus are being worked on for Unity 8 now, which I imagine are a re-requisite for having the HUD.

      1) No, snaps won’t work out of the box just yet, but it shouldn’t be hard to get that working
      2) Gtk3 has some Mir support, yes, but I don’t know if it’s complete enough to run those apps yet
      3) Not yet, but I bet it’s planned
      4) The blue comes from recent changes to the default color palette, I don’t know if the filemanager will keep it or change back to what it has before
      5) I know there is some design work going on there, but I don’t know what it is
      6) There has been some discussion of it. It wouldn’t be that difficult to build into Unity 8, want to give it a try?
      7) I think nVidia’s driver has very early-stage implementations, I haven’t heard of anybody getting either Mir or Wayland working on it yet
      8) I don’t know, do you have any links to those icons?

  9. Pingback: Dogfooding Unity 8 http://mhall119.com/2016/05/dogfooding-unity-8/ … | Dr. Roy Schestowitz (罗伊)

  10. Stefano Verzegnassi says:

    Cool, thanks for your post!
    I had some trouble in getting Unity 8 working on my PC. Here’s some troubleshooting:

    1) I have a dedicated Nvidia card, alongside an integrated Intel GPU. I discovered Mir was trying to use nouveau drivers for some reason.
    I had to purge ‘xserver-xorg-video-nouveau’ before getting Mir working.

    2) Installing Core Apps. When running ‘sudo click install’, it may be necessary to use the –allow-unauthenticated option.

    3) I’ve pushed a development snapshot of UT Tweak Tool (compiled for AMD 64) into my GDrive account. There are a few phone-related options, but it exposes some useful setting for the desktop mode. :)
    https://code.launchpad.net/~verzegnassi-stefano/ubuntu-touch-tweak-tool/desktop-clicks

  11. Alex says:

    So, the theming issue is GTK specific?

    • Michael Hall says:

      There is at least a theme issue with Gtk2, possibly others I haven’t tried. But Gtk3 theming seems to work after adding those two packages

  12. Pingback: Flavorless Mint | LUP 144 | Jupiter Broadcasting

  13. Jesus says:

    You can install more apps in http://people.canonical.com/~ubuntu-archive/click_packages/. Filemanager fail

  14. Serg says:

    Hi, I am trying to run Unity 8 on my Lenovo IdeaPad S10-3t (16.04). I can log in and see the scope window trying to load. But it disappears every few seconds and reappears again. The performance is abysmal to the point where there is a delay of ~3-5 seconds between moving the mouse and the cursor responding. During the brief time in which the scope window disappears, it moves fluently. As soon as it’s back, it’s sluggish.

    Is there something I can do besides waiting, to try and fix the issue?

    Thanks.

    • Michael Hall says:

      Make sure you have the latest packages installed. Then check that cgmanager is enabled: sudo systemctl status cgmanager and enabled it if it isn’t

      • Serg says:

        Up to date and cgmanager is enabled. I did all the steps you wrote above, perhaps I should’ve specified that.

        • Michael Hall says:

          Then I’m not sure, can you pastebin your ~/.cache/upstart/unity8.log (just the last couple hundred lines if it’s too big) and join #ubuntu-unity on Freenode? We’ll find somebody to help you

  15. Awesome post!

    I tried this, and it should be phablet-tools instead of phablet_tools. :)

  16. minple says:

    I create new container in Libertine but it auto removed.

    • Jesus says:

      You have to install ‘ python3-libertine-chroot’.

      Then you can create the container using the comand ‘libertine-container-manager create –id test –type chroot –name ‘Libertine Demo’

  17. Pingback: Learn About Canonical's Micheal Hall Exploration of Unity 8 and Mir

  18. safriddle says:

    Unity 8 works now after following all steps given above. I have 2 issues though:
    1. File manager installs from the store, but it shows only a blank white window.
    2. The libertine app installed, but everytime i try to create a container, i get to the step of giving my container a name. Several times i tried doing it with leaving the name field blank and giving my own name for the container, but all the time, the container start to create and then disappers abruptly after 1-2 seconds(the libertine app window stays open). I want to run legacy apps in unity8. Any idea to make it work?

  19. Remove a continer libertine says:

    Good afternoon,

    Few days ago, i was creating a container with “libertine” but it appeared an error and it didnt finish accurately.

    After that, i tried again and it works but my problem now is that when i see the list container, it appear ,but if i try to delete it with ‘libertine-container-manager destroy’ fails with an error again.

    How can i do to force or create again the container with the same name?

    • Jesus says:

      Go to ~/.local/share/libertine/ContainersConfig.json and remove the whole entry associated with the ‘xxxxx’ container.

  20. Ads20000 says:

    I was using the Stable Phone Overlay PPA but when I updated my system it removed Unity 8 in the process. I went on the CI Train IRC to ask what was happening and was told by Ogra_ and sil2100 that it’s actually recommended to use the Unity 8 package in the Xenial/Yakkety repositories than the one in the PPA. Apparently they’ve just introduced a system which should see new packages land in all three (though Xenial updates will have to go through the SRU process).

    Also, apparently the Stable Phone Overlay has phone-specific things in it, as implied by the name of the PPA. It’s used for creating images and testing individual applications, not as a repository for general desktop Unity 8 use.

    Are they right? Maybe you shouldn’t be recommending the PPA for people wanting to use Unity 8? sil2100 changed the description of the PPA to say that it’s not recommended for desktop use. The unity8 package version in Yakkety and Xenial seems out-of-date but it may just be because the PPA one has phone-specific fixes. In any case, it’s all Unity 8.12.

    • Michael Hall says:

      It was recommended to me by the Unity 8 developers to use this PPA. Ogra and sil2100 are right that it’s not meant for desktop use and that it contains some phone/tablet specific stuff, but it’s also where the Unity 8 developers target the latest development builds. So it’s not for casual users or people who want to “just give it a try”, it’s really for people willing to break things in order to fully test the bleeding-edge code.

  21. Uwe Müller says:

    Hi,

    thank you for the description. I followed it but I still have to restart lightdm everytime I want to use Unity8. While this is something I can live with, my worse problem is that no app ist really working. They only show the rotating ring and nothing more happens. Have you got any hint how to awake them to life? BTW: I have tried it with 16.04 as well as with a daily built of 16.10.

    Regards

    Uwe

    • Michael Hall says:

      I’ve not had that problem with apps, have you checked the logs in ~/.cache/upstart/ ? There might be some clue there

  22. CJ Laing says:

    Been following Unity8’s development for a while. Using it right now to post this on my laptop just to mess around with. It’s worth noting (I don’t know if this is a relatively recent change) but while running gedit with the following:

    gedit — –desktop_file_hint=/usr/share/applications/gedit.desktop

    I seem to get multiple application windows occuring on the menu. I do NOT recommend trying with Nautilus though, trying to open the properties window in Nautilus froze Unity8 and made me need to restart the Mir Display Server.

    It’s great to see Unity8 coming around. I really installed it just to mess with Libertine in an environment that wasn’t my Nexus 7.

  23. Oni_shadow says:

    I have been trying to run unity 8 for a while now (on YY) but have run into one issue. The app scope desapeared at some point during one update (and I am not the only one who experienced that) and I cannot get it back. I tried following your procedure hoping it would work, but it doesn’t. Therefore I can only use the browser in unity8, it is a bit of a limitation !
    Do you know how to fix that ?
    Cheers
    O_S

Comments are closed.