예제 #1
0
int
main (int argc, char *argv[])
{
	GtkWidget  *dialog;
	GtkWidget  *browse_button;
	GtkWidget  *help_button;
	GtkWidget  *face_image;	
	char	   *greeter;
	int	    max_size;

	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
	textdomain (GETTEXT_PACKAGE);
	gtk_init(&argc, &argv);
	photofile = g_build_filename (g_get_home_dir (), ".face", NULL);

	/* Read config data in bulk */
	mdmcomm_comm_bulk_start ();	
	max_size     = mdm_config_get_int (MDM_KEY_USER_MAX_FILE);
	max_width    = mdm_config_get_int (MDM_KEY_MAX_ICON_WIDTH);
	max_height   = mdm_config_get_int (MDM_KEY_MAX_ICON_HEIGHT);
	greeter      = mdm_config_get_string (MDM_KEY_GREETER);
	facedir      = mdm_config_get_string (MDM_KEY_GLOBAL_FACE_DIR);
	/* At this point we are done using the socket, so close it */
	mdmcomm_comm_bulk_stop ();
	imagename    = NULL;

	gtk_window_set_default_icon_name ("stock_person");

	xml = glade_xml_new (MDM_GLADE_DIR "/mdmphotosetup.glade", NULL, NULL);

	dialog	      = glade_xml_get_widget (xml, "face_dialog");
	face_image    = glade_xml_get_widget (xml, "face_image");
	browse_button = glade_xml_get_widget (xml, "browse_button");
	help_button   = glade_xml_get_widget (xml, "helpbutton1");

	gtk_widget_set_size_request (browse_button, MAX (max_width, 230), MAX (max_height, 130));

	if (g_access (photofile, R_OK) == 0) {
		gtk_image_set_from_file (GTK_IMAGE (face_image),
					 photofile);
	} else {
		gtk_image_set_from_icon_name (GTK_IMAGE (face_image),
					      "stock_person",
					      GTK_ICON_SIZE_DIALOG);
	}

	g_signal_connect (browse_button, "clicked",
			  G_CALLBACK (browse_button_cb), dialog);
	g_signal_connect (help_button, "clicked",
			  G_CALLBACK (help_button_cb), dialog);

	g_signal_connect (dialog, "response",
			  G_CALLBACK (dialog_response), NULL);

	gtk_widget_show_all (dialog);
	gtk_main ();

	return 0;
}
예제 #2
0
파일: mdmgreeter.c 프로젝트: AlbertJP/mdm
gboolean
mdm_common_is_action_available (gchar *action)
{
	gchar **allowsyscmd = NULL;
	const gchar *allowsyscmdval;
	gboolean ret = FALSE;
	int i;

	allowsyscmdval = mdm_config_get_string (MDM_KEY_SYSTEM_COMMANDS_IN_MENU);
	if (allowsyscmdval)
		allowsyscmd = g_strsplit (allowsyscmdval, ";", 0);

	if (allowsyscmd) {
		for (i = 0; allowsyscmd[i] != NULL; i++) {
			if (strcmp (allowsyscmd[i], action) == 0) {
				ret = TRUE;
				break;
			}
		}
	}

#ifdef HAVE_CHKAUTHATTR
	if (ret == TRUE) {
		gchar **rbackeys = NULL;
		const gchar *rbackeysval;
		const char *mdmuser;

		mdmuser     = mdm_config_get_string (MDM_KEY_USER);
		rbackeysval = mdm_config_get_string (MDM_KEY_RBAC_SYSTEM_COMMAND_KEYS);
		if (rbackeysval)
			rbackeys = g_strsplit (rbackeysval, ";", 0);

		if (rbackeys) {
			for (i = 0; rbackeys[i] != NULL; i++) {
				gchar **rbackey = g_strsplit (rbackeys[i], ":", 2);

				if (mdm_vector_len (rbackey) == 2 &&
				    ! ve_string_empty (rbackey[0]) &&
				    ! ve_string_empty (rbackey[1]) &&
				    strcmp (rbackey[0], action) == 0) {

					if (!chkauthattr (rbackey[1], mdmuser)) {
						g_strfreev (rbackey);
						ret = FALSE;
						break;
					}
				}
				g_strfreev (rbackey);
			}
		}
		g_strfreev (rbackeys);
	}
#endif
	g_strfreev (allowsyscmd);

	return ret;
}
예제 #3
0
static void 
mdm_greeter_users_init (void)
{
	gint   size_of_users = 0;

	defface = mdm_common_get_face (NULL,
				       mdm_config_get_string (MDM_KEY_DEFAULT_FACE),
				       mdm_config_get_int (MDM_KEY_MAX_ICON_WIDTH),
				       mdm_config_get_int (MDM_KEY_MAX_ICON_HEIGHT));
	if (! defface) {
		mdm_common_warning ("Can't open DefaultImage: %s!",
			mdm_config_get_string (MDM_KEY_DEFAULT_FACE));
	}

	mdm_users_init (&users, &users_string, NULL, defface,
			&size_of_users, MDM_IS_LOCAL, !DOING_MDM_DEVELOPMENT);
}
예제 #4
0
void
greeter_item_timed_start (void)
{
  int timeddelay = mdm_config_get_int (MDM_KEY_TIMED_LOGIN_DELAY);

  if (timed_handler_id == 0 &&
      mdm_config_get_bool (MDM_KEY_TIMED_LOGIN_ENABLE) &&
      ! ve_string_empty (mdm_config_get_string (MDM_KEY_TIMED_LOGIN)) &&
      timeddelay > 0)
    {
      mdm_timed_delay  = timeddelay;
      timed_handler_id = g_timeout_add (1000, mdm_timer, NULL);
    }
}
/* Callback function for list style custom lists */
static void
list_selected (GtkTreeSelection *selection, GreeterItemInfo *item)
{
  GtkTreeModel *tm = NULL;
  GtkTreeIter iter = {0};
  char *id = NULL;
  char *file;

  if (ve_string_empty (item->id))
    return;

  if (gtk_tree_selection_get_selected (selection, &tm, &iter))
    {
      gtk_tree_model_get (tm, &iter, GREETER_LIST_ID,
                          &id, -1);
    }

  /* 
   * Note for session and language we are using the id to store the
   * value to pass in.
   */
  if (strcmp (item->id, "session") == 0)
    {
      if (id != NULL)
        greeter_set_session (id);
    }
  else if (strcmp (item->id, "language") == 0)
    {
      if (id != NULL)
        mdm_lang_set_restart_dialog (id);
    }
  else
    {
      if (DOING_MDM_DEVELOPMENT)
        return;

      file = g_strdup_printf ("%s/%s.GreeterInfo",
        ve_sure_string (mdm_config_get_string (MDM_KEY_SERV_AUTHDIR)),
        ve_sure_string (g_getenv ("DISPLAY")));

      mdm_save_customlist_data (file, item->id, id);
   }
}
예제 #6
0
gboolean
greeter_item_timed_setup (void)
{

  /* if in timed mode, delay timeout on keyboard or menu activity */
  if ( ! ve_string_empty (mdm_config_get_string (MDM_KEY_TIMED_LOGIN)))
    {
      guint sid;

      g_type_class_ref (GTK_TYPE_MENU_ITEM);

      sid = g_signal_lookup ("activate",
			     GTK_TYPE_MENU_ITEM);
      g_signal_add_emission_hook (sid,
				  0 /* detail */,
				  mdm_timer_up_delay,
				  NULL /* data */,
				  NULL /* destroy_notify */);

      sid = g_signal_lookup ("key_press_event",
			     GTK_TYPE_WIDGET);
      g_signal_add_emission_hook (sid,
				  0 /* detail */,
				  mdm_timer_up_delay,
				  NULL /* data */,
				  NULL /* destroy_notify */);
      sid = g_signal_lookup ("button_press_event",
			     GTK_TYPE_WIDGET);
      g_signal_add_emission_hook (sid,
				  0 /* detail */,
				  mdm_timer_up_delay,
				  NULL /* data */,
				  NULL /* destroy_notify */);
    }

  return TRUE;
}
예제 #7
0
static void
greeter_system_handler (GreeterItemInfo *info,
			gpointer         user_data)
{
  GtkWidget *w = NULL;
  GtkWidget *hbox = NULL;
  GtkWidget *main_vbox = NULL;
  GtkWidget *vbox = NULL;
  GtkWidget *cat_vbox = NULL;
  GtkWidget *group_radio = NULL;
  GtkWidget *halt_radio = NULL;
  GtkWidget *suspend_radio = NULL;
  GtkWidget *restart_radio = NULL;
  GtkWidget *config_radio = NULL;
  gchar *s;
  int ret;
  gint i;
  GSList *radio_group = NULL;
  static GtkTooltips *tooltips = NULL;

  /* should never be allowed by the UI */
  if ( ! mdm_config_get_bool (MDM_KEY_SYSTEM_MENU) ||
       ve_string_empty (g_getenv ("MDM_IS_LOCAL")))
	  return;

  dialog = gtk_dialog_new ();
  if (tooltips == NULL)
	  tooltips = gtk_tooltips_new ();
  gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
  gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
  gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);

  main_vbox = gtk_vbox_new (FALSE, 18);
  gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 5);
  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
		      main_vbox,
		      FALSE, FALSE, 0);

  cat_vbox = gtk_vbox_new (FALSE, 6);
  gtk_box_pack_start (GTK_BOX (main_vbox),
		      cat_vbox,
		      FALSE, FALSE, 0);

  s = g_strdup_printf ("<b>%s</b>",
		       _("Choose an Action"));
  w = gtk_label_new (s);
  gtk_label_set_use_markup (GTK_LABEL (w), TRUE);
  g_free (s);
  gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5);
  gtk_box_pack_start (GTK_BOX (cat_vbox), w, FALSE, FALSE, 0);

  hbox = gtk_hbox_new (FALSE, 0);
  gtk_box_pack_start (GTK_BOX (cat_vbox),
		      hbox, FALSE, FALSE, 0);
  gtk_box_pack_start (GTK_BOX (hbox),
		      gtk_label_new ("    "),
		      FALSE, FALSE, 0);
  vbox = gtk_vbox_new (FALSE, 6);
  gtk_box_pack_start (GTK_BOX (hbox),
		      vbox,
		      TRUE, TRUE, 0);

  if (MdmHaltFound) {
	  if (group_radio != NULL)
		  radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
	  halt_radio = gtk_radio_button_new_with_mnemonic (radio_group,
							   _("Shut _down the computer"));
	  group_radio = halt_radio;
	  gtk_tooltips_set_tip (tooltips, GTK_WIDGET (halt_radio),
				_("Shut Down your computer so that "
				  "you may turn it off."),
				NULL);
	  g_signal_connect (G_OBJECT(halt_radio), "button_press_event",
			    G_CALLBACK(radio_button_press_event), NULL);
	  gtk_box_pack_start (GTK_BOX (vbox),
			      halt_radio,
			      FALSE, FALSE, 4);
	  gtk_widget_show (halt_radio);
  }

  if (MdmRebootFound) {
	  if (group_radio != NULL)
		  radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
	  restart_radio = gtk_radio_button_new_with_mnemonic (radio_group,
							     _("_Restart the computer"));
	  group_radio = restart_radio;
	  gtk_tooltips_set_tip (tooltips, GTK_WIDGET (restart_radio),
				_("Restart your computer"),
				NULL);
	  g_signal_connect (G_OBJECT(restart_radio), "button_press_event",
			    G_CALLBACK(radio_button_press_event), NULL);
	  gtk_box_pack_start (GTK_BOX (vbox),
			      restart_radio,
			      FALSE, FALSE, 4);
	  gtk_widget_show (restart_radio);
  }  

  if (MdmSuspendFound) {
	  if (group_radio != NULL)
		  radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
	  suspend_radio = gtk_radio_button_new_with_mnemonic (radio_group,
							      _("Sus_pend the computer"));
	  group_radio = suspend_radio;
	  gtk_tooltips_set_tip (tooltips, GTK_WIDGET (suspend_radio),
				_("Suspend your computer"),
				NULL);
	  g_signal_connect (G_OBJECT(suspend_radio), "button_press_event",
			    G_CALLBACK(radio_button_press_event), NULL);
	  gtk_box_pack_start (GTK_BOX (vbox),
			      suspend_radio,
			      FALSE, FALSE, 4);
	  gtk_widget_show (suspend_radio);
  }

 
  /*
   * Disable Configuration if using accessibility (AddGtkModules) since
   * using it with accessibility causes a hang.
   */
  if (mdm_config_get_bool (MDM_KEY_CONFIG_AVAILABLE) &&
      !mdm_config_get_bool (MDM_KEY_ADD_GTK_MODULES) &&
      bin_exists (mdm_config_get_string (MDM_KEY_CONFIGURATOR))) {
	  if (group_radio != NULL)
		  radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
	  config_radio = gtk_radio_button_new_with_mnemonic (radio_group,
							     _("Confi_gure the login manager"));
	  group_radio = config_radio;
	  gtk_tooltips_set_tip (tooltips, GTK_WIDGET (config_radio),
				_("Configure MDM (this login manager). "
				  "This will require the root password."),
				NULL);
	  g_signal_connect (G_OBJECT(config_radio), "button_press_event",
			    G_CALLBACK(radio_button_press_event), NULL);
	  gtk_box_pack_start (GTK_BOX (vbox),
			      config_radio,
			      FALSE, FALSE, 4);
	  gtk_widget_show (config_radio);
  }
  
  gtk_dialog_add_button (GTK_DIALOG (dialog),
			 GTK_STOCK_CANCEL,
			 GTK_RESPONSE_CANCEL);

  gtk_dialog_add_button (GTK_DIALOG (dialog),
			 GTK_STOCK_OK,
			 GTK_RESPONSE_OK);

  gtk_dialog_set_default_response (GTK_DIALOG (dialog),
				   GTK_RESPONSE_OK);
  
  gtk_widget_show_all (dialog);
  mdm_wm_center_window (GTK_WINDOW (dialog));

  mdm_wm_no_login_focus_push ();
  ret = gtk_dialog_run (GTK_DIALOG (dialog));
  mdm_wm_no_login_focus_pop ();
  
  if (ret != GTK_RESPONSE_OK)
    {
      gtk_widget_destroy (dialog);
      return;
    }

  if (halt_radio != NULL && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (halt_radio)))
    greeter_halt_handler ();
  else if (restart_radio != NULL && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (restart_radio)))
    greeter_restart_handler ();
  else if (suspend_radio != NULL && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (suspend_radio)))
    greeter_suspend_handler ();
  else if (config_radio != NULL && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (config_radio)))
    greeter_config_handler ();  

  gtk_widget_destroy (dialog);
}
예제 #8
0
void
greeter_system_append_system_menu (GtkWidget *menu)
{
	GtkWidget *w, *sep;
	gint i = 0;

	/* should never be allowed by the UI */
	if ( ! mdm_config_get_bool (MDM_KEY_SYSTEM_MENU) ||
	    ve_string_empty (g_getenv ("MDM_IS_LOCAL")))
		return;	

	/*
	 * Disable Configuration if using accessibility (AddGtkModules) since
	 * using it with accessibility causes a hang.
	 */
	if (mdm_config_get_bool (MDM_KEY_CONFIG_AVAILABLE) &&
	    !mdm_config_get_bool (MDM_KEY_ADD_GTK_MODULES) &&
	    bin_exists (mdm_config_get_string (MDM_KEY_CONFIGURATOR))) {
		w = gtk_image_menu_item_new_with_mnemonic (_("Confi_gure Login Manager..."));
		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w),
			gtk_image_new_from_icon_name ("mdmsetup", GTK_ICON_SIZE_MENU));

		gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
		gtk_widget_show (GTK_WIDGET (w));
		g_signal_connect (G_OBJECT (w), "activate",
				  G_CALLBACK (greeter_config_handler),
				  NULL);
	}

	if (MdmRebootFound || MdmHaltFound || MdmSuspendFound) {
		sep = gtk_separator_menu_item_new ();
		gtk_menu_shell_append (GTK_MENU_SHELL (menu), sep);
		gtk_widget_show (sep);
	}

	if (MdmRebootFound && mdm_common_is_action_available ("REBOOT")) {
 		w = gtk_image_menu_item_new_with_mnemonic (_("_Restart"));
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w),
 					       gtk_image_new_from_icon_name ("system-restart", GTK_ICON_SIZE_MENU));
		gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
		gtk_widget_show (GTK_WIDGET (w));
		g_signal_connect (G_OBJECT (w), "activate",
				  G_CALLBACK (query_greeter_restart_handler),
				  NULL);
	}

	if (MdmHaltFound && mdm_common_is_action_available ("HALT")) {
 		w = gtk_image_menu_item_new_with_mnemonic (_("Shut _Down"));
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w), 
 					       gtk_image_new_from_icon_name ("system-shut-down", GTK_ICON_SIZE_MENU));
		gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
		gtk_widget_show (GTK_WIDGET (w));
		g_signal_connect (G_OBJECT (w), "activate",
				  G_CALLBACK (query_greeter_halt_handler),
				  NULL);
	}

	if (MdmSuspendFound && mdm_common_is_action_available ("SUSPEND")) {
 		w = gtk_image_menu_item_new_with_mnemonic (_("Sus_pend"));
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w),
 					       gtk_image_new_from_icon_name ("system-suspend", GTK_ICON_SIZE_MENU));
		gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
		gtk_widget_show (GTK_WIDGET (w));
		g_signal_connect (G_OBJECT (w), "activate",
				  G_CALLBACK (query_greeter_suspend_handler),
				  NULL);
	}	

}
예제 #9
0
gboolean
greeter_item_is_visible (GreeterItemInfo *info)
{
  static gboolean checked = FALSE;
  static gboolean MDM_IS_LOCAL = FALSE;
  static gboolean MDM_FLEXI_SERVER = FALSE;
  gboolean sysmenu = FALSE;	
  gint i = 0;

  if ( ! checked)
    {
      if (g_getenv ("MDM_IS_LOCAL") != NULL)
	MDM_IS_LOCAL = TRUE;
      if (g_getenv ("MDM_FLEXI_SERVER") != NULL)
	MDM_FLEXI_SERVER = TRUE;
    }

  if (MDM_IS_LOCAL && ! MDM_FLEXI_SERVER &&
      ! (info->show_modes & GREETER_ITEM_SHOW_CONSOLE_FIXED))
    return FALSE;
  if (MDM_IS_LOCAL && MDM_FLEXI_SERVER &&
      ! (info->show_modes & GREETER_ITEM_SHOW_CONSOLE_FLEXI))
    return FALSE;
  if ( ! MDM_IS_LOCAL && MDM_FLEXI_SERVER &&
       ! (info->show_modes & GREETER_ITEM_SHOW_REMOTE_FLEXI))
    return FALSE;
  if ( ! MDM_IS_LOCAL && ! MDM_FLEXI_SERVER &&
       ! (info->show_modes & GREETER_ITEM_SHOW_REMOTE))
    return FALSE;

  if ((mdm_wm_screen.width < info->minimum_required_screen_width) ||
      (mdm_wm_screen.height < info->minimum_required_screen_height))
    return FALSE;

  sysmenu = mdm_config_get_bool (MDM_KEY_SYSTEM_MENU);

 /*
  * Disable Configuration if using accessibility (AddGtkModules) since
  * using it with accessibility causes a hang.
  */
  if (( ! mdm_config_get_bool (MDM_KEY_CONFIG_AVAILABLE) ||
	mdm_config_get_bool (MDM_KEY_ADD_GTK_MODULES) ||
        ! sysmenu ||
        ! MdmConfiguratorFound) &&
      (info->show_type != NULL &&
       strcmp (info->show_type, "config") == 0))
	  return FALSE;

  if (( ! mdm_config_get_bool (MDM_KEY_CHOOSER_BUTTON) || ! sysmenu) &&
      (info->show_type != NULL &&
       strcmp (info->show_type, "chooser") == 0))
	  return FALSE;

  if ( ! sysmenu && info->show_type != NULL &&
      strcmp (info->show_type, "system") == 0)
	  return FALSE;

  if (( ! sysmenu || ! MdmHaltFound) &&
      (info->show_type != NULL &&
       strcmp (info->show_type, "halt") == 0))
	  return FALSE;
  if (( ! sysmenu || ! MdmRebootFound) &&
      (info->show_type != NULL &&
       strcmp (info->show_type, "reboot") == 0))
	  return FALSE;
  if (( ! sysmenu || ! MdmSuspendFound) &&
      (info->show_type != NULL &&
       strcmp (info->show_type, "suspend") == 0))
	  return FALSE;

  if (info->show_type != NULL && 
      sscanf (info->show_type, "custom_cmd%d", &i) == 1 &&
      i >= 0 && i < MDM_CUSTOM_COMMAND_MAX &&
      (! sysmenu || ! MdmCustomCmdsFound[i])) {	  
	  return FALSE;
  }

  if (( ! mdm_config_get_bool (MDM_KEY_TIMED_LOGIN_ENABLE) ||
          ve_string_empty (mdm_config_get_string (MDM_KEY_TIMED_LOGIN)) ||
          NULL == g_getenv("MDM_TIMED_LOGIN_OK")) &&
      (info->show_type != NULL &&
       strcmp (info->show_type, "timed") == 0))
	  return FALSE;

  return TRUE;
}
예제 #10
0
/* Callback function for combo style custom lists */ 
static void
combo_selected (GtkComboBox *combo, GreeterItemInfo *item)
{
  char  *id = NULL;
  char  *file;
  char  *active;

  if (ve_string_empty (item->id))
    return;
 
  active = gtk_combo_box_get_active_text (combo);

  if (strcmp (item->id, "session") == 0)
    {
      combo_session_selected (active);
    }
  else if (strcmp (item->id, "language") == 0)
    {
      /*
       * Since combo boxes can't store the ID value, have to do some
       * extra work to figure out which row is selected.
       */
      GtkListStore *lang_model = mdm_lang_get_model ();
      GtkTreeIter iter;
      char *name, *untranslated, *lang_display_name, *locale_name;
      gboolean valid;

      valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (lang_model),
	 &iter);
      while (valid)
        {
          gtk_tree_model_get (GTK_TREE_MODEL (lang_model), &iter,
             TRANSLATED_NAME_COLUMN, &name,
             UNTRANSLATED_NAME_COLUMN, &untranslated,
             LOCALE_COLUMN, &locale_name, -1);

          if (untranslated)
             lang_display_name = g_strdup_printf ("%s (%s)", name, untranslated);
          else
             lang_display_name = g_strdup (name);

          if (strcmp (lang_display_name, active) == 0)
            {
              mdm_lang_set_restart_dialog (locale_name);
              break;
            }
          g_free (lang_display_name);
          valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (lang_model), &iter);
        }
    }
  else
    {
      if (DOING_MDM_DEVELOPMENT)
        return;

      id   = gtk_combo_box_get_active_text (combo);
      file = g_strdup_printf ("%s/%s.GreeterInfo",
             ve_sure_string (mdm_config_get_string (MDM_KEY_SERV_AUTHDIR)),
             ve_sure_string (g_getenv ("DISPLAY")));

      mdm_save_customlist_data (file, item->id, id);
   }
}