Script: Monitor vertraagd uitschakelen

Alles over programmeren in Linux
Gebruikersavatar
Mogenblue
Senior
Senior
Berichten: 132
Lid geworden op: Wo 18 Okt 2017, 08:27
Locatie: Amsterdam

Script: Monitor vertraagd uitschakelen

Berichtdoor Mogenblue » Di 01 Jun 2021, 18:27

Als je computer als server werkt moet je hem aan laten staan wanneer je klaar bent met je bezigheden. Maar je kunt wel de monitor gewoon uitschakelen. In Linux Mint is daar een werkbalkhulpje voor dat het scherm uitschakelt en een in te stellen aantal seconden de muis uitschakelt om te voorkomen dat door de muisbeweging de monitor meteen weer aan gaat.

Dit script doet ongeveer hetzelfde. Het schakelt de muis uit, laat een voortgangsbalk zien wanneer de monitor uitgaat en wanneer de monitor uit is wordt de muis weer ingeschakeld.
Dit script kun je met een buroblad starter op je buroblad zetten, maar je kunt het ook met een sneltoets aan een van de toetsen op je toetstenbord verbinden. Bijvoorbeeld de pauze toets.

Het script heet monitor-uitschakelen.sh en dit staat er in:

Code: Selecteer alles

#!/bin/bash

AantalSeconden=15
WindowText='Vlug, zet de muis weg!'

# lees mouse id in een terminal met
#xinput list
# of
xinput list | grep Mouse

MouseID=11

#--------------------------------------------------

# disable mouse
xinput --disable $MouseID

# Bereken stapgrootte voor de voortgangsbalk
BalkStap=$(echo "scale=0; 100 / $AantalSeconden " | bc)

(

#initialiseer startwaarde voor de voortgangsbalk
BalkTot=$BalkStap

# loop doorlopen
for (( a=0; a<$AantalSeconden; a++ ))
do
echo "${BalkTot}"
echo "# $WindowText"
sleep 1
let BalkTot=BalkTot+BalkStap
done

# Completeer de voortgangsbalk
echo "100"
echo "# $WindowText"

) |
zenity --progress \
--title="Aftellen naar monitor uitschakelen" \
--text="$WindowText" \
--percentage=0 \
--auto-close --no-cancel --width=400

# schakel de monitor uit
xset dpms force suspend

# enable mouse
xinput --enable $MouseID
Om de ID van je muis te lezen moet je in een terminal het commando
xinput list
uitvoeren. Met
xinput list | grep Mouse
filter je de regel eruit waar het om gaat.

Het is niet op elke computer nodig om de muis tijdelijk uit te schakelen. Als je dat liever niet doet kun je de regel voor de uitschakeling neutraliseren door er een # teken voor te zetten:
#xinput --disable $MouseID

Om dit script met een sneltoets aan je toetsenbord te verbinden moet je het volgende doen:
Rechts klik op de werkbalk
kies Systeeminstellingen
ga naar Toetsenbord
kies de tab Sneltoetsen
druk op de knop Voeg aangepaste sneltoets toe
vul een naam in, bijvoorbeeld monitor-suspend
selecteer dan bij de opdracht het script monitor-uitschakelen.sh
klik op toevoegen
klik dan in het onderste venster toetsenbordbindingen op de eerste regel niet-toegewezen
klik er nogmaals op om een toets te selecteren
druk op de pauze toets op het toetsenbord om deze aan de opdracht te binden
sluit het venster

Als je in een script de monitor wil inschakelen kun je de volgende opdracht gebruiken:
xset dpms force on
Gebruikersavatar
Mogenblue
Senior
Senior
Berichten: 132
Lid geworden op: Wo 18 Okt 2017, 08:27
Locatie: Amsterdam

Re: Script: Monitor vertraagd uitschakelen

Berichtdoor Mogenblue » Di 01 Jun 2021, 18:30

Gebruikersavatar
Mogenblue
Senior
Senior
Berichten: 132
Lid geworden op: Wo 18 Okt 2017, 08:27
Locatie: Amsterdam

Re: Script: Monitor vertraagd uitschakelen

Berichtdoor Mogenblue » Wo 02 Jun 2021, 15:01

Dit is een open source applicatie van Mogenblue.

100% open source
Gebruikersavatar
Mogenblue
Senior
Senior
Berichten: 132
Lid geworden op: Wo 18 Okt 2017, 08:27
Locatie: Amsterdam

Re: Script: Monitor vertraagd uitschakelen

Berichtdoor Mogenblue » Za 12 Jun 2021, 06:48

Als je wil kun je ook nog de muis op een vaste positie zetten. Dat gaat met de opdracht
xdotool mousemove 200 200
aan het eind worden de x en y coördinaten gegeven van het punt waar je de muis wil hebben.

xdotool kun je in een terminal installeren met
sudo apt-get install xdotool

Het script ziet er dan als volgt uit:
monitor-uitschakelen.sh

Code: Selecteer alles

#!/bin/bash

AantalSeconden=20
WindowText='Vlug, zet de muis weg!'

# lees mouse id in een terminal met
# xinput list
# of meer precies
# xinput list | grep Mouse
# id kan per computer verschillen

MouseID=9

# Doelpositie vd muis
MouseX=960
MouseY=580

# xdotool kan worden geïnstalleerd met
# sudo apt-get install xdotool

#----------------------------------------------------------

echo .
echo .
echo .

# disable mouse
xinput --disable $MouseID

# set muis op doel positie
xdotool mousemove $MouseX $MouseY

# Bereken stapgrootte voor de voortgangsbalk
BalkStap=$(echo "scale=0; 100 / $AantalSeconden " | bc)

#initialiseer startwaarde voor de voortgangsbalk
BalkTot=$BalkStap

(

# loop doorlopen
for (( a=0; a<$AantalSeconden; a++ ))
do
echo "${BalkTot}"
echo "# $WindowText"
sleep 1
let BalkTot=BalkTot+BalkStap
done

# Completeer de voortgangsbalk
echo "100"
echo "# $WindowText"

) |
zenity --progress \
--title="Aftellen naar monitor uitschakelen" \
--text="$WindowText" \
--percentage=0 \
--auto-close --no-cancel --width=400

# schakel de monitor uit
xset dpms force suspend

# enable mouse
xinput --enable $MouseID

Met dit script wordt de muis iets boven het midden van een FHD scherm geplaatst (1920x1080 -> 960x590).

Referenties:
How to set cursor position with command/script?

Terug naar “Programmeren”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast