Mijn tablet-OS-ervaring verfijnen: Surface Go 2 met 4G/LTE, Debian GNU/Linux en i3wm gebruiken

28 sep. 2020

Eerder dit jaar probeerde ik mijn eigen tablet-besturingssysteem te maken door Debian GNU/Linux te installeren op een Microsoft Surface Go tablet. Ik leerde veel over wat ik fijn vind aan tablets. Maar ik gaf nog steeds de voorkeur aan mijn iPad Pro, vooral vanwege de gepolijste gebruikerservaring. Deze keer ben ik begonnen mijn tablet-software te verfijnen om mijn iPad te vervangen.

Linux op (Surface) tablets

Als je erover denkt om Linux op een tablet te installeren: je bent niet de enige. Mijn eerdere bericht over het installeren van Debian GNU/Linux op Surface GO kreeg enorm veel aandacht. Blijkbaar zijn velen van jullie op zoek naar een alternatief voor de gesloten besturingssystemen die meestal op tablets zijn geïnstalleerd (zoals iPadOS, Android of Windows 10S).

Microsoft Surface hardware en Linux

Zoals de geschiedenis vol zoete ironie zit, is het Microsoft die eigenlijk behoorlijk knappe hardware maakt die goed werkt met Linux. Hun Surface-lijn omvat verschillende laptops en tablets. De “SurfaceLinux” reddit-pagina staat vol met interessante gebruikersverhalen die het bekijken waard zijn. Mensen doen dit en je zou het zelf ook kunnen doen.

Microsoft Surface-hardware is populair omdat het echt fijn is

Eerste poging: Surface Go (versus iPad Pro)

Na het installeren en aanpassen van Debian GNU/Linux op Surface Go, genaamd “Willem OS”, probeerde ik er mijn hoofdcomputer van te maken. Als je een frequente bezoeker van mijn blog bent, weet je dat ik al jaren iPads en tablets als hoofdcomputer gebruik. Uiteindelijk vond ik mijn eerste versie van “WillemOS” niet goed genoeg: iPad Pro was lichtjaren vooruit als het ging om een gepolijste gebruikerservaring.

Van deze eerste poging heb ik veel geleerd, het leidde tot een beter begrip van wat ik zoek in een tablet-ervaring. Ik ben op zoek naar eenvoudige, maar veelzijdige software om op mijn tablet te draaien.

Maar "eenvoudig" is eigenlijk heel moeilijk te bereiken. Om dingen echt eenvoudig te maken, moet je hardware en software naadloos integreren. Apple doet dit goed, iPad Pro biedt een geweldige gebruikerservaring omdat:

verdergaan waar je gebleven was: het slaat alles op wanneer je hem in een tas stopt, en is (direct) klaar om verder te gaan wanneer je hem eruit haalt. Geen handmatig opslaan of (her)opstarten vereist.

internet overal: het schakelt automatisch tussen wifi en 4G/LTE netwerken, je hoeft niets te doen, dit 'werkt gewoon'

elke richting en positie: iPad werkt prima zonder extern toetsenbord of muis, waardoor je hem in veel verschillende scenario's kunt gebruiken (het scherm past ook automatisch de helderheid en witbalans aan aan je omgeving!)

Het blijkt dat het moeilijk is om deze dingen naadloos te laten werken met Debian GNU/Linux op Surface. Mijn eerste tablet-OS vereiste veel handmatige interactie en was daarom omslachtig in vergelijking met iPad Pro.

Tweede poging: Surface Go 2

Microsoft heeft dit jaar een nieuwe Surface Go-tablet uitgebracht, de Surface Go 2. Deze heeft een snellere processor (tot 64%!), dunnere randen en een verbeterd scherm. Het is een zeer behoorlijke upgrade die de Surface Go 2 qua hardware veel meer op gelijke voet brengt met de 11-inch iPad Pro. Voor mijn tweede poging om de ultieme tablet-ervaring te creëren, besloot ik het topmodel Surface Go 2 te gebruiken:

