summaryrefslogtreecommitdiffstats
path: root/pylock.py
blob: 6903af51f5395bec25040a0a7afe50db049ae1da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env python3

import signal
import sys
import os
import pwd
import locale

from gi.repository import Gtk, Gdk, Gio

from DBus import DBus
from Locker import Locker
from LockWindow import LockWindow
import pam


def get_username():
    return pwd.getpwuid(os.getuid())[0]


theme = 'UzL-login'
timeout = 500
logoutTimeout = 15
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)


locale.setlocale(locale.LC_ALL, '')
locale.bindtextdomain('pylock', '/home/neoraider/Devel/Python/pylock/locale')
locale.textdomain('pylock')

Gtk.Settings.get_default().set_property('gtk-theme-name', theme)




window = LockWindow()


def lock(timeLeft):
    window.updateLockMessage(username, timeLeft)
    window.lock()

def logout():
    exit()

def updateTimeout(timeLeft):
    window.updateLockMessage(username, timeLeft)


locker = Locker(timeout, lock, window.unlock, logoutTimeout, logout, updateTimeout)

dbus = DBus(locker)


pamAuth = pam.pam()

def tryUnlock(w, password):
    if pamAuth.authenticate(username, password):
        locker.unlock()
    else:
        window.reset()
        window.setAuthMessage(pamAuth.reason)

    return True

window.connect('logout', lambda w: locker.logout())
window.connect('tryUnlock', tryUnlock)

Gtk.main()