One Month with Pixelbook and Chrome OS
It has been about one month since I have started using Pixelbook. There are several reviews on experiences about the device and Chrome OS, but I am using Emacs on the operating system, and I did not find many reviews on Chrome OS / Chromebooks from an Emacs user’s point of view. I will write a post on my actual experiences with the device and the operating system.
Before I got the machine, I had been using a desktop computer as well as an affordable laptop computer which was manufactured by a Chinese company. Both machines were installed an Arch-variant Linux operating system1. The desktop computer is pretty snappy since it has Core i7, but the laptop has a 5th gen Core M processor and 4 GB of RAM, of which the performance I was often unsatisfied with even when I was using Emacs Org mode. Perhaps my Emacs configuration was not well-tuned for performance; I spent little time on optimizing the configuration. However, I was satisfied with the performance of the desktop computer. Either the CPU or the RAM could be insufficient for my use.
I was also using an Android tablet. It was convenient for media consumption. I read news on Reddit and Feedly, listened to music on Spotify, and watched video on Netflix. I also sometimes took notes using Orgzly, an Org mode application for Android, and synchronised files using Syncthing. However, I was unsatisfied with the fact that I cannot write code instantly on the device using Emacs.
A modern, high-end Chromebook like Pixelbook can solve these issues. The lowest model of Pixelbook has a 7th gen, energy-efficient version of Core i5 processor and 8 GB RAM, which is supposed to be fast enough (or maybe even an overkill) for using Emacs and a web browser at the same time. Chrome OS now supports Android applications as well as Linux containers, so it can handle all common tasks for programmers on a single device.
My use cases of the Pixelbook
After using the device for a while, my device usage has changed as shown in the table below. I was using both a Linux computer and an Android device for those tasks, but Pixelbook has replaced them for the most part:
|Notes and tasks||Emacs Org mode||Orgzly||Emacs Org mode (Linux)|
|Reddit (web)||Joey||Joey (Android)|
|Pocket (web)||Android app||Pocket (web)|
|Netflix||-||Android app||Netflix (web)|
|Spotify||-||Android app||Spotify (Android)|
|E-books (EPUB)||-||Moon Reader Pro||Lithium (Android)|
I will describe the details in the following subsections.
Note: I am currently using Beta channel of Chrome OS.
This is one of my primary computing needs. I switched from Vim to Emacs about two years ago. I am not sure if Emacs is better than Vim for coding, but it is more versatile, and that is why I have been working on tweaking Emacs. I wanted an application for ruling all computing tasks.
On Chrome OS, Emacs can be installed as an application on a Linux container, i.e. Crostini. You can install it using the package manager of a Linux distribution you are using, e.g. Debian by default, but I installed it using Nix, as I described in the previous blog post.
Nix for Linux packages
Nix is a purely functional package manager. It is distribution-agnostic, supports system rollback, and provides a decent set of Linux packages through nixpkgs, so it is convenient for configuring a development environment on Linux.
I am not using a NixOS container on Chrome OS. Instead, I am using Nix as an extra package manager on Debian. This may change in the future, but it works well for now. I am also using home-manager to manage configuration files in the home directory, which works flawlessly on Debian on Chrome OS.
As already described, Chrome OS supports Android applications. Android applications are especially useful in tablet mode on Chrome OS since they support touch actions like swiping. I am currently using the following Android applications:
- Joey, a Reddit client. This Android application is handy for skimming Reddit posts, as it can display quite a few posts on the 12.1 screen of Pixelbook.
- Pocket. You can use Pocket on the web browser, but the Android application enables you to add an article to the queue from other Android applications like Joey.
- Spotify for listening to music/BGM.
- Lithium, an EPUB reader. I was using Moon Reader for this purpose, but I switched for a random reason. It offers a nice experience in tablet mode.
- Xodo, a PDF reader.
- BlueMail for checking and reading incoming e-mail messages.
As with real Android devices, these apps are handy for mostly consuming information, but not for creativity. My current usage of Android apps on Chrome OS is quite naive. For example, I haven’t integrated the ebook library on the Android side with my calibre library.
Chrome OS has Google Chrome browser. It is a full-fledged desktop web browser. I had switched from Chromium to Firefox, but since I started using Chrome OS, I switched back to Chrome due to its tight integration with the platform.
Even though Android apps tend to offer a better user experience than web apps especially in tablet mode, I stick with the browser for some applications.
- Feedly: The Android application of Feedly is worse on Chromebooks, because they has limited features for feed moderation and don’t support keyboard well. The web application doesn’t support touch gestures, but it is not a problem at all. To add an article to Pocket on the web browser in tablet mode, simply long-hold on its link and choose a Pocket extension from the context menu.
- Netflix: The web app is so good that I don’t need an Android version. The only complaint is that it is hard to switch to full-screen mode and vice versa when the device is in tablet mode.
- Pocket: I have the Android version installed, but I seldom use it for reading articles. Somehow I prefer the web application of this service.
What Pixelbook can’t do
Pixelbook has almost replaced both the Linux laptop and the Android tablet, but there are some situations where I still want to use those devices. This comes from the following limitations of the device and the operating system:
- Chrome OS currently has limited support for external file systems. It can access some file systems on a USB storage, but it is unable to unlock LUKS-encrypted partitions. Almost all of my physical storage devices are encrypted in LUKS, so I can’t use the Chromebook to access files stored in them. I need a Linux machine for this purpose.
- Pixelbook doesn’t have a SIM slot and lacks 4G/LTE connectivity. You can’t read news on train without Wi-Fi, unless you have a dongle. However, you can write code instead. When I want to read news on train, I use either the tablet or my phone.
What is good
The virtue of Chrome OS is its simplicity and capability of running applications on multiple platforms. I already described the capability, so this section is mostly about the hardware of Pixelbook. My former laptop computer had a rather outdated form factor from 5-10 years ago, so this is not a comparison with latest flagship products.
As quite a few reviewers already noted, the form factor of Pixelbook is excellent. It is thin and lightweight. Like many modern laptops, it is convertible. The device is too heavy to hold with one hand for more than a minute, so it should be considered basically a laptop which can occasionally turn into a tablet. I use it in tent mode for watching films and reading e-books.
Keyboard and touch pad
As other people noted, Pixelbook has a decent full-size keyboard. It is far better than I expected. It is silent but offers an excellent typing feel. I might like the feel even better than a desktop mechanical keyboard around $100. Like other modern laptop computers, the keyboard is backlit, which is helpful at night.
It lacks some physical keys such as function keys, Insert, Delete, Home, and End. These keys are substituted with combinations of other keys. This is not a serious problem, as I type on Emacs for most of the time. It is a little confusing when I use the web browser. I use Home and End keys quite frequently in text box.
The touch pad is another decent piece of hardware on Pixelbook, and gestures supported on Chrome OS boosts productivity on the web browser and other apps.
The spec sheet of Pixelbook claims that the device offers a battery life of up to 10 hours. According to my actual use, it doesn’t seem to last for that long. If I use the device from the morning, I begin to worry about the battery status in the afternoon. However, it is much better than my previous laptop computer had, so this is an upgrade.
Charging from a USB Type-C port
Pixelbook has a USB Type-C port on each side of the machine, i.e. both on the left and on the right, which can connect to a charger. This is quite useful.
What is not bad
At first, I thought window management on Chrome OS could suck. I am used too highly customizable tiling window managers on Linux such as XMonad and EXWM. Any desktop environments for typical users can’t beat those window managers in efficiency. I knew that Chrome OS supported window splitting in tablet mode, but I didn’t exactly understand what window operations are supported in desktop mode.
It turns out that Chrome OS supports arranging floating windows as well as basic tiling. In desktop mode, you can use
Alt + [ and
Alt + ] to arrange a window on the left and right half side of the screen respectively, so it is easy to display two windows at the same time. This is not bad, considering the fact that the 12.1 inch screen of Pixelbook is not large enough to accommodate more than two columns.
One complaint is that it doesn’t seem to have a keyboard shortcut for toggling the maximizing status of a window. Another issue is that Chrome OS doesn’t support multiple workspaces at present, but they are going to address this issue eventually.
While Pixelbook is a modern, decent hardware device, the platform seems to have issues in software aspects.
Bluetooth support on Chrome OS might be better than other desktop Linux distributions, but it is worse than Android. It can pair with all of my Bluetooth devices, including a headset and a mouse. It works for some time. However, it frequently disconnects with the headset, which sucks for music, and even sometimes stops functioning for all the devices. This seems to be a common issue with Pixelbook, even though some users have never experienced the issue. When it happens, I either log out from the user session or restart the machine, which is a little annoying.
Linux apps starts slow
Linux apps on Chrome OS run inside a container. I don’t have to start a container beforehand, but an initial startup time takes long. A Linux application starts very slowly if it is the first application in the container. Once the first application starts, other applications start instantly, though. Since I almost always use Emacs, I plan to start Emacs as a daemon for a faster startup time.
Restarting a container can be troublesome. It is recommended that you use
run_container.sh script for starting a container rather than
lxc command. Otherwise, restarting the whole device solves most issues, which is annoying. This Reddit wiki article is useful for managing Crostini containers on Chrome OS.
Frame management in Emacs
Chrome OS uses Wayland, not X.Org. X.Org applications are supported via XWayland. If you use Emacs on Chrome OS, it must be noted that frame-related functionality of Emacs is limited on Chrome OS. You can manipulate Emacs frames from Chrome OS (using touch screen, touch pad, or an external mouse), but not from within Emacs. The following is a list of limitations I found on Chrome OS:
- You can select a frame using
select-frame-set-input-focus, but the focused frame isn’t raised, so the function is useless.
toggle-frame-fullscreendon’t work. You can’t use keyboard to maximize an Emacs frame!
framemovedoesn’t work either.
- You can’t even use external tools like
wmctrlfor window manipulation.
You can use the default keyboard shortcuts, i.e.
Alt + Tab and
Alt + Shift + Tab, of the operating system to select windows, which is not bad, but it seems to be impossible to completely reproduce an existing Emacs workflow on Chrome OS. I created frame-workflow package for Emacs last year, but the package is now much less useful for me, since it can’t select an existing frame. On Chrome OS, it can only be used for creating new frames.
The issue really needs to be addressed, but I have no idea how to fix it. Perhaps I have to write a Wayland utility and/or dive into the source code of Emacs, which I don’t think I will work on any time soon.
Pixelbook has been around for more than one year, and it may not be the best Chromebook any more. In fact, some more recent Chromebook products have a more powerful Core i5-8250U processor. Some people also consider the wide bezels of Pixelbook ugly. On the other hand, Pixelbook is sold at a discounted price frequently now, which makes the product more affordable than ever. For me, Pixelbook is an overall significant upgrade from my previously owned machine, so I am satisfied with its design and performance. I will live with this device for the upcoming few years.
While I was impressed by the hardware of Pixelbook, I noticed that Chrome OS seems to have some caveats, which makes the platform inferior to other major Linux distributions for desktop use. If you only use Linux applications, a classic Linux distribution installed onto a Windows machine would be better in terms of functionality, performance, and software flexibility. I love the machine and the platform, and I now spend most of the time in my personal life with the machine, but Chrome OS needs further development to replace existing desktop Linux distributions.
I was using Arch Linux and Manjaro. I was also trying out Fedora Workstation just before I started using the Chromebook. ↩︎