staging.inyokaproject.org

Arbeitsfläche automatisch sperren

Status: Ungelöst | Ubuntu-Version: Ubuntu 15.10 (Wily Werewolf)
Antworten |

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

So, ich hab mal bisl was gebastelt. Ist gerade nur ne ausführbare Datei, die ich dir hier zum Download anbiete. Den Quellcode kannst du gerne auch haben, ich wollte aber - so es denn so funktioniert - noch ein paar Details einbauen.

Falls du lieber warten möchtest und mir nicht vertraust, benutz die Datei einfach nicht ☺ Ich melde mich die Tage nochmal, wenn ich das "drumherum" fertig habe.

/edit:

Falls du die Zeiten anpassen willst, kannst du den Ordner ~/home/USER/.config/koffeinfriedhof anlegen und darin die Datei lockWatcher.conf. Momentan kannst du die Warteschleife (intern) und die erlaubte Abwesenheit einstellen mit

ALLOWED_IDLE_TIME=10000 #default 10000
SLEEPTIME=5 #default 5 Sekunden (ist aber unnötig, das fliegt eh raus :))
lockWatcher (24.2 KiB)
alpha :)
Download lockWatcher

ChickenLipsRfun2eat Team-Icon

Supporter
Avatar von ChickenLipsRfun2eat

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12070

Kleines Update. Nachdem ich ein wenig im Quellcode von lightdm rumgesucht habe, weil ich mir ehrlich gesagt nicht anders zu helfen wusste, bin ich auf eine Datei in /tmp gestoßen. Für jeden Lock wird eine Datei mit dem Namen .X?-lock angelegt, wobei das ? die laufende Nummer darstellt. .X0-lock existiert immer, bei Sperrung wird eine .X1-lock angelegt.

Somit kann man darauf prüfen...

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
export DISPLAY=:0 #benötigt für xprintidle

IDLETIME=10000 #maximale idle-time einstellen

#Funktionsdefinitionsbeispiel um eine Logdatei mit Daten zu füllen
function log() {
#würde man einzelne Teile abfangen wollen, könnte man auch mit $2, etc. weiterarbeiten.
echo "$1" >> /home/BENUTZER/screenlock.logged;
}

#ACHTUNG: vereinfacht für nur einen Nutzer!
if [ -f /tmp/.X1-lock ]
then
#  log "$(date) Bereits gesperrt. Beende..." #nur zu Testzwecken aktivieren!
  exit 0
fi

#Auslesen der Ganzzahl von xprintidle
if [[ $(/usr/bin/xprintidle) -gt $IDLETIME ]]
  then
#  log "sperre Bildschirm..." #nur zu Testzwecken aktivieren
  $( qdbus --system org.freedesktop.DisplayManager /org/freedesktop/DisplayManager/Seat0 org.freedesktop.DisplayManager.Seat.Lock )
fi

Ungetestet, da nur eben hier abgeändert. Für Unity gibt es auch noch eine Alternative zu xprintidle über dbus. Ich habe im Zuge meiner C++ Spielerei einige DE's überprüft. Unity, KDE/Plasma, LXQt brauchen kein xprintidle und bieten den wert per dbus an. Lediglich MATE hat xprintidle nötig, xfce muss ich noch testen. Ich werde das fertige Produkt dann hier verfügbar machen und natürlich auch das Script entsprechend anpassen.

Dies erstmal als Info, dass ichs nicht vergessen habe ☺

/edit: Funktioniert soweit. Man muss nur den BENUTZER ändern, wenn man ein log will 😉

Antworten |