LdmGreeter
ldm_greeter_new
ldm_greeter_connect
+ldm_greeter_get_hostname
ldm_greeter_get_num_users
ldm_greeter_get_users
ldm_greeter_get_languages
static LdmGreeter *greeter;
static GtkListStore *user_model;
-static GtkWidget *user_window, *vbox, *label, *user_view;
+static GtkWidget *user_window, *vbox, *message_label, *user_view;
static GtkWidget *username_entry, *password_entry;
static GtkWidget *panel_window;
static void
show_message_cb (LdmGreeter *greeter, const gchar *text)
{
- gtk_widget_show (label);
- gtk_label_set_text (GTK_LABEL (label), text);
+ gtk_widget_show (message_label);
+ gtk_label_set_text (GTK_LABEL (message_label), text);
}
static void
}
else
{
- gtk_widget_show (label);
- gtk_label_set_text (GTK_LABEL (label), "Failed to authenticate");
+ gtk_widget_show (message_label);
+ gtk_label_set_text (GTK_LABEL (message_label), "Failed to authenticate");
gtk_entry_set_text (GTK_ENTRY (password_entry), "");
gtk_widget_grab_focus (username_entry);
}
ldm_greeter_set_session (greeter, g_object_get_data (G_OBJECT (widget), "key"));
}
+static void
+a11y_font_cb (GtkWidget *widget)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ g_object_set (gtk_settings_get_default (), "gtk-font-name", "UbuntuBeta 20", NULL);
+ else
+ g_object_set (gtk_settings_get_default (), "gtk-font-name", "UbuntuBeta 10", NULL);
+}
+
+static void
+a11y_contrast_cb (GtkWidget *widget)
+{
+ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
+ g_object_set (gtk_settings_get_default (), "gtk-theme-name", "HighContrastInverse", NULL);
+ else
+ g_object_set (gtk_settings_get_default (), "gtk-theme-name", "Ambiance", NULL);
+ ldm_greeter_set_session (greeter, g_object_get_data (G_OBJECT (widget), "key"));
+}
+
int
main(int argc, char **argv)
{
GdkScreen *screen;
gint screen_width, screen_height;
GtkAllocation allocation;
+ GtkWidget *logo_image;
GtkWidget *option_menu, *power_menu;
GtkWidget *menu_bar, *menu, *menu_item;
GdkColor background_color;
gint n_power_items = 0;
+ gtk_rc_add_default_file ("foo");
+ gchar **i, **files = gtk_rc_get_default_files ();
+ for (i = files; *i; i++)
+ {
+ printf("%s\n", *i);
+ }
+
gtk_init (&argc, &argv);
+ g_object_set (gtk_settings_get_default (), "gtk-theme-name", "HumanLogin", NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-icon-theme-name", "LoginIcons", NULL);
+// g_object_set (gtk_settings_get_default (), "gtk-cursor-theme-name", "DMZ-White", NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-font-name", "UbuntuBeta 10", NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-xft-dpi", 1024*96, NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-xft-hinting", 1, NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-xft-hintstyle", "hintslight", NULL);
+ g_object_set (gtk_settings_get_default (), "gtk-xft-rgba", "rgb", NULL);
+
greeter = ldm_greeter_new ();
g_signal_connect (G_OBJECT (greeter), "show-prompt", G_CALLBACK (show_prompt_cb), NULL);
vbox = gtk_vbox_new (FALSE, 6);
gtk_container_add (GTK_CONTAINER (user_window), vbox);
- label = gtk_label_new ("");
- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
- gtk_widget_set_no_show_all (label, TRUE);
+ logo_image = gtk_image_new_from_icon_name ("computer", GTK_ICON_SIZE_DIALOG);
+ gtk_image_set_pixel_size (GTK_IMAGE (logo_image), 64);
+ gtk_box_pack_start (GTK_BOX (vbox), logo_image, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (ldm_greeter_get_hostname (greeter)), FALSE, FALSE, 0);
+
+ message_label = gtk_label_new ("");
+ gtk_box_pack_start (GTK_BOX (vbox), message_label, FALSE, FALSE, 0);
+ gtk_widget_set_no_show_all (message_label, TRUE);
user_model = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF);
items = ldm_greeter_get_users (greeter);
gtk_widget_set_no_show_all (username_entry, TRUE);
password_entry = gtk_entry_new ();
- //gtk_entry_set_visibility (GTK_ENTRY (password_entry), FALSE);
+ gtk_entry_set_visibility (GTK_ENTRY (password_entry), FALSE);
gtk_widget_set_sensitive (password_entry, FALSE);
gtk_box_pack_start (GTK_BOX (vbox), password_entry, FALSE, FALSE, 0);
g_signal_connect (password_entry, "activate", G_CALLBACK (password_activate_cb), NULL);
gtk_menu_item_set_label (GTK_MENU_ITEM (menu_item), ""); // NOTE: Needed to make the icon show as selected
gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menu_item), TRUE);
gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item);
-
menu = gtk_menu_new ();
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new_with_label ("?1"));
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new_with_label ("?2"));
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new_with_label ("?3"));
+
+ menu_item = gtk_check_menu_item_new_with_label (_("Large Font"));
+ g_signal_connect (menu_item, "toggled", G_CALLBACK (a11y_font_cb), NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+
+ menu_item = gtk_check_menu_item_new_with_label (_("High Constrast"));
+ g_signal_connect (menu_item, "toggled", G_CALLBACK (a11y_contrast_cb), NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
menu_item = gtk_menu_item_new_with_label (_("Options"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), menu_item);
return JSValueMakeString (context, string);
}
+static JSValueRef
+get_hostname_cb (JSContextRef context,
+ JSObjectRef thisObject,
+ JSStringRef propertyName,
+ JSValueRef *exception)
+{
+ LdmGreeter *greeter = JSObjectGetPrivate (thisObject);
+ JSStringRef string;
+
+ string = JSStringCreateWithUTF8CString (ldm_greeter_get_hostname (greeter));
+
+ return JSValueMakeString (context, string);
+}
+
static JSValueRef
get_num_users_cb (JSContextRef context,
JSObjectRef thisObject,
static const JSStaticValue ldm_greeter_values[] =
{
+ { "hostname", get_hostname_cb, NULL, kJSPropertyAttributeReadOnly },
{ "users", get_users_cb, NULL, kJSPropertyAttributeReadOnly },
{ "languages", get_languages_cb, NULL, kJSPropertyAttributeReadOnly },
{ "language", get_language_cb, NULL, kJSPropertyAttributeReadOnly },
#include <stdlib.h>
#include <string.h>
#include <locale.h>
+#include <sys/utsname.h>
#include <gio/gdesktopappinfo.h>
#include <dbus/dbus-glib.h>
enum {
PROP_0,
+ PROP_HOSTNAME,
PROP_NUM_USERS,
PROP_USERS,
PROP_LAYOUTS,
Display *display;
+ gchar *hostname;
+
gboolean have_users;
GList *users;
return result;
}
+/**
+ * ldm_greeter_get_hostname:
+ * @greeter: a #LdmGreeter
+ *
+ * Return value: The host this greeter is displaying
+ **/
+const gchar *
+ldm_greeter_get_hostname (LdmGreeter *greeter)
+{
+ if (!greeter->priv->hostname)
+ {
+ struct utsname info;
+ uname (&info);
+ greeter->priv->hostname = g_strdup (info.nodename);
+ }
+
+ return greeter->priv->hostname;
+}
+
#define TYPE_USER dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID)
#define TYPE_USER_LIST dbus_g_type_get_collection ("GPtrArray", TYPE_USER)
ldm_greeter_get_can_suspend (LdmGreeter *greeter)
{
DBusGProxy *proxy;
- gboolean result = FALSE;
+ gboolean result = TRUE;
GError *error = NULL;
proxy = dbus_g_proxy_new_for_name (greeter->priv->system_bus,
self = LDM_GREETER (object);
switch (prop_id) {
+ case PROP_HOSTNAME:
+ g_value_set_string (value, ldm_greeter_get_hostname (self));
+ break;
case PROP_NUM_USERS:
g_value_set_int (value, ldm_greeter_get_num_users (self));
break;
object_class->set_property = ldm_greeter_set_property;
object_class->get_property = ldm_greeter_get_property;
- g_object_class_install_property(object_class,
- PROP_NUM_USERS,
- g_param_spec_int("num-users",
- "num- users",
- "Number of login users",
- 0, G_MAXINT, 0,
- G_PARAM_READABLE));
- /*g_object_class_install_property(object_class,
- PROP_USERS,
- g_param_spec_list("users",
- "users",
- "Users that can login"));
- g_object_class_install_property(object_class,
- PROP_LAYOUTS,
- g_param_spec_list("layouts",
- "layouts",
- "Available keyboard layouts"));*/
- g_object_class_install_property(object_class,
- PROP_LAYOUT,
- g_param_spec_string("layout",
- "layout",
- "Current keyboard layout",
- NULL,
- G_PARAM_READWRITE));
- /*g_object_class_install_property(object_class,
- PROP_SESSIONS,
- g_param_spec_list("sessions",
- "sessions",
- "Available sessions"));*/
- g_object_class_install_property(object_class,
- PROP_SESSION,
- g_param_spec_string("session",
- "session",
- "Selected session",
- NULL,
- G_PARAM_READWRITE));
- g_object_class_install_property(object_class,
- PROP_TIMED_LOGIN_USER,
- g_param_spec_string("timed-login-user",
- "timed-login-user",
- "User to login as when timed expires",
- NULL,
- G_PARAM_READABLE));
- g_object_class_install_property(object_class,
- PROP_TIMED_LOGIN_DELAY,
- g_param_spec_int("login-delay",
- "login-delay",
- "Number of seconds until logging in as default user",
- G_MININT, G_MAXINT, 0,
- G_PARAM_READABLE));
- g_object_class_install_property(object_class,
- PROP_IS_AUTHENTICATED,
- g_param_spec_boolean("is-authenticated",
- "is-authenticated",
- "TRUE if the selected user is authenticated",
- FALSE,
- G_PARAM_READABLE));
- g_object_class_install_property(object_class,
- PROP_CAN_SUSPEND,
- g_param_spec_boolean("can-suspend",
- "can-suspend",
- "TRUE if allowed to suspend the system",
- FALSE,
- G_PARAM_READABLE));
- g_object_class_install_property(object_class,
- PROP_CAN_HIBERNATE,
- g_param_spec_boolean("can-hibernate",
- "can-hibernate",
- "TRUE if allowed to hibernate the system",
- FALSE,
- G_PARAM_READABLE));
- g_object_class_install_property(object_class,
- PROP_CAN_RESTART,
- g_param_spec_boolean("can-restart",
- "can-restart",
- "TRUE if allowed to restart the system",
- FALSE,
- G_PARAM_READABLE));
- g_object_class_install_property(object_class,
- PROP_CAN_SHUTDOWN,
- g_param_spec_boolean("can-shutdown",
- "can-shutdown",
- "TRUE if allowed to shutdown the system",
- FALSE,
- G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_NUM_USERS,
+ g_param_spec_string ("hostname",
+ "hostname",
+ "Hostname displaying greeter for",
+ NULL,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_NUM_USERS,
+ g_param_spec_int ("num-users",
+ "num-users",
+ "Number of login users",
+ 0, G_MAXINT, 0,
+ G_PARAM_READABLE));
+ /*g_object_class_install_property (object_class,
+ PROP_USERS,
+ g_param_spec_list ("users",
+ "users",
+ "Users that can login"));
+ g_object_class_install_property (object_class,
+ PROP_LAYOUTS,
+ g_param_spec_list ("layouts",
+ "layouts",
+ "Available keyboard layouts"));*/
+ g_object_class_install_property (object_class,
+ PROP_LAYOUT,
+ g_param_spec_string ("layout",
+ "layout",
+ "Current keyboard layout",
+ NULL,
+ G_PARAM_READWRITE));
+ /*g_object_class_install_property (object_class,
+ PROP_SESSIONS,
+ g_param_spec_list ("sessions",
+ "sessions",
+ "Available sessions"));*/
+ g_object_class_install_property (object_class,
+ PROP_SESSION,
+ g_param_spec_string ("session",
+ "session",
+ "Selected session",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_TIMED_LOGIN_USER,
+ g_param_spec_string ("timed-login-user",
+ "timed-login-user",
+ "User to login as when timed expires",
+ NULL,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_TIMED_LOGIN_DELAY,
+ g_param_spec_int ("login-delay",
+ "login-delay",
+ "Number of seconds until logging in as default user",
+ G_MININT, G_MAXINT, 0,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_IS_AUTHENTICATED,
+ g_param_spec_boolean ("is-authenticated",
+ "is-authenticated",
+ "TRUE if the selected user is authenticated",
+ FALSE,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_CAN_SUSPEND,
+ g_param_spec_boolean ("can-suspend",
+ "can-suspend",
+ "TRUE if allowed to suspend the system",
+ FALSE,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_CAN_HIBERNATE,
+ g_param_spec_boolean ("can-hibernate",
+ "can-hibernate",
+ "TRUE if allowed to hibernate the system",
+ FALSE,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_CAN_RESTART,
+ g_param_spec_boolean ("can-restart",
+ "can-restart",
+ "TRUE if allowed to restart the system",
+ FALSE,
+ G_PARAM_READABLE));
+ g_object_class_install_property (object_class,
+ PROP_CAN_SHUTDOWN,
+ g_param_spec_boolean ("can-shutdown",
+ "can-shutdown",
+ "TRUE if allowed to shutdown the system",
+ FALSE,
+ G_PARAM_READABLE));
/**
* LdmGreeter::show-prompt:
gboolean ldm_greeter_connect (LdmGreeter *greeter);
+const gchar *ldm_greeter_get_hostname (LdmGreeter *greeter);
+
gint ldm_greeter_get_num_users (LdmGreeter *greeter);
const GList *ldm_greeter_get_users (LdmGreeter *greeter);