3 private LightDM.Greeter greeter;
4 private Gtk.Entry username_entry;
5 private Gtk.Entry password_entry;
6 private Gtk.Label message_label;
10 greeter = new LightDM.Greeter ();
11 greeter.connected.connect (connect_cb);
12 greeter.show_prompt.connect (show_prompt_cb);
13 greeter.show_message.connect (show_message_cb);
14 greeter.show_error.connect (show_message_cb);
15 greeter.authentication_complete.connect (authentication_complete_cb);
16 greeter.timed_login.connect (timed_login_cb);
17 greeter.quit.connect (quit_cb);
22 greeter.connect_to_server ();
25 private void username_activate_cb (Gtk.Entry entry)
27 username_entry.sensitive = false;
28 greeter.login (username_entry.text);
31 private void password_activate_cb (Gtk.Entry entry)
33 password_entry.sensitive = false;
34 greeter.provide_secret (password_entry.text);
37 private void connect_cb (LightDM.Greeter greeter)
39 var display = Gdk.Display.get_default ();
40 var screen = display.get_default_screen ();
42 var window = new Gtk.Window ();
43 window.set_default_size (screen.get_width (), screen.get_height ());
45 var vbox = new Gtk.VBox (false, 0);
48 var login_align = new Gtk.Alignment (0.5f, 0.5f, 0.0f, 0.0f);
49 vbox.pack_start (login_align, true, true, 0);
51 var login_vbox = new Gtk.VBox (false, 6);
52 login_vbox.border_width = 12;
53 login_align.add (login_vbox);
55 var logo_image = new Gtk.Image.from_icon_name ("computer", Gtk.IconSize.DIALOG);
56 logo_image.pixel_size = 64;
57 login_vbox.pack_start (logo_image, false, false, 0);
58 login_vbox.pack_start (new Gtk.Label (greeter.hostname), false, false, 0);
60 message_label = new Gtk.Label ("");
61 login_vbox.pack_start (message_label, false, false, 0);
62 message_label.no_show_all = true;
64 username_entry = new Gtk.Entry ();
65 login_vbox.pack_start (username_entry, false, false, 0);
66 username_entry.activate.connect (username_activate_cb);
68 password_entry = new Gtk.Entry ();
69 password_entry.visibility = false;
70 password_entry.sensitive = false;
71 login_vbox.pack_start (password_entry, false, false, 0);
72 password_entry.activate.connect (password_activate_cb);
73 password_entry.no_show_all = true;
76 username_entry.grab_focus ();
79 private void show_prompt_cb (LightDM.Greeter greeter, string text)
81 password_entry.show ();
82 password_entry.sensitive = true;
83 password_entry.grab_focus ();
86 private void show_message_cb (LightDM.Greeter greeter, string text)
88 message_label.label = text;
89 message_label.show ();
92 private void authentication_complete_cb (LightDM.Greeter greeter)
94 password_entry.hide ();
95 password_entry.text = "";
96 username_entry.text = "";
97 username_entry.sensitive = true;
98 username_entry.grab_focus ();
99 if (greeter.is_authenticated)
100 greeter.start_default_session ();
103 message_label.label = "Failed to authenticate";
104 message_label.show ();
108 private void timed_login_cb (LightDM.Greeter greeter, string username)
110 greeter.login (greeter.timed_login_user);
113 private void quit_cb (LightDM.Greeter greeter)
118 static int main (string[] args)
122 var g = new Greeter ();