static void init_display (GdkDisplay *dpy, XfceRc *rc, gboolean disable_tcp) { const gchar *engine; gint n; xfce_rc_set_group (rc, "Splash Screen"); engine = xfce_rc_read_entry (rc, "Engine", NULL); splash_screen = xfsm_splash_screen_new (dpy, engine); xfsm_splash_screen_next (splash_screen, _("Loading desktop settings")); gdk_flush (); xfce_rc_set_group (rc, "General"); sm_init (rc, disable_tcp); /* start a MCS manager process per screen (FIXME: parallel to loading logo) */ for (n = 0; n < gdk_display_get_n_screens (dpy); ++n) { mcs_client_check_manager (gdk_x11_display_get_xdisplay (dpy), n, "xfce-mcs-manager"); } /* gtk resource files may have changed */ gtk_rc_reparse_all (); }
void xfsm_compat_kde_startup (XfsmSplashScreen *splash) { gchar command[256]; if (G_UNLIKELY (kde_compat_started)) return; if (G_LIKELY (splash != NULL)) xfsm_splash_screen_next (splash, _("Starting KDE services")); run ("kdeinit4"); /* tell klauncher about the session manager */ g_snprintf (command, 256, "qdbus org.kde.klauncher /KLauncher setLaunchEnv " "SESSION_MANAGER \"%s\"", g_getenv ("SESSION_MANAGER")); run (command); /* tell kde if we are running multi-head */ if (gdk_display_get_n_screens (gdk_display_get_default ()) > 1) { g_snprintf (command, 256, "qdbus org.kde.klauncher /KLauncher setLaunchEnv " "KDE_MULTIHEAD \"true\""); run (command); } kde_compat_started = TRUE; }
static void initialize (int argc, char **argv) { gboolean disable_tcp = FALSE; GdkDisplay *dpy; XfceRc *rc; for (++argv; --argc > 0; ++argv) { if (strcmp (*argv, "--version") == 0) { printf ("%s (Xfce %s)\n\n" "Copyright (c) 2003-2006\n" " The Xfce development team. All rights reserved.\n\n" "Written for Xfce by Benedikt Meurer <*****@*****.**>.\n\n" "Built with Gtk+-%d.%d.%d, running with Gtk+-%d.%d.%d.\n\n" "Please report bugs to <%s>.\n", PACKAGE_STRING, xfce_version_string (), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION, gtk_major_version, gtk_minor_version, gtk_micro_version, PACKAGE_BUGREPORT); exit (EXIT_SUCCESS); } else if (strcmp (*argv, "--disable-tcp") == 0) { disable_tcp = TRUE; } else { usage (strcmp (*argv, "--help") == 0 ? EXIT_SUCCESS : EXIT_FAILURE); } } setup_environment (); rc = xfsm_open_config (TRUE); dpy = gdk_display_get_default (); init_display (dpy, rc, disable_tcp); /* verify that the DNS settings are ok */ xfsm_splash_screen_next (splash_screen, _("Verifying DNS settings")); xfsm_dns_check (); xfsm_splash_screen_next (splash_screen, _("Loading session data")); xfce_rc_set_group (rc, "Compatibility"); compat_gnome = xfce_rc_read_bool_entry (rc, "LaunchGnome", FALSE); compat_kde = xfce_rc_read_bool_entry (rc, "LaunchKDE", FALSE); xfce_rc_set_group (rc, "General"); xfsm_startup_init (rc); xfsm_manager_init (rc); /* cleanup obsolete entries */ xfce_rc_set_group (rc, "General"); if (xfce_rc_has_entry (rc, "ConfirmLogout")) xfce_rc_delete_entry (rc, "ConfirmLogout", FALSE); if (xfce_rc_has_entry (rc, "AlwaysDisplayChooser")) xfce_rc_delete_entry (rc, "AlwaysDisplayChooser", FALSE); xfce_rc_delete_group (rc, "Splash Theme", FALSE); xfce_rc_close (rc); }
int xfsm_splash_screen_choose (XfsmSplashScreen *splash, GList *sessions, const gchar *default_session, gchar **name_return) { GtkWidget *chooser; GtkWidget *label; GtkWidget *dialog; GtkWidget *entry; gchar title[256]; int result; g_assert (default_session != NULL); if (splash->engine.choose != NULL) { result = splash->engine.choose (&splash->engine, sessions, default_session, name_return); } else { again: xfsm_splash_screen_next (splash, _("Choose session")); chooser = g_object_new (XFSM_TYPE_CHOOSER, "screen", splash->engine.primary_screen, "type", GTK_WINDOW_POPUP, NULL); xfsm_window_add_border (GTK_WINDOW (chooser)); xfsm_chooser_set_sessions (XFSM_CHOOSER (chooser), sessions, default_session); result = xfsm_splash_screen_run (splash, chooser); if (result == XFSM_RESPONSE_LOAD) { if (name_return != NULL) *name_return = xfsm_chooser_get_session (XFSM_CHOOSER (chooser)); result = XFSM_CHOOSE_LOAD; } else if (result == XFSM_RESPONSE_NEW) { result = XFSM_CHOOSE_NEW; } else { result = XFSM_CHOOSE_LOGOUT; } gtk_widget_destroy (chooser); if (result == XFSM_CHOOSE_NEW) { xfsm_splash_screen_next (splash, _("Choose session name")); dialog = gtk_dialog_new_with_buttons (NULL, NULL, GTK_DIALOG_NO_SEPARATOR, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); g_snprintf (title, 256, "<big>%s</big>", _("Choose a name for the new session:")); label = gtk_label_new (title); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), label, TRUE, TRUE, 6); gtk_widget_show (label); entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), entry, TRUE, TRUE, 6); gtk_widget_show (entry); xfsm_window_add_border (GTK_WINDOW (dialog)); again1: result = xfsm_splash_screen_run (splash, dialog); if (result != GTK_RESPONSE_OK) { gtk_widget_destroy (dialog); goto again; } if (name_return != NULL) { *name_return = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); if (strlen (*name_return) == 0) { g_free (*name_return); goto again1; } } gtk_widget_destroy (dialog); result = XFSM_CHOOSE_NEW; } } return result; }