10.5” touchscreen (1920x1250, 220PPI), 3:2 beeldverhouding, Corning® Gorilla® Glass 3

Intel Core m3-processor (8e generatie)

8GB RAM

Wifi 802.11a/b/g/n/ac/ax

LTE Advanced (Qualcomm® Snapdragon™ X16 LTE Modem)

Bluetooth 5.0

Intel UHD Graphics 615

Afmetingen: 245 mm x 175 mm x 8.3 mm

256GB SSD

512GB MicroSDXC-kaart

1x USB-C en 1x Surface Connect-poort

Microsoft Surface Go 2 met zwart type cover en Surface Pen - een mooi stuk hardware!

Debian GNU/Linux installeren op Surface Go 2

De Surface Go 2 is erg vergelijkbaar met zijn voorganger als het gaat om het installeren van een basisinstallatie van je favoriete GNU/Linux-distributie. Ik volgde mijn eigen stappen van de originele Surface Go-installatie hier.

Het installeren van Debian GNU/Linux op Surface Go 2 is erg vergelijkbaar met de originele Surface Go

Kortom, je moet de volgende stappen nemen bij het installeren van Linux op je Surface:

1) Update Windows 10 en installeer alle firmwarepatches/updates

2) Maak een opstartbaar installatiemedium met je favoriete GNU/Linux-distributie

3) (Optioneel) sluit een bekabelde ethernetverbinding aan

4) Start de Surface op vanaf de USB-drive

5) Installeer het besturingssysteem met behulp van het installatieprogramma

6) Verfijn en optimaliseer de software-ervaring

Debian GNU/Linux met i3wm (“aka WillemOS”) draaiend op Surface Go 2

De ervaring verfijnen

De laatste stap van de installatie is waar je het verschil kunt maken tussen een fantastische en een waardeloze gebruikerservaring. Om mezelf te “aanmoedigen” om bij dit experiment te blijven, besloot ik mijn iPad Pro te verkopen: de schepen verbranden (want er zou geen weg terug zijn)!

Je iPad Pro verkopen is makkelijk als je de originele dozen bewaart - ik verkocht de mijne in slechts een paar dagen: mezelf dwingen om de nieuwe tablet te gebruiken!

Op een klein scherm is het perfect logisch om apps op volledig scherm te draaien. Ik weet dat het conventionele pc-concept van het beheren van afzonderlijke applicatievensters niet de beste gebruikerservaring biedt op een kleine tabletcomputer. Daarom besloot ik een tiling window manager te proberen: i3wm.

Tiling window manager

Het principe van een tiling window manager is simpel: apps nemen zoveel ruimte in als er beschikbaar is. Dit betekent dat als je maar één app draait, deze volledig scherm zal zijn. Twee apps draaien gesplitst scherm, enz. Je kunt regels definiëren die de rangschikking van apps automatiseren. Met behulp van sneltoetsen kun je snel schakelen tussen apps. Je hebt misschien wat tijd nodig om uit te zoeken wat het beste voor jou werkt wanneer je een tiling window manager gebruikt, maar uiteindelijk kan het je veel tijd besparen!

Firefox (links) en een MOSH/tmux terminalvenster (rechts) in splitscreen met behulp van de i3wm tiling window manager

Werkruimten

Een andere krachtige functie van i3wm is dat je verschillende 'werkruimten' kunt hebben. Ze zijn een gemakkelijke manier om groepen apps te organiseren die samen draaien. Ik gebruik verschillende werkruimten voor verschillende dingen die ik doe. Een gebruikelijke aanpak is om de webbrowser op de ene werkruimte te plaatsen, mailtoepassingen op een andere, en degene waarmee je werkt, op de derde.

Meerdere werkruimten zijn erg krachtig: het is alsof je van tv-zender wisselt

