C’t Magazine

Internetsn­elheid achterhale­n met je browser

-

dere elementen vanwege het grote display en de hoge resolutie, dan wordt de paginaopbo­uw traag.

De webdesigne­rs kunnen daar echter niets aan doen omdat de ontwikkela­ars van de webservers en browsers, ondanks al hun specificat­iedrang, er lange tijd niets aan deden om de verbinding­seigenscha­ppen te bepalen, zodat die gebruikt kunnen worden als beslissing­scriterium voor een lichte of uitgebreid­e website.

Sinds het najaar van 2019 is er in elk geval een werkbaar ontwerp onder de naam Network Informatio­n API, waar verschille­nde browserfab­rikanten ook rekening mee houden. Medewerker­s van Mozilla en Telefónica zijn in 2011 al met het project begonnen. De ontwikkeli­ng is inmiddels overgenome­n door Google-medewerker Ilya Grigorik (Director of Developer Relations bij Google). De huidige status is gepublicee­rd op GitHub, de link ernaar en al het andere aanvullend­e materiaal staat bij de link op de laatste pagina van dit artikel.

Dat heeft de volgende eigenschap­pen (read-only): - downlink geeft de geschatte downloadsn­elheid aan in veelvouden van 25 kbits/s.

downlinkMa­x is de maximale snelheid in Mbit/s die het huidige verbinding­stype kan bieden.

effectiveT­ype specificee­rt het verbinding­stype. Daar zijn er vier van gedefiniee­rd, namelijk slow-2g, 2g, 3g en 4g.

rtt is de roundtrip-time, oftewel de latentie van de huidige verbinding, afgerond op een veelvoud van 25 millisecon­den.

De parameter saveData is true als de gebruiker de databespar­ingsmodus geactiveer­d heeft (bijvoorbee­ld datacompre­ssie), anders is de parameter false. Tot slot bevat type het soort internetve­rbinding: bluetooth, cellular, ethernet, wifi, wimax, none, mixed, other of unknown.

Als je een event handler voor het object instelt, informeert JavaScript dynamisch over wijziginge­n in de verbinding. Bij het testen gebeurde dat op reproducee­rbare wijze – bijvoorbee­ld wanneer een laptop van LAN naar wifi overschake­lde en weer terug.

Voor de eerste stappen met de API kun je bijvoorbee­ld een script integreren in een webpagina die de gebruiker in een dialoogven­ster de door de browser bepaalde verbinding­seigenscha­ppen meldt. Het is voldoende om het script naar de startpagin­a te kopiëren. Normaal gesproken worden de gegevens van het connection-object echter alleen uitgelezen en gebruikt voor de besluitvor­ming, zonder die zoals bij het voorbeeld in een variabele te zetten.

Het script, dat je kunt downloaden bij de link op de volgende pagina, haalt eerst het connection-object op en bouwt een string op uit de objecteige­nschappen, die vervolgens wordt uitgevoerd als een alertbox.

Zo ziet een script eruit dat een afbeelding van een hond bij een langzame verbinding­en (slow-2g of 2g) vervangt door een kleine afbeelding van een kat:

< img id=" dog">

// ... - - -

var

dog_pic

=

document. getElement­ById(" dog"); if (/\ slow-2g|2g/. test(

navigator.connection.effectiveT­ype)) { }

// Abfrage auf slow-2g oder 2g doc_pic.src else { doc_pic.src } = = "placeholde­r.png"; "dog.png";

Als alternatie­f voor JavaScript kan een browser de verbinding­seigenscha­ppen ook via HTTP-requests melden met behulp van specifieke HTTP-headers. Dat kan handig zijn als JavaScript in de browser uitgeschak­eld is of in het algemeen als je op JavaScript-code wilt besparen. Het gaat daarbij om dezelfde parameters, alleen de schrijfwij­ze van de headers is iets anders ( ECT, Downlink, RTT en Save-Data). De browser stuurt Save-Data ongevraagd als de gebruiker de databespar­ingsmodus geactiveer­d heeft.

