diff options
Diffstat (limited to 'pylock.py')
-rw-r--r-- | pylock.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pylock.py b/pylock.py new file mode 100644 index 0000000..d42aa46 --- /dev/null +++ b/pylock.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +import signal +import sys +import os +import pwd + +from gi.repository import Gtk, Gdk + +from Locker import Locker +from LockWindow import LockWindow +import pam + + +def get_username(): + return pwd.getpwuid(os.getuid())[0] + + +theme = 'UzL-login' +timeout = 5 +username = get_username() + + +def handler(signum, frame): + Gtk.main_quit() + + +signal.signal(signal.SIGINT, handler) +signal.signal(signal.SIGTERM, handler) +signal.signal(signal.SIGQUIT, handler) + + +Gtk.Settings.get_default().set_property('gtk-theme-name', theme) + +window = LockWindow() +locker = Locker(timeout, lambda: window.lock(), lambda: window.unlock()) +pamAuth = pam.pam() + + +def tryUnlock(w, password): + if pamAuth.authenticate(username, password): + locker.unlock() + else: + window.reset() + window.setMessage(pamAuth.reason) + + return True + +window.connect('tryUnlock', tryUnlock) + +Gtk.main() |