summaryrefslogtreecommitdiff
path: root/gnome-settings-daemon/factory.c
blob: 20948e626a90ef4fc0c0a33a04538c6d7d886578 (plain)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <config.h>

#include "gnome-settings-daemon.h"

#include <bonobo.h>
#include <bonobo/bonobo-object.h>
#include <bonobo/bonobo-generic-factory.h>

#include <gconf/gconf.h>

#include <libgnome/gnome-init.h>
#include <libgnomeui/gnome-ui-init.h>
#include <libgnomeui/gnome-client.h>

static BonoboObject *services_server = NULL;

int main (int argc, char *argv [])
{
  GnomeClient *session;
  Bonobo_RegistrationResult ret;
  gchar *restart_argv[] = { "gnome-settings-daemon", NULL, NULL };

  restart_argv[1] = *argv;

  bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);

  gnome_program_init ("gnome-settings-daemon", VERSION,
		      LIBGNOMEUI_MODULE,
		      argc, argv,
		      GNOME_CLIENT_PARAM_SM_CONNECT, FALSE,
		      NULL);
  
  if (!bonobo_init (&argc, argv)) {
    g_error (_("Could not initialize Bonobo"));
  }

  gconf_init (argc, argv, NULL); /* exits w/ message on failure */ 

  /* start the settings daemon */
  services_server = BONOBO_OBJECT (gnome_settings_daemon_new ());

  ret = bonobo_activation_active_server_register ("OAFIID:GNOME_SettingsDaemon",
						  BONOBO_OBJREF (services_server));
  if (ret != Bonobo_ACTIVATION_REG_SUCCESS) {
    g_warning ("Encountered problems registering the settings daemon with bonobo-activation. "
	       "Clients may not detect that the settings daemon is already running.");
  }

  session = gnome_master_client ();
  gnome_client_set_restart_command (session, 2, restart_argv);
  gnome_client_set_restart_style (session, GNOME_RESTART_IMMEDIATELY);
  gnome_client_set_priority      (session, 5);
  g_signal_connect (session, "die",
		    G_CALLBACK (gtk_main_quit), NULL);

  gtk_main();

  return -1;
}