The advent of Linux apps on Chromebooks is a relatively new phenomenon that feels like its been around for a long time. If you remember, the feature has only been around for the last few versions of Chrome and only began garnering attention in May of 2018 around Google’s yearly developer event: I/O.
With that in mind, the rapid development has been impressive. It took Android far longer to shake out the major bugs and become relatively usable. Linux apps at this point are working quite well with decent file support and relatively simple setup – assuming you know your way around a Linux terminal. Heck, even if you don’t, getting a software center installed is pretty simple for most people and can give a level of comfort to users not so familiar with the terminal.
One nagging issue has been pretty problematic for me thus far, however: display scaling. The main app I want to get back to using on a regular basis is Inkscape. Though I’ve found Gravit Designer to be a fantastic replacement, there are a few things Inkscape can do that Gravit simply cannot yet. An important example is the ability to open EPS, AI and PDF files with high levels of consistency. If I’m naming things I miss with Gravit, exporting high-res photos is another. With larger images or heavy vectors, Gravit just chokes on export for me sometimes.
Anyway, this isn’t really a post about Inkscape vs. Gravit, it is about Chrome OS, Linux Apps, and display scaling.
On a device like the Pixelbook where the UI is always being scaled due to the high number of physical pixels on the screen, display scaling is really important. If you looked at the entire UI on the Pixelbook without scaling, everything would be so small you would need your face just a few inches from the screen to actually read anything.
While Chrome OS handles all this with aplomb, the Linux container has not embraced the same abilities. When I open up an app like Inkscape on a high resolution display like the Pixelbook, all the UI elements are insanely small. So small, in fact, that I can’t really use it unless I connect to to an external display that needs no display scaling.
We’ve come across a few interesting workarounds for all this, but it looks like an official fix is on the way and being implemented. If you check this commit and this one as well, you can see the following language:
vm_tools: Launch apps with display scaling.
This CL adds an parameter |display_scaling| in
LaunchContainerApplicationRequest, which will be passed to the container
and used to launch apps with the given display scaling setting.
dd a display density parameter.
This change add a display density parameter to
This is used to enlarge Crostini windows for some older Linux apps that
don’t show well on HiDPI displays by user preferences.
These couple changes signal work being done for the Linux containers to be able to detect display scaling settings from Chrome OS and then pass them on to the container and apps within it. Instead of needing to set anything or change a setting, soon we’ll have Linux apps adopting the same display scaling Chrome OS leverages for everything on screen.
I tend to keep my display one or two notches more dense than default, so I run my Pixelbook at the effective 1333×889 (90% scale) or 1500×1000 (80% scale), so I’m excited to see Linux apps get the ability to poll my current display settings and then adjust accordingly. That’s the point where my workflow might finally go back to Inkscape.