Friday, May 24, 2013

Waiting and Preparing for My Samsung Chromebook

Waiting

Although we often live in a world of nearly instant gratification, sometimes we do need to wait a little. I ordered my Samsung Series 3 on a Sunday and it was shipped the next day, I was told it would not arrive until Saturday. Since originally the web site had said if I ordered it that Sunday it would arrive around Thursday, I was a little disappointed. I contacted the seller and he said that he thought that was just the shipper's worst case scenario, and it would probably come earlier.

Preparing

While waiting for my new Chromebook to arrive, there were many things to investigate and preparations to make. I wanted to determine:
  • Which desktop environment I wanted to use I currently was using Unity. I liked KDE a lot. I had experimented with Gnome 3 Shell as well, and though I liked it, I had rendering issues which caused me to go back to Unity.  Many of the articles about crouton discussed using Xfce, although others were possible.
  • Which email client I wanted to use.  Did I want to stick with Thunderbird or go with something lighter? After all, there is limited disk space on the Chromebook and the processor is not the fastest.
  • How to get my scanner to work, if possible.
  • What exact steps would I need to take to get the crouton environment I wanted installed and running.

Desktop Environment

In trying to determine which desktop environment to use with my crouton (Ubuntu) environment, I had various considerations:
  • KDE. I really like KDE 4. When the KDE went from KDE 3 to KDE 4, there was quite  an outcry because they changed it so drastically. And for a long time, there was functionality missing in KDE 4 that was available in KDE 3.  But my experience with it was pretty positive. I really liked the plasma desktop and the Activity support, as discussed here, is unique and powerful. KDE has its own version of many applications (which may or may not be a good thing) and also can use a lot of resources, although they are constantly improving that.
  • Unity. I have been using Unity for several years. When Ubuntu (actually Canonical the company behind Ubuntu) decided not to follow the direction of the upcoming Gnome 3 (Ubuntu used Gnome 2 at the time), this caused a lot of controversy. Unity is the default desktop environment for Ubuntu, although there are flavors of Ubuntu which use KDE, Gnome 3, Xfce, and LXDE as well.  Like KDE, Unity uses quite a lot of resources. Unity changed quite a few things:
    • The Unity launcher is somewhat similar to the one used by Apple. It is on the left, and cannot be moved.  There is an auto-hide capability such that by scrolling over the left edge the launcher will slide out if covered. The launcher contains both favorite applications not yet running plus applications that re running (and you can tell the difference). It has improved over several releases.
    • The tendency is to have the application take the entire screen, rather than having separate windows visible at the same time.  And also like Apple, the menu is at the top of the screen instead of in the window containing the application. So if you do change the size of the application window so it doesn't take the entire screen, the menu is still at the top of the screen (unless you take special steps to change the behavior). Canonical's thinking behind this was a consistent interface across desktops, laptops, netbooks, tablets, phones, etc.. While these steps make sense for smaller devices, those with large screens might prefer separate windows visible concurrently. Many applications, did not work properly with the top menu bar, including IBM (Lotus) Sametime, which I worked on. There are  sites which explain how to turn it off, either globally or for a particular application.
    • Unity has Overlay Scrollbars. Although it may save a little space, I found them annoying. When I worked on IBM Sametime, I had to turn them off. A lot of people want them off, either because they didn't work for a particular application (like IBM Sametime), or they don't like them. There are numerous sites which explain how to turn them off, either globally or for a particular application.
    • Notifications. Unity has improved notifications. I like this aspect of Unity.
    • Unity has something called the Dash, which is basically a search utility. Rather than going through nested menus looking for applications, you search for it using a name or something indicating its function. That is great if you don't know what you are looking for. If you know the application and just want to get to it, it is a little bit annoying to search for it in this way. The Dash can also find documents etc. on your desktop.  It has some nice features. Opinions on it are mixed.
  • Xfce. Xfce is very lightweight and doesn't use many resources. Many of the default examples of setting up crouton show Xfce being selected. It is based on GTK+ and should be familiar looking to long-time Linux users.
  • LXDE. LXDE is supposedly lighter and faster than Xfce. It has less functionality as well. In many ways though, it looks similar to Xfce and is built on top of GTK+.
  • Enlightenment. Enlightenment (E17 is the new version) is light on resources, but has some interesting and unique features. It has a bar (you can have multiple) for launching applications. It has a box containing minimized applications. It is fully themeable. It supports compositing.  Its look sort of reminds me of the old Unix Motif.
After thinking about it awhile and looking at various pictures, I decided on Enlightenment (e17). It is lightweight, but has a unique look. Unity copies many features of apple. Xfce and LXDE are old fashioned and don't look especially different. KDE would be my second choice, but it is big and uses lots of resources. The good news is that I can change my mind later.

By the way, here is my desktop on my Thinkpad which is running Ubuntu 13.04 with Unity:


Email Client

I have used various email clients in the past. Given that I chose not to use KDE, I exclude kmail. I researched email clients I used in the past plus some more lightweight options. Under consideration were:
  • Thunderbird. I have used Thunderbird for many years. A couple of times I have gotten corrupted mailbox files and lost mail. This has taught me to back things up. I don't know if the problem is Thunderbird or something else. Thunderbird is pretty heavy and has many features, including calendars. It is the current default for Ubuntu. Mozilla, which is responsible for Thunderbird (and Firefox) is not planning to continue to make major enhancements to Thunderbird.
  • Evolution. Evolution used to be the default in Ubuntu, but was replaced by Thunderbird. I used Evolution in the past and was pretty happy with it. It is the default email client for Gnome I believe. It is pretty heavyweight.  Like Thunderbird, it has features like calendar.
  • Sylpheed.  Sylpheed is very lightweight, but has things like plug-in and junk mail support and security features.  