Het mooie van meerdere werkruimten is dat één app (bijv. je browser) meerdere instanties op verschillende werkruimten kan draaien. Dit maakt veel verschillende combinaties van apps mogelijk. Dit is echt waar de i3wm window manager veel beter is dan iPadOS's kijk op multitasking.

De i3wm window manager ondersteunt externe monitoren zeer goed, met hetzelfde concept van een werkruimte. Je wijst eenvoudigweg één of meerdere werkruimten aan om weergegeven te worden op het extra/externe scherm. Dit werkt goed met de Surface Dock en USB-C-naar-HDMI-accessoires voor Surface. Multi-monitorondersteuning is echt geweldig.

Drie vingers vegen om van werkruimte te wisselen - een trucje van macOS - met fusuma kun je multi-touch gebaren gebruiken in i3wm

Iets wat je zou moeten proberen is om fusuma te gebruiken om gebaren met drie vingers op het trackpad mogelijk te maken. Als je ooit op een MacBook hebt gewerkt, weet je dat de multi-touch trackpads nuttige gebaren mogelijk maken om van bureaublad te wisselen (of werkruimten in i3wm). Het werkt echt goed!

Opslag

Voor het beheren van mijn foto's met Shotwell wilde ik serieuze opslag op mijn tablet. Hoewel ik het topmodel Surface Go 2 heb met de 256GB SSD-schijf, heb ik de MicroSD-kaartsleuf gebruikt om mijn opslagcapaciteit met nog eens 512GB uit te breiden. De MicroSD-kaart is langzamer dan de geïntegreerde SSD, maar voor bestanden die je niet elke dag/uur/minuut leest is het snel genoeg.

Uitbreiding van de opslag op een Surface Go 2 is mogelijk met een MicroSD-kaart

Mijn Debian GNU/Linux-installatie had geen problemen met het herkennen van de MicroSD-kaart. Ik heb de hele MicroSD-kaart versleuteld om te voorkomen dat mijn foto's uitlekken als ik mijn kaart ooit zou verliezen. Je moet hier (altijd) rekening mee houden, neem passende maatregelen om je gegevens te beschermen en te back-uppen!

Connectiviteit wifi/4G/LTE

Na het installeren van de 'non-free' draadloze firmware in Debian werkt de wifi goed op Surface Go 2. Het aan de praat krijgen van de LTE/4G was een stuk lastiger! Om de een of andere reden startte de WWAN-verbinding niet, ook al had ik een werkende simkaart in de Surface Go geplaatst. Om een of andere mysterieuze reden startte de modem niet correct, 4G/LTE werkte niet!

De simkaart installeren in de Surface Go 2 tablet

Een van de geweldige dingen van iPad is dat het de connectiviteitslogica van iPhone deelt. Het beheert automatisch verschillende draadloze netwerken en mobiele breedbandverbindingen. Ik wilde dat dit ook op mijn Linux-tablet zou werken!

Toen ik op zoek was naar een aanwijzing om 4G/LTE aan de praat te krijgen, keek ik naar rapporten over Surface Pro. De Surface Go 2 is technisch gezien erg vergelijkbaar met de grotere Pro. Ik bedacht dat ik kon leren van de inspanningen van mensen met mobiel breedband op de Surface Pro. Na vele uren zoeken en verschillende dingen proberen, vond ik deze oplossing om 4G aan de praat te krijgen op Surface:

Het resetten van de buffers van de Surface breedbandmodem zorgde ervoor dat deze werkte met Debian GNU/Linux!

Je kunt de Network Manager (en Modem Manager) gebruiken om connectiviteitsbeheer onder Linux te automatiseren. Standaard geeft het de voorkeur aan wifi-verbindingen boven mobiel breedband. Je kunt het automatisch laten verbinden via 4G/LTE als er geen wifi beschikbaar is. Het werkt nu erg goed in combinatie met de Surface Go 2 hardware!

