Tips en Trucs 2016

Vensters manipuleren met een script

Devilspie2 is een programma waarmee je vensters die aangemaakt worden, kunt manipuleren. De uit te voeren vensterbewerkingen worden in een script gedefinieerd. Devilspie2 scripts worden geschreven in de scripttaal LUA.

Wat is LUA?

Lua is een krachtige, snelle en dynamisch getypeerde imperatieve scripttaal die veel als geïntegreerde scripttaal in applicaties gebruikt wordt, maar ook los gebruikt kan worden. De taal heeft een eenvoudige syntaxis (zinsbouw) met enkele primitieve types (zoals booleans, doubles en strings) en tabellen, in essentie associatieve arrays, waarmee bekende en krachtige datastructuren zoals arrays, lijsten en hashmaps geconstrueerd kunnen worden. De scripts worden uitgevoerd op een virtuele machine met garbage collection. Lua wordt door zijn eigenschappen veel gebruikt voor configuratie en automatiseren (scripts) van taken in programma's.

Installatie

De standaard softwarebronnen van openSUSE Leap 42.1 bieden devilspie2 niet aan. Als volgt installeer je in een terminal het devilspie2 pakket uit de X11:common:Factory softwarebron:

dany@laptop:~> sudo /sbin/OCICLI https://software.opensuse.org/ymp/X11:common:Factory/openSUSE_Leap_42.1/devilspie2.ymp
root's password:
Als u verdergaat, dan worden de volgende installatiebronnen toegevoegd:
        * http://download.opensuse.org/repositories/X11:/common:/Factory/openSUSE_Leap_42.1/
Als verdergaat, dan zullen de volgende softwarepakketten worden geïnstalleerd op uw systeem:
        * devilspie2
Continue? y/N
y
Toevoegen van installatiebronnen...
Cache van opslagruimte 'X11:common:Factory' bouwen
Opslagruimte 'X11:common:Factory' toevoegen
Installeren van pakketten...

Devilspie2 gebruiken

Als je dilvilspie2 niet start met de --folder optie, wordt standaard de map ~/.config/devilspie2/ gebruikt. Indien de map niet bestaat, wordt deze automatisch door devilspie aangemaakt. Als devilspie geen LUA scripts in deze map aantreft, wordt devilspie afgebroken.

dany@laptop:~> devilspie2 --help
Usage:
  devilspie2 [OPTION...] - apply rules on windows

Help Options:
  -h, --help              Show help options

Application Options:
  -d, --debug             Print debug info to stdout
  -e, --emulate           Don't apply any rules, only emulate execution
  -f, --folder=FOLDER     Search for scripts in this folder
  -v, --version           Show Devilspie2 version and quit

Devilspie scripts

Als voorbeeld plaats je volgend script in de map ~/.config/devilspie2/, geef dit script als naam test.lua:

debug_print("Window Name: "..	get_window_name());
debug_print("Application name: "..get_application_name())

if (get_application_name()=="Firefox") then
	maximize();
end

Daarna start je devilspie2 met de optie --debug. Zolang devilspie2 loopt, wordt elk nieuw Firefox venster gemaximaliseerd (zie script). Devilspie2 zelf stop je door deze af te breken met de sneltoets Ctrl+c.

devilspie2

Het spreekt voor zich dat devilspie2 meer kan, maar daarvoor verwijs ik naar de handleiding van devilspie2.