Ontgrendelen met Bluetooth

Gepubliceerd in Linux Magazine 2, 2021

Elke laptop en elke smartphone heeft tegenwoordig Bluetooth ingebouwd, en dan kun je op allerlei slimme manieren beide apparaten draadloos met elkaar laten communiceren. Een eenvoudig concept is dat je op basis van de aanwezigheid van je telefoon automatisch je grafische sessie kunt laten vergrendelen als je van je laptop weggaat en laat ontgrendelen wanneer je weer terug bent. BlueDo is een programma dat dit concept gebruiksvriendelijk maakt voor Gnome en Cinnamon. De maker heeft het alleen getest op Ubuntu 20.04 met Gnome, maar op andere distributies zou het ook moeten werken. Op Ubuntu installeer je het pakket en zijn afhankelijkheden met:

sudo apt install python3-pip libbluetooth-dev libappindicator3-dev playerctl
pip3 install bluedo

Nuttig om te weten is dat je Bluetooth-apparaat eerst gepaird moet zijn via de Bluetooth-instellingen van Gnome. Open daarna BlueDo en kies daar je telefoon als apparaat. Je schakelt het programma dan in met de schuifschakelaar bovenaan in de titelbalk. Je krijgt overigens met een groen balkje naast je apparaat te zien of BlueDo het detecteert. Gaat je apparaat buiten het bereik, dan is het balkje leeg.

Klik dan op het omgekeerde driehoekje naast de schuifschakelaar en dan Show advanced options om in te stellen wat BlueDo exact moet doen wanneer je telefoon binnen of buiten het bereik van de laptop is. Zo heb je de mogelijkheid om je scherm te vergrendelen/ontgrendelen, muziek te pauzeren/hervatten en het geluid te dempen of het dempen op te hebben. Heb je nog specialere eisen, dan kun je bij Run command: een willekeurige opdracht invoeren die je laptop moet uitvoeren als het de aanwezigheid of afwezigheid van je telefoon opmerkt.

https://github.com/ways/BlueDo

Altijd een andere bureaubladachtergrond

Wil je altijd een andere bureaubladachtergrond? Het programma Variety kan je daar eenvoudig bij helpen. Het is beschikbaar in de repository’s van allerlei Linux-distributies.

De eerste keer dat je het programma na de installatie uitvoert, vraagt het je om enkele instellingen te kiezen. Lees het privacybeleid en keur het goed als je het ermee eens bent. Het programma downloadt immers nieuwe bureaubladachtergronden van allerlei websites.

De instellingen zijn vrij uitgebreid. Standaard verandert Variety je bureaubladachtergrond elke vijf minuten, waarbij het de afbeeldingen haalt uit je /usr/share/backgrounds, Flickr, NASA’s Astronomy Picture of the Day, de Bing Photo of the Day en nog enkele andere bronnen. Als je zelf afbeeldingen wilt toevoegen aan de lijst waaruit Variety kiest, kun je die kopiëren naar de map ~/.config/variety/Favorites via het knopje Copy To Favorites in het menu van het icoontje in de statusbalk. Met een klik op Add… rechts in de instellingen kun je ook extra bronnen toevoegen, zoals een album of een specifieke subreddit.

In het tabblad Effects kun je nog allerlei effecten op je afbeeldingen toepassen, of een willekeurig citaat toevoegen, waar je ook nog eens allerlei bronnen kunt opgeven. Je kunt ook op gelijk welk moment een afbeelding verslepen naar het icoontje van Variety in de statusbalk bovenaan: het programma slaat dit dan op in ~/.config/variety/Fetched, waar het dit ook oppikt in de toekomst. Wil je het onmiddellijk als bureaubladachtergrond zien, klik dan in het statusmenu op Next.

Bekijk zeker de rest van de instellingen, want Variety heeft uitgebreide mogelijkheden om iets eenvoudigs als het wisselen van bureaubladachtergrond tot in de kleinste details te finetunen.

Variety is an open-source wallpaper changer for Linux