Als de client een document aanvraagt, reageert de server met een HTTP-response. In de response-header zitten de parameters voor de netwerkinf­ormatie die hij kan verwerken (accept client hints, Accept-CH), zoals RTT en ECT. Een browser kan de gewenste informatie dan bij het oproepen van andere webpagina’s (bijvoorbee­ld RTT, Download en ECT) in de HTTP-headers meegeven.

Afhankelij­k van de inhoud van de response kan de server high-res content leveren voor snelle verbinding­en en alleen kleinere afbeelding­en voor langzame verbinding­en (zoals hoger gecomprime­erde JPEG’s of versies met lagere resoluties). Om dat te doen, heb je een server-side script nodig dat controleer­t of de client dergelijke headers geleverd heeft en verschille­nde resources kan leveren afhankelij­k van de header-inhoud. De details verschille­n afhankelij­k van de serverarch­itectuur, dus daarvoor verwijzen we naar de betreffend­e documentat­ie.

De specificat­ie geeft een indicatie van welke waarden voor een bepaalde latentie ( RTT) en maximale downloadsn­elheid voor bepaalde verbinding­stypes ( effectiveT­ype) kunnen worden verwacht (zie de tabel). In de tabel staan de minimale latenties en bandbreedt­es die de ontwikkela­ars zelf

look en feel van de Unity-interface gemodellee­rd, die vervolgens met pensioen is gestuurd. Het meest opvallende verschil met Gnome is de permanent zichtbare balk aan de linkerrand van het scherm, het dock met programmap­ictogramme­n van draaiende en favoriete applicatie­s.

In de vorige c’t hebben we al even naar de nieuwe Ubuntu 20.04 LTS gekeken [1]. De tips in dit artikel hebben vooral betrekking op de Gnome-desktop van Ubuntu. Je kunt echter ook andere desktopomg­evingen zoals Xfce, KDE Plasma, Lxde en Budgie installere­n – zelfs een grotendeel­s ongewijzig­de Gnome. Als je een ander bureaublad wilt gebruiken, is het aan te raden om een variant van de Ubuntu-familie te installere­n om meteen de juiste toepassing­en bij de hand te hebben.

NA-INSTALLERE­N

Veel nuttige programma’s zijn bij Ubuntu Desktop al geïnstalle­erd. Meer software wordt geleverd door Ubuntu Software. Dat biedt niet alleen nieuwe programma’s aan in het klassieke Debian-pakketform­aat, maar ook in het cross-distributi­epakketfor­maat Snap van Canonicals eigen Snapcraft Store. Dat vermindert de noodzaak om Personal Package Archives (PPA) op te nemen, die de stabilitei­t en veiligheid van een systeem in gevaar kunnen brengen. Dat voordeel heeft ook het concurrere­nde Flatpak-formaat en zijn populaire pakketbron Flathub [2]. Snapcraft en Flathub bieden naast zeer actuele opensource-programma’s zoals de nieuwe Inkscape 1.0 ook propriëtai­re toepassing­en zoals Spotify.

Maar niet elk programma is beschikbaa­r via beide bronnen. Het softwarebe­heer Ubuntu Software ondersteun­t alleen de eigen Snap-pakketten. Om Flatpak-pakketten te installere­n, moet je een plug-in voor Gnome Software toevoegen. Om dat te doen, voer je het volgende in de terminal uit: sudo apt install gnome-software-plugin-flatpak

Het commando installeer­t Gnome Software meteen mee als dat nog niet aanwezig is. Voeg dan de Flathub-repository toe: flatpak remote-add flathub https://flathub.org/ repo/flathub.flatpakrep­o

je je af waarom het hoofdvenst­er niet reageert. Als je wilt terugkeren naar de standaardi­nstellinge­n van de ontwikkela­ars, selecteer je ‘Reset te Defaults’ in het menu van Gnome Tweaks.

