Als onderdeel van hun initiatief om Debian op basis van reproduceerbare builds te maken (zie artikel elders in deze Linux Magazine), hebben de ontwikkelaars van de populaire Linux-distributie de tool diffoscope gemaakt. Hiermee bekijk je eenvoudig de verschillen tussen bestanden. Maar diffoscope doet veel meer dan diff, dat louter twee tekstbestanden vergelijkt. Het programma is ook in staat om archieven, zoals bzip2-, zip- en tar-bestanden te vergelijken. Het vergelijkt dan de overeenkomstige bestanden in het archief met elkaar. Dat is handig, omdat veel bestanden eigenlijk vermomde archieven zijn.

Zo zijn Firefox-extensies, bestanden met de extensie xpi, eigenlijk zip-bestanden. Als je nu wilt nagaan wat er exact is toegevoegd in een nieuwe versie van een extensie, dan is diffoscope daarvoor een ideaal hulpmiddel. Installeer diffoscope met de Python package manager Pip:

 

sudo pip install diffoscope

 

Daarna voer je diffoscope uit met twee versies van een extensie als parameters, bijvoorbeeld:

 

diffoscope –html ghostery5.4.9-5.4.10.html ghostery-5.4.9-sm+fx+an.xpi ghostery-5.4.10-sm+an+fx.xpi

 

Het resultaat komt nu in het HTML-bestand, dat je als eerste parameter hebt opgegeven. Open het bestand in Firefox om de verschillen te zien. Vooral bij extensies die gebruik maken van lijsten met URL’s (zoals Ghostery of Adblock Plus) is diffoscope interessant. Je krijgt zo namelijk te zien welke URL’s zijn toegevoegd of verwijderd.

Overigens maakt diffoscope gebruik van externe tools voor zijn vergelijking van bestanden, dus voor sommige bestanden zul je extra tools moeten installeren. Het rapport meldt als dat het geval is. Vergelijk je bijvoorbeeld twee png-bestanden van een identieke afbeelding, maar met een ander compressieniveau, dan krijg je de melding:

 

‘sng’ not available in path. Falling back to binary comparison.

 

Installeer je daarna het pakket sng, dan krijg je als melding bij de twee identieke afbeeldingen met een ander compressieniveau:

 

No differences found inside, yet data differs

 

Met diffoscope –list-tools krijg je te zien welke externe tools diffoscope verwacht. Wil je diffoscope niet installeren? Probeer de tool dan online uit op http://try.diffoscope.org. Let dan wel op dat je geen privé-informatie naar de website uploadt.

 

Statusregels en prompts met Powerline

Als je vaak de terminal gebruikt, dan zie je graag zoveel mogelijk statusinformatie in je terminalvenster, zodat je die niet ergens anders moet gaan opzoeken. Je kunt natuurlijk zelf een aangepaste prompt in elkaar gaan steken voor Bash of Zsh, statusregels voor tmux en vim, enzovoort, maar dat vereist heel wat tijd. Het programma Powerline neemt dit allemaal voor je uit handen. De ontwikkelaars raden aan om het pakket met de Python package manager Pip te installeren, omdat je zo doorgaans een recentere release krijgt dan in de repository van je distributie. Dat gaat als volgt:

 

sudo pip install powerline-status

 

Kijk eerst in welke directory Pip zijn pakketten installeert:

 

pip show powerline-status

 

Na Location: krijg je de locatie te zien, bijvoorbeeld /usr/local/lib/python2.7/dist-packages op een systeem met Python 2.7. Als je nu in Bash wilt gebruikmaken van Powerline, voeg dan de volgende regels toe aan je ~/.bashrc, waarbij je uiteraard de juiste locatie van Powerline invult:

 

if [ -f `which powerline-daemon` ]; then

  powerline-daemon -q

  POWERLINE_BASH_CONTINUATION=1

  POWERLINE_BASH_SELECT=1

  . /usr/local/lib/python2.7/dist-packages/powerline/bash/powerline.sh

fi

 

Als je nu een nieuwe Bash-shell opstart, krijg je een handige en tegelijk stijlvolle prompt te zien, die standaard je loginnaam en huidige directory toont. Waarschijnlijk ziet de prompt er wat verminkt uit, omdat Powerline gebruikmaakt van speciale fonts. Download daarom eerst de nieuwste versie van het Symbol-font:

 

wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf

 

