A recent Chrome OS update left some of my Linux apps rocking 90s cosplay. Here's how I got back a more modern look.

Background

Graphical applications for Linux are typically built using one of several open source GUI frameworks, such as GTK, Qt, or wxWidgets. These are roughly analogous to Cocoa on macOS, or parts of the Windows API (or WinRT) on Windows. Some well known applications developed with these toolkits include VLC Media Player (Qt), GIMP (GTK), or Audacity (wxWidgets).

Since I spend most of my Chrome OS time in either Chrome, or Visual Studio Code (which is HTML 5, CSS, and JavaScript, wrapped with Electron), I didn't notice the change right away. However, both of the affected applications (Inkscape, and GIMP) were GTK-based, so I started there. Traditional Linux desktops (such as KDE, and XFCE; or GNOME systems with GNOME Tweaks installed) have a dedicated section in the settings app for choosing GTK themes.

Chrome OS does not include this in its settings, so I had to look elsewhere.

A Quick Fix

Fortunately, a thread on Ask Ubuntu pointed out that GTK settings can be modified in the Terminal app, through the gsettings utility. This was already installed (likely as a GTK dependency), so I was able to check the current theme with the following command:

gsettings get org.gnome.desktop.interface gtk-theme

This revealed that the currently set theme is called CrosAdapta. This is a Google-made fork of the Adapta GTK theme, which mimics the look and feel of Google's Material Design. Somehow, this package had been uninstalled from the system, so GTK presented its default, unstyled look. I was able to restore the previous appearance with:

sudo apt install CrosAdapta

A Note About GTK Themes

Recently, a group of independent developers released an open letter detailing some problems with the current state of theming on GTK. Many Linux distributions set their own unique GTK theme as the default. As a result, a single application may look completely different on Fedora Linux, Ubuntu, elementaryOS, or Chrome OS, with no input from the developers, often to the detriment of usability.

The default theme for GTK is called Adwaita, and is not installed on Linux Beta for Chrome OS by default. It can be installed with:

sudo apt install gnome-themes-standard

To set the theme, run:

gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"

However, it's worth noting that this did not work for me, initially. After I installed CrosAdapta, I tried installing gnome-tweak-tool, to see if I could set Adwaita that way. It worked, and I was able to see the changes reflected in gsettings. In fact, after using Tweaks initially, I was able to use gsettings to switch between the themes. It actually still worked, even after I removed gnome-tweak-tool (it added 275 MB!), so your mileage may vary.

Unfortunately, Adwaita on Chrome OS doesn't look quite right. Comparing it side by side with CrosAdapta, it's clearly a different theme, but it still doesn't look like Adwaita on GNOME. This could improve with future releases of Chrome OS, but it doesn't seem likely, since Google doesn't even offer an easily discoverable way to change themes.

Inkscape, allegedly using the Adwaita theme, under Chrome OS