diff options
Diffstat (limited to 'pylock.py')
-rw-r--r-- | pylock.py | 43 |
1 files changed, 31 insertions, 12 deletions
@@ -5,6 +5,7 @@ import sys import os import pwd import locale +import argparse from gi.repository import Gtk, Gdk, Gio @@ -14,14 +15,23 @@ from LockWindow import LockWindow import pam +_ = locale.gettext + + def get_username(): return pwd.getpwuid(os.getuid())[0] theme = 'UzL-login' -timeout = 500 -logoutTimeout = 15 -username = get_username() + + +parser = argparse.ArgumentParser(prog='pylock', description=_('GTK-based screen locker.')) +parser.add_argument('-t', '--timeout', type=int, default=0, help=_('Start in daemon mode that will automatically activate after a given time of inactivity.')) +parser.add_argument('-l', '--logout', type=int, default=0, help=_('Allow to logout the current user after a given time.')) +parser.add_argument('-c', '--logout-command', help=_('Specifies the command to be called to log out a user.')) +parser.add_argument('-u', '--username', default=get_username(), help=_('Set the name of the user that is able to unlock the screen.')) + +args = parser.parse_args() def handler(signum, frame): @@ -34,38 +44,47 @@ 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.updateLockMessage(args.username, timeLeft) window.lock() def logout(): - exit() + try: + os.system(args.logout_command) + except: + pass + + window.reset() def updateTimeout(timeLeft): - window.updateLockMessage(username, timeLeft) + window.updateLockMessage(args.username, timeLeft) +if args.logout_command is None: + locker = Locker(args.timeout, lock, window.unlock) +else: + locker = Locker(args.timeout, lock, window.unlock, args.logout, logout, updateTimeout) -locker = Locker(timeout, lock, window.unlock, logoutTimeout, logout, updateTimeout) -dbus = DBus(locker) +if args.timeout != 0: + dbus = DBus(locker) pamAuth = pam.pam() def tryUnlock(w, password): - if pamAuth.authenticate(username, password): + if pamAuth.authenticate(args.username, password): locker.unlock() + + if args.timeout == 0: + Gtk.main_quit() else: window.reset() window.setAuthMessage(pamAuth.reason) |