Dit font moeten we nu installeren. Vraag eerst met xset q de locatie van je systeemfonts op. Onder Font Path: krijg je de beschikbare paden, bijvoorbeeld /usr/share/fonts/X11/misc,/usr/share/fonts/X11/Type1,built-ins. Plaats het gedownloade font daarna in de juiste directory, bijvoorbeeld:

 

sudo mv PowerlineSymbols.otf /usr/share/fonts/X11/misc

 

Werk daarna de font cache voor die directory bij met:

 

sudo fc-cache -vf /usr/share/fonts/X11/misc

 

Sluit je terminal emulator en start het programma opnieuw op. Als je nog altijd niet de juiste symbolen ziet, herstart dan je X-server. Lukt het nog niet, download dan het fontconfigbestand:

 

wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf

 

Plaats het bestand daarna in de juiste fontconfigdirectory. Sinds fontconfig 2.10.1 is dat ~/.config/fontconfig/conf.d/:

 

mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/

 

Maak de directory eerst aan als deze nog niet bestaat. Sluit daarna je terminal emulator en start het programma opnieuw op om de symbolen in je prompt te zien.

De prompt van Powerline heeft een breadcrumb, die het pad naar je huidige directory inkort, als het te lang is. Als je jobs in de achtergrond hebt draaien, krijg je het aantal in het oranje te zien. En log je via SSH in op een systeem, waarop ook Powerline staat, dan toont je prompt de hostnaam.

Powerline biedt ook een statusregel aan voor tmux (zie Linux Magazine 1 van dit jaar). Voeg daarvoor de volgende regels toe aan je ~/.tmux.conf:

 

run-shell “powerline-daemon -q”

source “/usr/local/lib/python2.7/dist-packages/powerline/bindings/tmux/powerline.conf”

 

Verwijder uiteraard alle bestaande configuratieregels voor de statusregel. Nadat je tmux hebt opgestart of de configuratie opnieuw ingeladen, krijg je onderaan je tmux-sessie een mooie statusregel, die onder andere je hostnaam, datum, tijd en uptime toont.

Ook voor de editor Vim heeft Powerline een statusregel. Controleer eerst of je Vim-installatie Python ondersteunt:

 

vim –version|grep +python

 

Indien je +python te zien krijgt, plaats je de volgende regels in je ~/.vimrc:

 

python from powerline.vim import setup as powerline_setup

python powerline_setup()

python del powerline_setup

set laststatus=2

set t_Co=256

 

Daarna krijg je in Vim een heel wat mooiere statusregel. Overigens is tot in detail aan te passen welke informatie Powerline toont. Raadpleeg daarvoor de online documentatie.

 

Open source Evernote-client NixNote2

Wie Evernote gebruikt, zal al gemerkt hebben dat er geen officiële Linux client is. Je kunt wel gebruikmaken van de webinterface, maar wat als je voorkeur naar een desktop client uitgaat? Gelukkig bestaan er heel wat open source clients voor de populaire clouddienst voor notities. Één daarvan is NixNote2 (voorheen NeverNote). Terwijl de eerste versie van NixNote nog op Java gebaseerd was, is NixNote2 volledig herschreven in de moderne Qt5-toolkit. Onlangs kwam bètaversie 7 van NixNote2 uit.

Download op de Sourceforgepagina van het project het juiste bestand en installeer het. De eerste keer dat je NixNote2 opstart, ga je in het menu “Tools” naar “Synchronize” en log je in op je Evernote-account. Als dat is gebeurd, downloadt NixNote2 al je notities en toont ze onmiddellijk in je lijst. Beheer je meerdere Evernote-accounts? Voeg dan in het menu “File > Add Another User” andere accounts toe. Overschakelen tussen die accounts gaat eenvoudig door het account te kiezen in het menu “File”. In “File > User Account Maintenance” stel je in wat de standaardaccount is en schakel je accounts uit.

De interface van NixNote2 lijkt wat op die van een e-mailclient. Links krijg je een paneel te zien met snelkoppelingen, je notitieboekjes, tags, opgeslagen zoekopdrachten, attributen en je prullenbak. Het rechterpaneel, dat het grootste deel van het venster in beslag neemt, bevat bovenaan een lijst van je notities en onderaan een voorvertoning van de geselecteerde notitie.

NixNote2 maakt het ook eenvoudig om notities te e-mailen. Selecteer daarvoor je notitie en klik bovenaan op de knop “Email”. Daarvoor moet je eerst wel in “Edit > Preferences” in het tabblad “Email” de juiste instellingen voor de SMTP-server van je internetprovider ingeven.