summaryrefslogtreecommitdiffstats
path: root/pylock.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylock.py')
-rw-r--r--pylock.py51
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()