Verborgen instellingen in GNOME aanpassen

De desktopomgeving GNOME is bekend om zijn Spartaanse instellingen. De ontwikkelaars menen dat ze niet te veel instellingen moeten aanbieden, omdat dat verwarrend zou zijn. Maar daardoor zitten de powerusers wel vruchteloos te zoeken naar instellingen die in andere desktopomgevingen eenvoudig zijn aan te passen.

Gelukkig is het niet allemaal kommer en kwel in de GNOME-wereld. Sommige instellingen zijn er wel, er is alleen geen grafische interface voor. Maar daar schrikken wij niet voor terug, toch? Zo was één van de eerste zaken die ik na mijn overstap van Cinnamon naar GNOME wilde aanpassen het percentage van de batterij in de statusbalk tonen. Dat bleek nergens in de instellingen te vinden en ik wilde geen GNOME-extensie installeren voor dat ene getalletje dat ik wilde te zien krijgen. Gelukkig wees iemand in het commentaar op één van die extensies op de volgende handige opdracht:

gsettings set org.gnome.desktop.interface show-battery-percentage true

 

Hiermee stel je in dat het batterij-icoontje in de statusbalk ook het batterijpercentage toont. Je kunt de huidige waarde van een sleutel in GSettings opvragen:

gsettings get org.gnome.desktop.interface show-battery-percentage

 

En je kunt zelfs een beschrijving van de sleutel opvragen. Je krijgt dan te zien wat de sleutel juist doet:

gsettings describe org.gnome.desktop.interface show-battery-percentage

 

Met het programma gsettings stel je op de commandline instellingen voor GSettings in. Heel wat onderdelen van GNOME en ook allerlei externe programma’s voor GNOME maken gebruik van GSettings voor hun instellingen. Elk onderdeel zet zijn instellingen in een schema, zoals org.gnome.desktop.interface voor de GNOME desktopinterface. Een schema bevat sleutels, zoals show-battery-percentage. Alle sleutels op je systeem opvragen, gaat met:

gsettings list-recursively

 

Op mijn verse Ubuntu 17.04-systeem zijn er 2.100 sleutels in GSettings. Hoe meer software je al hebt geïnstalleerd, hoe meer sleutels er zijn. Mijn jarenlang gebruikte Linux Mint 18-systeem heeft al bijna 4000 sleutels in GSettings. Met grep zoek eenvoudig door de uitvoer:

gsettings list-recursively | grep -i battery

 

Het commandline programma gsettings is handig als je een specifieke sleutel wilt aanpassen en je de opdracht ergens op een forum maar hoeft te kopiëren en te plakken. Maar om zelf GSettings wat te verkennen, is het grafische programma dconf-editor handiger. Hierin kun je door de hiërarchie van de schema’s navigeren. Sleutels die een andere waarde dan hun standaardwaarde hebben, worden bovendien in het vet getoond. Met Ctrl+F zoek je eenvoudig door alle sleutels.

 

Woorden wekken, voorbeelden trekken

Man-pagina’s lezen om de werking van een opdracht uit te zoeken, doen we allemaal. Maar vaak is het toch niet efficiënt. Meestal ben je meer bezig met concrete voorbeelden van hoe je een opdracht gebruikt. Op die aanpak is het programma eg gebaseerd, de bekende afkorting van exempli gratia. De installatie van eg verloopt het eenvoudigst met de Python-pakketbeheerder pip:

sudo pip install eg

 

Daarna roep je eg eenvoudig op met als parameter de opdracht waarvoor je voorbeelden wilt zien:

eg tar

 

Met eg –list krijg je de programma’s te zien waarvoor eg voorbeelden kent. Je kunt ook zelf voorbeelden creëren. De standaard voorbeeldbestanden staan in /usr/local/lib/python2.7/dist-packages/eg/examples en zijn opgesteld in het Markdown-formaat. Je kunt een extra directory ~/eg-examples aanmaken en daarin voorbeeldbestanden met de extensie .md zetten, waarin je voorbeelden uitlegt van programma’s die je vaak vergeet en niet in de standaardlijst van eg zitten. In het configuratiebestand ~/.egrc zet je dan:

[eg-config]

custom-dir = ~/eg-examples

 

Daarna pikt eg ook de voorbeelden in die directory op.

Link:

https://github.com/srsudar/eg

 

Ubuntu 16.04 LTS point releases

