onemix 3 yoga review (featuring: Linux!)

Back to homepage
Back to blog index

I wanted a laptop-like device for connecting to various electronics projects, microcontrollers, 3D printers, etc. As a bonus, such a laptop would be very light in my backpack, and therefore perfect for travel, especially at hacker conferences where a laptop is most useful. So I got myself a Onemix 3 yoga.


I like this one for several reasons: But there are some problems:


Before buying it, I 3D printed a 'blank' that is the same size as the closed laptop, with corners rounded to roughly the same radius ( OnShape cad link here ).
With this, I could check where it would fit: It would have been cool if it could fit inside a (large) jeans front pocket, but I think that would require too much shrinking of the keyboard.
Also, of note: the keybord is roughly equally comfortable for me typing with all fingers or just my thumbs. Interesting.
Size comparison to a Thinkpad X230

linux compatibility

I settled on ubuntu budgie, since it's interface is good, and the compatibility is also good. (XUbuntu (my previous favorite) had problems with the touchscreen working at all, and also rotating the touchscreen when the screen rotates.) I made various tweaks, both fixes and personal preference improvements:
disable auto rotation ( reference ):
    sudo systemctl stop iio-sensor-proxy.service
    sudo systemctl disable iio-sensor-proxy.service
    sudo apt remove iio-sensor-proxy

Add desktop entry for restarting the budgie shell:
nohup budgie-panel --replace
The Budgie shell UI does occasionally glitch-out when changing screen resolutions and display densities. ( reference )

install tlp to help with battery life (it's still not that great in linux though)

disable the ubuntu alert sound ( reference )

firefox tweaks

enable firefox to use touch gestures (one finger scrolling) (reference: ArchWiki):
    echo MOZ_USE_XINPUT2=1 |sudo tee /etc/security/pam_env.conf
(command untested)


set dom.ipc.processCount to 2 and browser.preferences.defaultPerformanceSettings.enabled to false
and do ps -e | grep 'Web Content' to check actual number of content processes.
enable web render by setting gfx.webrender.all to true

resolution and display scaling

I found the display resolution menu in budgie to be not very good. so I wrote a script that generates desktop entries to set common display parameters that I need.
The built-in LCD reports that it's only supported resolution is the full 2560x1600, but I found that it can display much more, even non-integer multiples of width or height. If the resolution isn't the same aspect ratio, it displays black bars instead of stretching the picture.
# /etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
    Identifier "eDP-1"
    Modeline "1440x2560_60.00"  318.00  1440 1568 1720 2000  2560 2563 2573 2651 -hsync +vsync
    Modeline "1080x1920_60.00"  176.50  1080 1168 1280 1480  1920 1923 1933 1989 -hsync +vsync
    Modeline "800x1280_60.00"   85.25  800 856 936 1072  1280 1283 1293 1327 -hsync +vsync
    Modeline "720x1280_60.00"   77.50  720 776 848 976  1280 1283 1293 1327 -hsync +vsync


This is where a laptop this small really shines: I can have it on my bench, with stuff connected to it, and it doesn't take up too much space on the bench!


Maybe not a good general purpose laptop on it's own. Being able to dock through USB 3.0 type-C makes it a strong contender, though. It's not fast, but it's definitely usable. Much more usable than the common netbooks that pre-dated this (by a full decade at this point!).