Een moderne werkplek vereist vaak urenlange productiviteit van gebruikers, maar wat gebeurt er als je even van de computer weggaat? Om het energieverbruik te beheersen en de beveiliging te verbeteren, is het handig om een Bash-script te maken dat het systeem automatisch in de slaapstand zet na een periode van inactiviteit.
Ons Bash-script gebruikt daarvoor swayidle, een opdracht die reageert op gebruikersactiviteit.
Swayidle werkt enkel onder Wayland, wie nog X11 gebruikt, kan gebruik maken van xprintidle en de tutorial Bash Script to Suspend the System after User Inactivity.
We starten met het installeren van swayidle:
dany@pindabook:~$ sudo apt install swayidle
[sudo] wachtwoord voor dany:
Installeren:
swayidle
Samenvatting:
Opwaarderen: 0, Installeren: 1, Verwijderen: 0, Niet opwaarderen: 0
Downloadgrootte: 16,8 kB
Benodigde ruimte: 60,4 kB / 84,6 GB beschikbaar
Ophalen:1 http://deb.debian.org/debian trixie/main amd64 swayidle amd64 1.8.0-1 [16,8 kB]
16,8 kB opgehaald in 0s (400 kB/s)
Voorheen niet geselecteerd pakket swayidle wordt geselecteerd.
(Database wordt ingelezen ... 206609 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../swayidle_1.8.0-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van swayidle (1.8.0-1) ...
Instellen van swayidle (1.8.0-1) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
En testen de werking met de volgende opdracht:
dany@pindabook:~$ swayidle -w timeout 10 "echo Geen muis- of toetsenbordhandelingen" resume "echo Terug activiteit"
Geen muis- of toetsenbordhandelingen
Terug activiteit
Geen muis- of toetsenbordhandelingen
Terug activiteit
^Cdany@pindabook:~$
De verschillende onderdelen van de opdracht
-w: wacht tot de timeout- en resume opdrachten voltooid zijntimeout 10: na hoeveel tijd inactiviteit (in seconden) moet de hierop volgende opdracht uitgevoerd worden"echo Geen muis- of toetsenbordhandelingen": de uit te voeren inactiviteitsopdracht, de aanhalingstekens zorgen dat de opdracht spaties mag bevattenresume: de hierop volgende opdracht wordt uitgevoerd bij hervatte gebruikersactiviteit"echo Terug activiteit": de uit te voeren opdracht bij hervatte gebruikersactiviteit.Gebruik de sneltoets Ctrl+c om de opdracht af te breken. Druk nogmaals Ctrl+c om de prompt terug aan het begin van de regel te plaatsen.
Daar swayidle op de achtergrond gebruikersactiviteit volgt, kan het voorkomen dat swayidle toch nog actief is. Indien je dit merkt, voer dan de volgende opdracht uit om alle swayidle activiteiten af te breken:
dany@pindabook:~$ killall swayidle
swayidle: geen proces gevonden
Wat in het voorbeeld hierboven dus niet nodig was.
Hoewel je zelf kunt bepalen welke opdrachten je laat uit voeren bij inactiviteit en het hervatten, gaan we als voorbeeld het laptopscherm dimmen bij inactiviteit. Eerst bepalen we de maximale helderheidsinstelling. In een KDE omgeving vraag je dit op met:
dany@pindabook:~$ qdbus6 org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.brightnessMax
10000
Dit gaf op mijn laptop de waarde 10000 op. M.a.w. een helderheidsniveau van 100% komt overeen met 10000. Met wat eenvoudige wiskunde, kom je al snel te weten dat een 1% helderheidstoename of -afname overeen komt met een waardetoename of -afname van 100.
Om het scherm bij inactiviteit te dimmen naar 10% en terug naar 60% bij activiteit gebruik je de volgende ellenlange opdracht:
dany@pindabook:~$ swayidle -w timeout 10 'qdbus6 org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.setBrightness 1000' resume 'qdbus6 org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.setBrightness 6000'
^Cdany@pindabook:~$
Test de opdracht en breek deze dan uiteindelijk af met de sneltoets Ctrl+c.
Maak het script aan met een teksteditor (bijv. nano):
dany@pindabook:~$ nano idledim.sh
Maak het volgende script aan:
GNU nano 8.4 idledim.sh S #!/bin/bash
# Schermhelderheid verlagen bij 10 seconden inactiviteit
swayidle -w timeout 10 'qdbus6 org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.setBrightness 1000'
resume 'qdbus6 org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl org.kde.Solid.PowerManagement.Actions.BrightnessControl.setBrightness 6000'
[ 15 regels geschreven ]
^G Hulp ^O Opslaan ^F Zoeken ^K Knippen ^T Opdracht ^C Positie M-U Terugdraaien M-A Markering M-] Naar haakje M-B Voorgaande ◂ Terug
^X Afsluiten ^R Inlezen ^\ Vervangen ^U Plakken ^J Uitvullen ^/ Naar regel M-E Herdoen M-6 Kopiëren ^B Terugzoeken M-F Volgende ▸ Vooruit
Sla het script op met de sneltoets Ctrl+s en sluit de teksteditor nano af met Ctrl+x.
Voor je dit script automatisch laat starten, test je de werking met de opdracht:
dany@pindabook:~$ bash idledim.sh
^Cdany@pindabook:~$
Als het script goed werkt, kan je de timeout van 10 seconden aanpassen naar elke gewenste waarde.
Om het script automatisch te starten bij het opstarten van de KDE omgeving, start je Systeeminstellingen.
In de categorie Systeem start je het onderdeel Autostart (of zoek rechtstreeks naar Autostart).
Open de keuzelijst + Nieuwe Toevoegen en start de opdracht + Aanmeldscript....
Blader naar en open het script Home/idledim.sh.
Om het script automatisch te kunnen starten, moet het uitvoerbaar zijn. M.a.w. als de knop verschijnt, is dit niet het geval en klik je op de knop om het script alsnog uitvoerbaar te maken.
Sluit Systeeminstellingen en sla de aanpassingen indien nodig op en herstart het systeem.
Om te kijken of het script werkt, kan je naast inactief zijn, je dit ook nagaan in de Systeeminstellingen in het onderdeel Autostart door op het item idledim.sh te kikken waarmee je het logboek van het script kunt raadplegen. Bovenaan kan je met de knop / het script ook manueel stoppen en starten.

idledim.sh gestopt is.
En verwijder daarna het script idledim.sh uit het overzicht met de Aanmeldscripts (knop met rood kruis op het einde van de regel met het script).idledim.sh script bestand:
dany@pindabook:~$ rm idledim.shdany@pindabook:~$ sudo apt remove swayidle
[sudo] wachtwoord voor dany:
VERWIJDEREN:
swayidle
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 1, Niet opwaarderen: 0
Vrijgemaakte ruimte: 60,4 kB
Doorgaan? [J/n]
(Database wordt ingelezen ... 206636 bestanden en mappen momenteel geïnstalleerd.)
swayidle (1.8.0-1) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
dany@pindabook:~$ sudo apt autoremove
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 0, Niet opwaarderen: 0