28 sep. 2020

Mijn tablet-OS-ervaring verfijnen

Surface Go 2 met 4G/LTE, Debian GNU/Linux en i3wm gebruiken

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
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:

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:

Microsoft Surface Go 2 met zwart type cover en Surface Pen - een mooi stuk hardware!
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
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:

Debian GNU/Linux met i3wm (ā€œaka WillemOSā€) draaiend op Surface Go 2
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!
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
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
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
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
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
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!
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
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:

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
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
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
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
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
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 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
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
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
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)
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!
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!
Het is een kleine computer, maar hij is ongelooflijk krachtig en veelzijdig!
Mails lezen in Evolution werkt goed!
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
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)
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