Network Manager (nm-applet) schakelt automatisch tussen wifi- en mobiele breedbandverbindingen

Slaapstand/Sluimerstand/Hervatten

Nog iets waar een iPad-gebruiker nooit aan denkt, is hoe goed Apple dingen voor elkaar heeft gekregen als het gaat om slaapstand en hervatten. Als je een iPad hebt, kun je hem dagenlang in standby-modus laten staan, maar hij is altijd heel snel om verder te gaan waar je gebleven was als je hem weer oppakt.

Om mijn Surface met GNU/Linux hetzelfde te laten doen, had ik een manier nodig om snel in slaapstand te gaan en te hervatten. In de Linux / pc-wereld zijn er in principe vier energiemodi:

aan: apps draaien. Systeem staat volledig aan, verbruikt veel stroom

slaapstand (naar RAM): app-statussen worden bewaard in het RAM-geheugen. Systeem staat nog steeds aan, maar elke component wordt zo veel mogelijk uitgeschakeld, verbruikt nog steeds stroom (+/- 10% batterijverlies per uur in mijn geval met Surface Go 2)

slaapstand (naar schijf) / sluimerstand: app-statussen worden bewaard op schijf. Systeem is uitgeschakeld en verbruikt geen stroom

uit: apps zijn gesloten. Systeem is uitgeschakeld, er wordt geen stroom verbruikt

Om “direct verder te gaan waar je gebleven was” moet je app-statussen bewaren. Het snelst (en vrijwel direct) hervatten is mogelijk wanneer de app-status is opgeslagen in het RAM-geheugen. Het probleem met RAM-geheugen is dat het stroom nodig heeft om zijn waarde te behouden. Zodra de stroom uitvalt, gaan app-statussen verloren.

Het alternatief is om naar schijf te sluimeren (of in slaapstand te gaan), waarbij de status wordt opgeslagen op het permanente opslagapparaat in de computer. Hierdoor kan de computer volledig worden uitgeschakeld. Het probleem met sluimeren naar schijf is dat het hervatten langzamer is en dat je versleutelingswachtwoordzinnen opnieuw moet invoeren voor volledige schijfversleuteling.

Het goede nieuws is dat moderne GNU/Linux wordt geleverd met systemd waarmee je kunt configureren hoe de computer omgaat met slaapstand en hervatten. Je kunt je tablet zo configureren dat hij eerst naar RAM sluimert (waardoor direct hervatten mogelijk is) en vervolgens, na een bepaalde tijd, naar schijf sluimert.

De systemd-instelling "AllowSuspendThenHibernate" in sleep.conf stelt je in staat om een time-out te definiëren tussen suspend to RAM en suspend to disk (slaapstand)

Op een normale werkdag sta ik (heel) vroeg op om vanuit huis aan mijn meest uitdagende projecten te werken. Dan fiets ik naar mijn werk en werk ik daar verder. Ik heb mijn woon-werkverkeer getimed en bedacht dat als mijn tablet minstens twee uur aan zou blijven staan, ik direct mijn werk zou kunnen hervatten. Als ik binnen twee uur niet verder werk op mijn tablet, bespaart het batterijvermogen door naar schijf te sluimeren. Op deze manier heb ik de beste ervaring voor mijn specifieke situatie.