Again because I wanted something lightweight, I decided to try Sylpheed.  I read that it did not by itself display HTML but there is an htmlview plug-in for this.  Unfortunately, in order to get the htmlview plug-in for the Chromebook environment I would have to build it. More on that later. As with the desktop environment choice, I could always decide to change to a different email client later.

Here is a sample screenshot I found of Sylpheed:



There is one potential concern about using an email client in the chroot environment. When the email contains HTML, my initial thought is to use the htmlview plugin. However, this will render HTML in the email client window. What if I want to actually follow a link to a browser? I want to view HTML generally in the chrome browser (in Chrome OS, not linux chroot).  But if I follow a link in the email client I cannot do this.  If this turns out to be a problem, I see two potential solutions:

  1. Write some type of plug-in or add-on to the email client which sends the URL over to the Chrome OS environment (probably using a socket talking to a Chrome OS browser extension)
  2. Use a web based email client instead in the Chrome OS environment. This could mean gmail or some other, possibly one requiring a subscription.

The Epson Workforce 610 Scanner


I have an Epson Workforce All-in-one printer/scanner/copy/fax machine.  I have been able to use my scanner wirelessly thanks to the availability of packages originally developed by Avasys for Epson, and now provided by Epson itself. Unfortunately, the pre-built packages are available for Intel architecture only and nor ARM. While there is source available for the iscan package (which I might be able to build), the one for network (wireless) support is binary only (no source).  At some point I think I will try to build the iscan package for ARM.

Building htmlview for Sylpheed


As mentioned above, in order to display HTML in emails received in Sylpheed, I need the htmlview plugin. I could wait for the Chromebook to arrive and build on the machine itself. That is certainly easiest. However, given the limited disk (SSD) space I was thinking I might be able to cross-compile it instead.  That is, compile it on my Thinkpad (which has Intel architecture) targeting ARM.  Obviously it is possible, as prior to the ARM machines being available this is what had to be done.

I found some posts on how to do this, including one explaining how to cross-compile the Chrome OS itself. Then I found the Sourcery CodeBench Lite Edition. This is a free tool for cross-compiling for ARM.  I installed this and read the guide describing how to set up the system to build for ARM on a machine where the root environment is for a different architecture. Basically, I had to make a sysroot environment to contain the ARM files and point the compiler and linker to those instead of the Intel files normally used for building on my laptop.  

It was a somewhat painful process to figure out how to take the Makefiles etc. that came with the htmlview package (which actually required you to compile Sylpheed as well) to work with the ARM files instead of native files. I had to grab libglib2.0-dev and libglib2.0 debian packages for armhf and point to them. After following the instructions and spending hours, I was able to get the files to compile for sylpheed, but the link step failed. It claimed there was non-relocatable code and that -fPIC needed to be used. But I checked and saw that every file I was compiling was compiled with -fPIC. It was actually pointing at the glib library, but AFAIK this was built with -fPIC as well. After many hours I gave up and resigned myself to building on the actual Chromebook after it arrived. I may go back and try cross-compiling at some point in the future.

Determining the Steps to Set Up Crouton Environment


I decided to list out my steps to install and set up the Crouton environment ahead of time, using existing blog entries I found that described the process. Of course, I wanted to use Enlightenment (e17), so I needed to adjust the steps accordingly. These are the steps I came up with:
  • Do a factory reset of chromebook: in chromium browser:
    • Click on Settings.
    • Scroll down to and click "Show advanced settings...".
    • Scroll down to Factory Reset option and do the reset.
  • Enable developer mode:
    • Hold down ESC and Refresh buttons and hit power button. You'll enter developer mode.
    • At the recovery screen, press Ctrl+D, agree to the prompt, and you’ll boot into developer mode.
  • Download crouton to chromebook (into ~/Downloads) from  http://goo.gl/fd3zc.
  • Ctrl-Alt-T to open crosh terminal
  • Type "shell" (without the quotes) and hit enter to enter shell
  • Install crouton using entrypted chroot for enlightenment (e17) for raring ringtail release: sudo sh -e ~/Downloads/crouton -t e17 -r raring
  • Wait 30 minutes or so for the install to complete and restart
  • Again Ctrl-Alt-T to open crosh terminal
  • Type "shell" (without the quotes) and hit enter to enter shell
  • To start: sudo starte17
  • To switch back and forth between Chrome OS and Linux desktop use Ctrl+Alt+Shift+Back and Ctrl+Alt+Shift+Forward.

Arrival

The Samsung Chromebook arrived on May 23, 2013. A discussion of the setup of the actual machine will be in another post.

2 comments:

  1. Hello,

    Thanks for posting this informative post. I had a question though. How many different desktop environments are included with crouton?

    I have downloaded the crouton file pack from "github". And I know that:

    "sudo sh -e ~/Downloads/crouton -r raring -t xfce" will install ubuntu 13.04 xfce environment.

    What happens if i replace "-t xfce" with "-t unity" or "-t gnome" in the above sudo command?

    I am new to this so please forgive me if this explanation is not clear.

    Thanks

    ReplyDelete
    Replies
    1. You can see the help text with the command:
      sh -e ~/Downloads/crouton

      To see the targets, enter

      sh -e ~/Downloads/crouton -t help

      This will list the targets. So alternative desktop environments are e17, kde, lxde, unity, x11, xephyr, xfce

      At least those are the ones I see from the version of crouton I downloaded months ago. If you download the latest, there may be more

      Delete