Ubuntu 16.04 is een LTS-versie (Long Term Support). Dat betekent dat de distributie vijf jaar beveiligingsupdates krijgt. Nieuwe functionaliteit krijg je echter niet. Toch komen regelmatig nieuwe point releases uit. Tijdens de redactiesluiting was de meest recente Ubuntu 16.04.3 LTS. Zo’n point release bevat niet alleen alle beveiligingsupdates tot nu toe, maar ook ondersteuning voor nieuwe hardware.

Die ondersteuning komt in de vorm van Hardware Enablement (HWE), met een nieuwe kernel en X-stack. Nieuwe installaties van Ubuntu 16.04.3 gebruiken die HWE. Als je de originele Ubuntu 16.04 hebt geïnstalleerd en die upgradet naar versie 16.04.3, blijf je de oorspronkelijke kernel (Linux 4.4) en X-stack gebruiken. Upgraden naar de nieuwere kernel (4.8) en X-stack doe je op de desktop met:

sudo apt-get install –install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04  

 

Op een server heb je geen Xorg nodig en laat je het pakket xserver-xorg-hwe-16.04 dus weg. Als je nog oudere LTS-versies wilt upgraden, bekijk dan op de wikipagina van Ubuntu welke pakketten je daarvoor nodig hebt.

Heb je geen hardware problemen, houd je dan bij de oorspronkelijke kernel, want die is het best getest. Maar werkt je hardware niet naar behoren, dan helpt HWE je misschien uit de nood.

Link:

https://wiki.ubuntu.com/Kernel/LTSEnablementStack

 

Time-out voor opdrachten

Sommige opdrachten blijven het proberen als iets niet lukt, waardoor je ze moeilijk in een script of cronjob kunt gebruiken. Gelukkig bestaat daar een eenvoudige oplossing voor: de opdracht time-out. Dit maakt onderdeel uit van GNU coreutils 8 en dan ook normaal op elke Linux-distributie aanwezig is. De opdracht is eenvoudig:

timeout 5 script.sh

 

Dit geeft een tijdslimiet van 5 seconden aan script.sh. Als het script na 5 seconden nog niet is voltooid, sluit time-out het script af. In plaats van seconden kun je ook minuten, uren en dagen gebruiken voor de tijdslimiet, bijvoorbeeld 5m, 5h of 5d.

Wil je een specifiek killsignaal sturen na de tijdslimiet, gebruik dan de optie -s, bijvoorbeeld -s SIGINT. Met kill -l krijg je alle beschikbare signalen te zien.

 

Freeze!

Je zal in heel wat toepassingen wel de toetsencombinatie Ctrl+S gebruiken om een bestand op te slaan. Helaas heeft die toetsencombinatie in een Linux-terminal een heel ander effect: ze bevriest de terminal. Het huidige programma toont dan geen uitvoer meer en accepteert geen invoer van jou meer. 

Ctrl+S is nog een overblijfsel van de prehistorie van computers, namelijk de teleprinters. Als de printer niet zo snel tekst kon afdrukken als de teletype gegevens ontving, kon je met Ctrl+S de flow control opdracht XOFF doorgeven om het verzenden tijdelijk stop te zetten. Met Ctrl+Q gaf je daarna de flow control opdracht XON om het verzenden terug te beginnen. Ook de oude VT100-terminals kenden de toetsencombinaties. Omdat je meestal maar beperkt kon terugscrollen, kon je met Ctrl+S de schermuitvoer even bevriezen om het te lezen als het te snel ging.

Ctrl+Q is dan ook de oplossing voor het probleem als je per ongeluk in een terminalvenster op Ctrl+S hebt gedrukt. Maar waarschijnlijk heb je liever dat je nooit meer per ongeluk op Ctrl+S drukt. Gelukkig kun je de toetsencombinaties ook uitschakelen. Bekijk eerst welke control codes je terminal verstaat:

stty -a

 

Waarschijnlijk zie je in de lijst ixon staan. Schakel dit als volgt uit:

stty -ixon

 

Als je nu nog eens de controlcodes opvraagt, zie je in de lijst -ixon staan, het teken dat de toetsencombinaties voor XON en XOFF uitgeschakeld zijn. Als je nu Ctrl+S of Ctrl+Q intypt, verschijnt ^S of ^Q in je terminalvenster. Om dit nu altijd toe te passen in elk terminalvenster, plaats je bovenstaande opdracht in je ~/.bashrc, zodat het elke keer dat je een shell opstart, wordt uitgevoerd.