The Silver Searcher

Je bestanden doorzoeken met grep, ack en find is handig, maar niet altijd even snel. Een tool die specifiek is ontwikkeld om snel te zoeken in code is The Silver Searcher. Aangezien hij al even meegaat, vind je hem wel in de meeste repository’s van Linux-distributies, al kan de naam wel verschillen. In Debian en Ubuntu vind je het programma in het pakket silversearcher-ag (waarbij Ag het symbool is voor het scheikundig element zilver).

De ontwikkelaar Geoff Greer heeft er alles aan gedaan om The Silver Searcher zo efficiënt mogelijk te maken. Dat begint al bij de opdracht zelf, die kortweg ag heet. En ook bij de standaardopties. Wil je in een directory met code recursief zoeken naar een specifieke term, dan gaat dat heel eenvoudig: ag NluIntent

Als je minstens één hoofdletter in je zoekterm gebruikt, zoekt ag rekening houdend met alle hoofdletters. Heeft je zoekterm alleen kleine letters, dan zoekt ag zonder rekening te houden met hoofdletters of kleine letters. Wil je alleen de resultaten waarin het woord in kleine letters voorkomt, voeg dan de optie -i (voor case insensitive) toe. Ook reguliere expressies worden standaard ondersteund, zonder dat je een extra optie hoeft in te voeren:

ag "(Nlu)?Intent"

Dat levert zoekresultaten op per bestand, met het regelnummer en de regel waarin de zoekterm voorkomt. Het leuke is dat ag ook bestanden vermeld in .gitignore en .hgignore negeert, en als je extra bestanden door ag wilt laten negeren, maak dan een bestand .ignore aan met de bestandspatronen erin.

The Silver Searcher maakt ook gebruik van meerdere processorkernen om meerdere bestanden tegelijk te doorzoeken, en gebruikt allerlei geoptimaliseerde zoekalgoritmes. Uit benchmarks van Geoff blijkt dat The Silver Searcher op zijn 8 GB grote codedirectory 34 keer zo snel presteert als ack.

Wil je je zoektocht beperken tot specifieke bestandstypes, dan kan dat met een extra optie, bijvoorbeeld: ag –python “(Nlu)?Intent”. De lijst van ondersteunde bestandstypes vind je met ag –list-file-types.

Je kunt de bestanden waarin wordt gezocht ook beperken met een reguliere expressie op hun bestandsnaam, zoals in: ag -G tests “(Nlu)?Intent”.

Let op: na de optie -G geef je een reguliere expressie door. Tekens met een speciale betekenis in reguliere expressies, zoals het punt, moet je dus escapen met een backslash ().

https://github.com/ggreer/the_silver_searcher

Tijdreizen

Soms is het nuttig om een programma in de waan te laten dat het een specifiek tijdstip is. Vooral als je zaken wilt testen, is dat handig. Zo kun je bijvoorbeeld testen of logrotatie correct gebeurt en of periodieke taken op het juiste moment uitgevoerd worden. Het programma faketime maakt dat mogelijk.

Een programma met een ander tijdstip uitvoeren is eenvoudig, bijvoorbeeld:

faketime 'last Saturday 6 pm' /bin/date

Nog leuker is dat je ook de tijd voor het programma kunt versnellen of vertragen. Versnel de tijd bijvoorbeeld tien keer:

faketime 'x10' foobar

Elke echte seconde lijkt dan voor het programma tien seconden te duren. Vertragen gaat als volgt:

faketime 'x0.1' foobar

Je kunt het verschuiven en het versnellen van de tijd ook combineren, bijvoorbeeld:

faketime '+7d x10' foobar

Faketime doet zijn job door met het mechanisme van LD_PRELOAD een kleine bibliotheek libfaketime te laden die de normale systeemaanroepen om de tijd op te vragen onderschept en zijn eigen valse tijd teruggeeft. Dat werkt dus niet met statisch gelinkte programma’s of programma’s met suidroot-toegangsrechten.

https://github.com/wolfcw/libfaketime