File: simple-example.py

package info (click to toggle)
gtk-session-lock 0.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,040 kB
  • sloc: ansic: 11,194; python: 1,406; xml: 235; makefile: 6
file content (44 lines) | stat: -rw-r--r-- 1,043 bytes parent folder | download | duplicates (2)
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
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('GtkSessionLock', '0.1')
from gi.repository import Gtk, Gdk, GtkSessionLock

if(not GtkSessionLock.is_supported()):
    quit()

lock = GtkSessionLock.prepare_lock()
display = Gdk.Display.get_default()

def unlock(widget):
    lock.unlock_and_destroy()
    display.sync()
    quit()

def create_lock_window():
    window = Gtk.Window()
    entry = Gtk.Entry(visibility=False,
                      valign=Gtk.Align.CENTER,
                      halign=Gtk.Align.CENTER)
    entry.connect("activate", unlock)
    window.add(entry)
    return window

def on_locked():
    print("Your session is now locked.")

def on_finished():
    print("Finished event received. Session could not be locked.")
    quit()

lock.connect("locked", on_locked)
lock.connect("finished", on_finished)

lock.lock_lock()

for i in range(display.get_n_monitors()):
    window = create_lock_window()
    monitor = display.get_monitor(i)
    lock.new_surface(window, monitor)
    window.show_all()

Gtk.main()