After years of using tablets with Android based operating systems such as LineageOS, I got tired of not receiving updates after some time. Why should I throw away working hardware just because there is no software support anymore? So I went looking and finally got me a Microsoft Surface Go 2 to install Manjaro Linux with KDE Plasma on.
A Microsoft device for Linux? It's a better match than you might expect.
So here's what I've found.
As the Surface Go 2 runs on "regular" x86 hardware and is supported in the upstream Linux kernel, you can basically install any Linux distribution as you would on a laptop or desktop computer.
For the installation you will need a USB drive and a keyboard. The Surface Go 2 comes with only one USB-C port but USB-C docks should do (I've used the PinePhone docking bar). Without keyboard, you will not be able to complete the installation (see this Calamares issue on GitHub).
The linux-surface wiki on GitHub suggests to set up a dual boot configuration with Windows for easier firmware updates. However, this is only feasible with the version with a 128GB SDD. It is not possible to shrink Windows enough with the version with a 64GB eMMC. As I own the 64GB version, this article does not cover the dual boot setup.
Before you can start with the Linux installation on the Surface, some UEFI settings must be changed. Hold volume up and power to open UEFI. Then, open
Security and set
Secure Boot to
Disabled and in
Boot configuration move
USB Storage to the top.
There's nothing special about the installation itself – just download the ISO from https://manjaro.org/download/ and flash a USB drive (e.g. with balenaEtcher). Then, plug it into the Surface and hold volume down and power to boot from USB. If you own the version with 4GB RAM, make sure to enable swap.
The out-of-box experience when booting Manjaro Plasma will, quite honestly, not knock your socks off.
The first thing you'll see is an SDDM login screen which is not scaled well and always shows a mouse pointer – even if no mouse is plugged in. There's no virtual keyboard, so you cannot even login without a physical keyboard attached.
After logging in to Plasma, the scaling is set to 100% only which makes everything rather small and not well suited for touch input. X11 as the standard window system simply isn't made for touch screens. Also here, no virtual keyboard is available. Moreover, automatic screen rotation doesn't work.
Fortunately, all of this can be fixed easily.
To enable automatic screen rotation, install
stablebranch had only Plasma 5.24.6 when I wrote this article, I switched to
unstablewith Plasma 5.25.5 (see Manjaro Wiki - Switching Branches).
The first thing you want to do is install
plasma-wayland-session and select
Plasma (Wayland) on the login screen (SDDM) to use it. Next, set the scale to 200% in System Settings > Display and Monitor > Display Configuration.
If a few apps are open, it can happen that the panel contains too many things and the app icons become very tiny (especially in portrait mode). To avoid this, move unnecessary panel icons (such as virtual keyboard, workspaces etc.) into the overflow menu of the system tray. This is done by setting the entry to
Hidden in the
Entries page of the system tray settings.
Apart from those general settings, which are more or less necessary to use Plasma with touch input, I decided to tweak it a bit more towards an experience which feels more natural on a tablet.
As this is mainly personal preference, it might not be for you (especially if you plan to use a mouse sometimes).
I don't think that it's too useful to have floating windows or multiple, tiled windows on a small screen. So if I would maximize my windows all the time anyways, why not have this done automatically. Therefore, I added a rule in System Settings > Window Management > Window Rules which maximizes all normal windows (you don't want this for dialogs etc.).
In my opinion, the most important feature is touch gestures. This can be enabled in System Settings > Workspace Behavior > Touch Screen: I configured it such that swiping down from the top opens the application launcher and swiping up from the bottom opens the overview. This works with the regular application launcher, but also with custom widgets. I use Stupid Simple Launcher, and it's just great on a touch screen.
NOTE: The application launcher gesture requires that you're using an application launcher widget and it has a keyboard shortcut set (see KDE bug 419188).
For more information on gestures, check out the KDE Community Wiki.
As I could then switch to a different application or close an application using the overview gesture, the window list in the panel was not required anymore and I removed it. Also, I chose to hide the window title bar by adding a window-specific override for all windows (regular expression
.*) in System Settings > Appearance > Window Decorations. This frees up some precious vertical space.
Finally, I moved the panel to the top and made it small which looks a bit like an Android-ish status bar.
The video below showcases this setup. You will need some imagination for the swipe gestures as it's only a recording of the screen.
Plasma Mobile Phone Homescreen
Alternatively to the application launcher widget, it is also possible to use the Plasma Mobile Phone Homescreen. After installing
plasma-mobile from the AUR, it can be activated in the desktop settings > Configure Desktop and Wallpaper > Layout "Phone Homescreen".1
As the application launcher widget is not needed anymore with this setup, you might want to remove it from the panel and map the swipe down gesture in System Settings > Workspace Behavior > Touch Screen to "Show Desktop" instead to easily reach the Phone Homescreen.
Here's some footage:
I find the Phone Homescreen to be a bit cluttered – especially with the default applications from Waydroid (see this GitHub issue). To improve this, unused applications can be hidden by adding
NoDisplay=true to the
Virtual Keyboard (Maliit)
The reference virtual keyboard for Plasma, which is also used for Plasma Mobile, is Maliit. It can be installed as
maliit-keyboard. Activate it in System Settings > Input Devices > Virtual Keyboard.
There's no GUI to configure Maliit for Plasma desktop yet (see this GitHub issue). Therefore,
gsettings must be used instead.
To add/remove languages run e.g. for German keyboard layout:
gsettings set org.maliit.keyboard.maliit enabled-languages "['en', 'de', 'emoji']"
Auto-completion can be very annoying at times. Especially, if it replaces your commands in Konsole with some entry from the dictionary. I turned it off with:
gsettings set org.maliit.keyboard.maliit auto-completion false
For an overview of all available settings, see the schema on GitHub or
gsettings list-keys org.maliit.keyboard.maliit.
The login screen settings can be ìmproved to achieve a more touch friendly user interface. Edit
/etc/sddm.conf to do so.
Enable the virtual keyboard by removing
InputMethod=. There is a
/etc/sddm.conf.d/virtualkbd.conf which should enable the virtual keyboard by default as described in ArchWiki/SDDM but the empty setting in
/etc/sddm.conf overwrites it. It seems that the intention is to have the virtual keyboard by default and a bug in the packaging avoids it.
To scale the interface, add
-dpi 144 to
ServerArguments. The correct value for the 10.5" screen with a resolution of 1920x1280px would be 220dpi but then the complete layout is messed up and you get overlapping texts.
NOTE: There's a setting
EnableHiDPI=true but that didn't work for me.
Finally, hide the mouse cursor with
-nocursor appended to
ServerArguments. I would expect that this happens automatically (see this GitHub issue).
I will not deep dive into an evaluation of applications here as this would exceed the scope of this article. In general, LinuxPhoneApps contains a list of touch friendly apps which work on small screens. Those should be good choices for tablets as well. Additionally, several desktop apps which can't really be used on phones might still be okay to use on a tablet.
NOTE: Plasma 5.25.5 fixed a bug where GTK popup menus (such as the Pamac hamburger menu) didn't accept touch clicks (see KDE bug 452967). So be sure to run at least this version if you plan on using GTK apps.
If you run Firefox with X11/XWayland, touch input (especially scrolling) just isn't fun. However, it works very decently with Wayland. To enable this, add
While you will definitely feel that it's not made for screens of this size, it still is big enough to be quite usable.
Waydroid can be used to run Android apps on Linux with Wayland.
waydroid from the AUR and run
sudo waydroid init. After
sudo systemctl start waydroid-container, start Waydroid with
waydroid show-full-ui. It is also possible to install apps directly, e.g. F-Droid via
waydroid app install F-Droid.apk.
If closing the Waydroid window does not work, stop it with
waydroid session stop.
The biggest issue with Waydroid is that screen rotation does not work properly yet: Waydroid keeps the original width/height of the window before rotating it (see this GitHub issue).
Plasma Mobile Gear
The Plasma Mobile Gear package in the Manjaro community repository is the very outdated version 21.05 (current is 22.06). For newer versions, the AUR is required.
I had hoped that QMLKonsole would provide a similar experience as on the PinePhone and that I could use it as a touch friendly terminal application. Unfortunately, that's not the case: I'm missing the ribbon with the tab and arrow keys. Additionally, Maliit doesn't open again after it has been closed once.
The main issue in Plasma is that not all controls fit on the screen properly with 200% scaling. Most often, this happens in portrait mode. Examples are Pamac but also the Plasma Settings (e.g. SDDM page). Similarly, there is text which overlaps buttons when editing the panel (see KDE bug 450892).
Right after login, a mouse cursor is shown. It disappears when touching the screen for the first time (see KDE bug 330006).
The search field in the overview effect, which I open with the swipe up gesture, does not open the virtual keyboard (see KDE bug 457583).
It would often be useful to have arrow and tab keys (e.g. in a terminal). It is possible to swipe up and down to navigate the history in Konsole after a long press on space but that's not really intuitive.
With the setup described above, the SDDM login screen is very usable on a touch screen. The only small improvements I would wish for are related to the virtual keyboard: It would be nice if it would open automatically when selecting the password field (see this GitHub issue). Moreover, I would like to use Maliit (instead of qtvirtualkeyboard) to have the same virtual keyboard as in Plasma.
The cameras do not work out of the box. According to GitHub/surface-linux, the cameras should work with their kernel patches but I didn't bother digging into it because I don't need them.
The PinePhone docking bar works. I've used it to connect a USB stick, mouse, keyboard and an external screen.
Can you turn a Microsoft Surface Go 2 into a Linux tablet with Manjaro Plasma?
I'll say: Yes, you can. If you can use it as a daily driver, will, of course, depend heavily on the applications you need.
Do not expect a touch experience which is on par with Android or iOS, though (well, at least yet). With the right settings, it feels like a tablet (if that sentence makes any sense) but there are still several places where you will notice that you're running an operating system/desktop environment which was made for larger screens. However, none of those had a big impact on usability in my testing – it mainly meant I had to turn to landscape to reach some buttons. Also, I'm quite confident that those remaining issues will get sorted out rather sooner than later. Generally, tablets will certainly profit from the developments around Linux on phones (like the PinePhone) as well.
With desktop environments like KDE Plasma running nicely on x86 tablets, it would be great to see distributions supporting this more. This means mainly a virtual keyboard included by default and touch friendly SDDM settings but it starts with the installation already. From what I've seen so far, only KaOS have added a virtual keyboard to their Calamares based installer.
I'm looking forward to what the future will hold.
The main purpose of this article is to provide some insight on the current state of (Manjaro) Linux with KDE Plasma on the Microsoft Surface Go 2 when used as a tablet. Moreover, it shall describe the required or useful settings for those who'd like to try it out themselves.
Therefore, I hope that it's not written once and then set in stone forever but rather evolves over time.
So, please, if you have any suggestions or questions, head over to Framagit/LINMOB.net and open a merge request or issue.