Näytönsäästäjäskriptit
Tänään (tai eilen) sain uuden korttini ja kaikki on onnellisena ok. Tuunasin illan pimetessä vielä vanhat näytönsäästöskriptini kuntoon. Nyt edes osa wateista säästyy, toivottavasti…
Kaikki alkoi xlock-ohjelmasta ja mustista ruuduista. Siihen tuli sitten hiiren disablointia ja näyttöjen sammuttelua ajan myötä. Uusin haaste on tosiaan se, että uusi Geforce-korttini ei mene idle-virroille, jos on liian monta näyttöä aktiivisena. Koodasin siis lisää tavaraa mukaan.
Pidemmittä jaaritteluitta, tässä on 4-osaisen purkan "pääohjelma":
#!/bin/sh BIN=/home/progo/pika/xlockC.d xlock -startCmd "$BIN/xlockC_start" -endCmd "$BIN/xlockC_stop" -mode blank \ -echokeys -timeelapsed +usefirst
Aiemmin kaikki oli samassa, mutta nyt refaktoroin xlockC
-skriptin
kaveriksi ihan erilliset apuskriptit ja laitoin ne alihakemistoon,
etteivät turhaan sotke $PATH
:ssani.
Kun skripti käynnistetään, ajetaan xlockC_start
:
#!/bin/bash # Suorita toimet, kun näytöt pannaan nukkumaan. ### Hiiri pois käytöstä mouseid=$($(dirname $0)/xlockC_mouseid.sh) xinput --set-prop "$mouseid" "Device Enabled" "0" # näytöt pois virransäästösyistä. xrandr --output DVI-D-1 --off xrandr --output DVI-D-0 --off # loput näytöt nukkumaan xset dpms force off
Vastaavasti näytöt ja hiiret pannaan takaisin päälle.
#!/bin/bash # Suorita toimet, kun näytöt herätetään. # Hiiren herätys. mouseid=$($(dirname $0)/xlockC_mouseid.sh) xinput --set-prop "$mouseid" "Device Enabled" "1" # Näytöt ylös. xrandr --output DVI-D-0 --auto --left-of VGA-0 xrandr --output DVI-D-1 --auto --left-of DVI-D-0
Ja hiiren dynaamisen laitekoodin saa oheinen taidonnäyte:
#!/bin/bash # hae hiiren ID awkscript='/Mouse/ { for(i=0; i<=NF; i++) { split($i, ar, "="); if (ar[1] == "id") print ar[2]; }}' mouseid=`xinput list | awk "$awkscript"` echo $mouseid
Testaus
Ja näin. Sopivalla loopilla saatiin testattua myös virransäästön toteutuminen:
while `true`; do nvidia-settings -tq GPUCurrentPerfLevel ; sleep 1 ; done
Luvut painuvat kakkosesta ensin ykköseen ja lopulta nollaan. Ja muuten vain tiedoksi: tällä kortilla tasot menevät näin:
~ % nvidia-settings -q GPUPerfModes Attribute 'GPUPerfModes' (pihlaja:0.0): perf=0, nvclock=324, memclock=324 perf=1, nvclock=540, memclock=810 perf=2, nvclock=1110, memclock=2500