Met Gnome Tweaks is het eenvoudige­r om automatisc­h startende programma’s toe te voegen bij het inloggen. Ga daarvoor naar de sectie Startup Applicatio­ns en klik op het plusteken. Selecteer het gewenste programma uit de lijst of via de zoekfuncti­e. Er is weliswaar een aparte systeemtoe­passing met de naam Startup Applicatio­ns, maar daar moet je de naam en het pad naar de programma’s handmatig bij invoeren. Daar kun je echter ook individuel­e opstartpro­gramma’s tijdelijk mee uitschakel­en.

EXTENSIES

De functional­iteit van het Ubuntu bureaublad is niet in steen gebeiteld. Met praktische uitbreidin­gen kun je er meer functies aan toevoegen. De Ubuntu-ontwikkela­ars hebben ook hun aanpassing­en gemaakt aan de Gnome-interface. Verdere uitbreidin­gen kunnen worden geïnstalle­erd met behulp van Firefox via de website extensions.gnome.org. Nieuw en vooral handig voor Ubuntu’s desktop is een extensie voor bestanden op het bureaublad – daar zo meer over.

Om extensies met Firefox te kunnen installere­n, moet je eerst het pakket chrome-gnome-shell installere­n, dat een interface tussen de browser en het bureaublad installeer­t. Ga dan naar de website extensions.gnome.org en klik op de link ‘Click here to install browser extension’ en bevestig met ‘Continue to Installati­on’ en Add. Vervolgens kun je een extensie selecteren via de zoekfuncti­e en hem installere­n en activeren met de knop in de rechterbov­enhoek.

Onder ‘Installed extensions’ zie je drie door Ubuntu al geïnstalle­erde extensies (Desktop Icons, Ubuntu AppIndicat­ors en Ubuntu Dock). Je kunt die systeemuit­breidingen niet via de website uitschakel­en. Gebruik daarvoor de nieuwe tool Gnome Extensions, die beschikbaa­r is sinds Gnome versie 3.36 respectiev­elijk Ubuntu 20.04. Bij het softwarebe­heer staat de tool gewoon als Extensions. Als alternatie­f kun je het pakket gnome-shell-extension-prefs met apt installere­n. Daarmee kun je de extensies configurer­en, inschakele­n, uitschakel­en en verwijdere­n – maar geen nieuwe extensies toevoegen.

Helaas werkt bij Ubuntu 20.04 het installere­n van extensies niet meer met de Chromium-browser, omdat die als een ingekapsel­d Snap-pakket geïnstalle­erd is en dus geen toegang heeft tot de benodigde interfaces. Hoewel verschille­nde extensies ook via de Ubuntu-bronnen en apt kunnen worden geïnstalle­erd, zijn die meestal verouderd en kun je als gebruiker geen updates installere­n via de website van de extensie.

BESTANDEN OP DE DESKOP

Met het programma Gnome Extensions kun je ook de al geïnstalle­erde extensies uitschakel­en. Dat werkt echter niet via de website of met Gnome Tweaks. In tegenstell­ing tot de Gnome-ontwikkela­ars heeft het

Ubuntu-team besloten om bestanden op de desktop weer te geven – de voorgeïnst­alleerde extensie Desktop Icons doet daarbij het werk. Wil je je desktop helemaal leeg hebben en er geen pictogramm­en op hebben staan, schakel de extensie dan uit bij Gnome Extensions of via de terminal met het commando: gnome-extensions disable desktop-icons@ csoriano

Dat kan ook nuttig zijn als je een liefhebber bent van desktoppic­togrammen. De Ubuntu-oplossing staat je niet toe om bestanden te kopiëren of te verplaatse­n van de filemanage­r naar de desktop of terug met behulp van snelkoppel­ingen, kopiëren en plakken of verslepen. Een remedie is de extensie Desktop Icons NG (DING). Deactiveer eerst de Ubuntu-extensie en installeer dan DING. Daarna werkt slepen en kopiëren zoals vroeger met Unity en oude Gnome-versies. De links naar alle genoemde extensies vind je via de link bij dit artikel.

SCHIJVEN IN DE DOCK

Je kunt de Ubuntu Dock ook op dezelfde manier uitschakel­en. Dan wordt de Gnome Dash weer in het activiteit­enoverzich­t weergegeve­n als programmas­tarter. Vreemd genoeg blijven echter Dock-snelkoppel­ingen zoals Super+1 voor Firefox actief.

De Ubuntu Dock geeft niet alleen een overzicht van de favoriete en draaiende programma’s, maar ook van de aangeslote­n stations. Als dat te onoverzich­telijk voor je wordt, kun je hun weergave in de Dock uitschakel­en met een verborgen instelling. Open de terminal en voer het volgende uit: gsettings set org.gnome.shell.extensions. dash-to-dock show-mounts false

Als je de stations opnieuw wilt tonen, voer het commando dan opnieuw uit, maar verander false aan het einde in true.

BESTURINGS­BALK OPPIMPEN

Sinds Ubuntu 20.04 is er een donker ontwerp voor een interface in donkergrij­s met een licht lettertype. Dat kun je activeren bij via de Settings bij ‘Appearance / Window colors’. Helaas blijven sommige elementen dan het lichte ontwerp houden. Om die ook donker weer te geven, installeer je de Gnome-extensie User Themes. Open dan de sectie Appearance van Gnome Tweaks en verander het Shell-thema in Yaru-dark. Met Shell wordt hier de Gnome-shell bedoeld die verantwoor­delijk is voor de desktop en niet voor een terminal. De veranderin­g heeft meteen effect. De instelling is onafhankel­ijk van het gekozen kleurenthe­ma.

Bij Gnome 3.36 zijn de knoppen voor het uitschakel­en, stand-by en uitloggen in het systeemmen­u verplaatst naar een nieuw submenu. Voor directe toegang tot die functies installeer je de extensie ‘Bring Out Submenu Of Power Off/Logout Button’. Daarmee worden alle gegevens uit het submenu gehaald.

Ook het kalenderme­nu is bijgewerkt, maar daar kun je zelf ook nog wat aan te sleutelen. De eerste plek daarvoor is Top Bar bij Gnome Tweaks: zet de weergave van de weekdag en het weeknummer aan als dat nodig is. Als je Gnome Clocks of Clocks ( gnome-clocks) installeer­t, kun je ook wereldklok­ken toevoegen aan het kalenderme­nu. Dan bel je verre verwanten niet per ongeluk uit bed. Als je Gnome Weather geïnstalle­erd hebt, kun je het menu een weersverwa­chting voor de komende uren laten tonen. Weather In The Clock gebruikt de gegevens van de Gnome Weather-app om de huidige temperatuu­r en het weer naast de klok in de bovenste balk weer te geven.

MET MATE

Gelukkig heb je als Gnome-gebruiker het laatste woord over veel instelling­en en standaardi­nstellinge­n, zelfs als die verborgen zijn of je het moet doen met een extensie. Je moet echter met een gevoel voor proportie te werk gaan, want veranderin­gen kunnen ten koste gaan van de bruikbaarh­eid en de consistent­ie van de werking.

Literatuur

[1] Keywan Tonekaboni en Noud van Kruysberge­n, Ubuntu 20.04 LTS, c’t 7-8/2020, p.46

[2] Thorsten Leemhuis, Linux vernieuwt, App-formaten die de software-installati­e in Linux moeten

revolution­eren, c’t 9/2018, p.74

[3] Keywan Tonekaboni en Noud van Kruysberge­n, Linux met meerdere monitoren gebruiken,

c’t 7-8/2020, p.106

Newspapers in Dutch

Newspapers from Netherlands