Configureer de LidSwitch (in systemd's login.conf) om automatisch te suspenderen en te hervatten wanneer je de Surface type cover sluit, ik heb deze geconfigureerd om suspend-then-hibernate te gebruiken met een time-out

Uniform uiterlijk

In tegenstelling tot de strak gecontroleerde iPad, wordt software op GNU/Linux gemaakt met behulp van veel verschillende benaderingen van gebruikersinterfaceontwerp. Er bestaat niet zoiets als de Richtlijnen voor gebruikersinterfaces die Apple voorschrijft voor iOS en iPadOS. Dit is een probleem omdat het ertoe leidt dat software er inconsistent uitziet en aanvoelt.

Een consistent uiterlijk is belangrijk om een wrijvingsloze omgeving en gebruikerservaring mogelijk te maken. Daarom heb ik veel kleine aanpassingen gedaan aan kleur, lettertypen, pictogrammen en werkbalken om mijn apps er allemaal hetzelfde uit te laten zien en aan te laten voelen. Hoewel het niet perfect harmonieus is, voelt het niet meer alsof ik met “Frankenstein OS” werk.

Ik geef de voorkeur aan een donker thema omdat het prettiger is voor mijn ogen, maar je moet zelf beslissen. Gebruik tools zoals lxappearance om aanpassingen te maken voor meerdere apps. Maar je zult waarschijnlijk ook aanpassingen per app moeten maken. Ik gebruik het adwaita-dark thema en (monochrome) HighContrast pictogrammen, met het Open Sans Light lettertype.

Thunar file explorer (links) en GIMP (rechts) in visuele harmonie - creëer een uniforme look door kleuren, pictogrammen en lettertypen op elkaar af te stemmen

Shotwell (links) en Xournal (rechts) - twee heel verschillende apps die naast elkaar draaien, visueel coherent ogend

Dagelijks gebruik

Het bouwen van een mooi systeem is één ding, maar het daadwerkelijk gebruiken als dagelijkse driver is iets anders! De Surface Go is mijn dagelijkse driver en de afgelopen weken heb ik geëxperimenteerd met verschillende dingen en instellingen. Hier zijn enkele hoogtepunten.

Surface Pen is geweldig en wanneer je Xournal configureert om Xinput te gebruiken, werkt de drukgevoeligheid perfect: je kunt de dikte van de lijn zien variëren, net als bij een echte pen

De kickstand is briljant in combinatie met Xournal en de Surface Pen - geen iPad kan dit

De kickstand is zeer stevig omdat hij twee sterke metalen scharnieren gebruikt

Het type cover is heerlijk om op te typen met echte (verlichte) toetsen, inclusief ESC en een rij functietoetsen

Je kunt ook een Bluetooth-toetsenbord gebruiken - waardoor een comfortabele afstand tussen je ogen en het scherm mogelijk is

Hoewel USB-C de toekomst is, is de Surface-connectorpoort best handig omdat deze werkt met Surface Dock 2 (die een hoop connectiviteit biedt)

De achterkant van de Surface heeft geen uitstekende cameralens waardoor de tablet perfect plat op een tafel kan liggen - zoals het hoort!

Het is een kleine computer, maar hij is ongelooflijk krachtig en veelzijdig!

Mails lezen in Evolution werkt goed!

Hij is licht genoeg om met één hand te hanteren - je kunt de gyroscoopsensor uitlezen om het scherm automatisch te draaien - handig bij het lezen van een (interessant) artikel

De Surface Go 2 is een serieuze tool, die krachtige dingen kan doen wanneer je verbinding maakt met de cloud (met behulp van een terminal, MOSH en tmux)

Conclusie

Het bouwen van mijn eigen tablet-OS is een echte uitdaging. Mijn eerste poging was niet goed genoeg om mijn iPad te vervangen. Deze tweede poging is echter anders. De tijd en moeite die ik heb gestoken in het verfijnen van de gebruikerservaring resulteert in een veel beter systeem. Ik gebruik het nu dagelijks als mijn hoofdcomputer.

Hoewel ik het werk dat Apple aan iPad heeft gedaan altijd heb gewaardeerd, blijft het beperkt door zijn gesloten software. Vooral nu, wanneer Apple heeft besloten om zijn App Store controle te verdubbelen. De enige manier om de toekomst te beheersen is door hem zelf te creëren: ik geloof dat de tijd rijp is om kapitein op mijn eigen schip te worden!

Update januari 2021

Na maanden intensief gebruik heb ik besloten mijn eigen tablet-OS te laten varen