~ubuntu-branches/ubuntu/precise/desktop-switcher/precise

« back to all changes in this revision

Viewing changes to src/main.c

  • Committer: Bazaar Package Importer
  • Author(s): Steve Kowalik
  • Date: 2009-04-07 12:57:27 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090407125727-650dbtag77jbyo9e
Tags: 0.4.4-0ubuntu1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
 
36
36
#define LAUNCHER_NAME    "netbook-launcher"
37
37
#define LAUNCHER_DESKTOP LAUNCHER_NAME".desktop"
38
 
#define SHARE_LAUNCHER (g_strdup_printf ("%s/%s", PKGDATADIR, autostart_name))
 
38
 
 
39
#define OLD_LAUNCHER_NAME "ume-launcher"
 
40
#define OLD_LAUNCHER_DESKTOP OLD_LAUNCHER_NAME".desktop"
39
41
 
40
42
#define CLASSIC_PANEL_CONFIG       "/classic-panel-config.xml"
41
43
#define NETBOOK_PANEL_CONFIG       "/netbook-panel-config.xml"
71
73
static gboolean check_in_classic_mode ();
72
74
 
73
75
 
74
 
static gchar * autostart_name = NULL;
75
76
static gint    current_mode = NETBOOK_MODE;
76
77
static gint    selected_mode = NETBOOK_MODE;
77
78
 
137
138
  create_dir (autostart);
138
139
  g_free (autostart);
139
140
 
140
 
  /* See if we are in headless mode */
141
 
  autostart = g_build_filename (g_get_home_dir (), 
142
 
                                ".config", "autostart", 
143
 
                                autostart_name,
144
 
                                NULL);
145
141
  if (switch_to)
146
142
  {
147
143
    gboolean in_classic;
182
178
    }
183
179
    return EXIT_SUCCESS;
184
180
  }
185
 
  g_free (autostart);
186
181
 
187
182
  /* Get all the widgets */
188
183
  dialog = GTK_WIDGET (gtk_builder_get_object (builder, "dialog1"));
206
201
 
207
202
  gtk_main ();
208
203
 
209
 
  g_free (autostart_name);
210
 
 
211
204
  return EXIT_SUCCESS;
212
205
}
213
206
 
231
224
      retval = FALSE;
232
225
  }
233
226
 
234
 
  autostart_name = g_strdup ("netbook-launcher.desktop");
235
 
 
236
227
  /* Check if the old version of the launcher, ume-launcher, is running */
237
228
  if (retval == TRUE)
238
229
  {
246
237
      if (g_strstr_len (output, strlen (output), "launch"))
247
238
      {
248
239
        retval = FALSE;
249
 
        g_free (autostart_name);
250
 
        autostart_name = g_strdup ("ume-launcher.desktop");
251
240
      }
252
241
    }
253
242
  }
281
270
}
282
271
 
283
272
static gchar *
284
 
launcher_autostart_file (void)
 
273
launcher_autostart_file (const gchar *autostart_name)
285
274
{
286
275
  return g_build_filename (g_get_home_dir (),
287
276
                               ".config", "autostart",
290
279
}
291
280
 
292
281
static void
293
 
enable_netbook (void)
 
282
delete_launcher_autostart_file (const gchar *autostart_name)
294
283
{
 
284
  gchar *filename;
295
285
  GFile *file;
296
 
  gchar *filename;
297
286
  GError *error = NULL;
298
 
  GConfClient *client = gconf_client_get_default ();
299
 
  GdkScreen *screen = gdk_screen_get_default ();
300
287
 
301
 
  g_debug ("Enabling netbook mode");
302
 
  
303
 
  /* Make sure the launcher autostarts */
304
 
  g_debug ("Enabling launcher autostart");
305
 
  filename = launcher_autostart_file ();
 
288
  filename = launcher_autostart_file (autostart_name);
306
289
  file = g_file_new_for_path (filename);
307
290
  g_file_delete (file, NULL, &error);
308
291
  if (error)
313
296
  }
314
297
  g_object_unref (file);
315
298
  g_free (filename);
 
299
}
 
300
 
 
301
static void
 
302
create_launcher_autostart_file (const gchar *autostart_name)
 
303
{
 
304
  GFile *src, *dest;
 
305
  gchar *filename;
 
306
  GError *error = NULL;
 
307
 
 
308
  filename = g_strdup_printf ("%s/%s", PKGDATADIR, autostart_name);
 
309
  src = g_file_new_for_path (filename);
 
310
  g_free (filename);
 
311
 
 
312
  filename = launcher_autostart_file (autostart_name);
 
313
  dest = g_file_new_for_path (filename);
 
314
 
 
315
  g_file_copy (src, dest, 0, NULL, NULL, NULL, &error);
 
316
  if (error)
 
317
  {
 
318
    g_debug ("Unable to suppress launcher autostart: %s", error->message);
 
319
    g_error_free (error);
 
320
  }
 
321
  g_object_unref (dest);
 
322
  g_object_unref (src);
 
323
  g_free (filename);
 
324
}
 
325
 
 
326
static void
 
327
enable_netbook (void)
 
328
{
 
329
  gchar *filename;
 
330
  GError *error = NULL;
 
331
  GConfClient *client = gconf_client_get_default ();
 
332
  GdkScreen *screen = gdk_screen_get_default ();
 
333
 
 
334
  g_debug ("Enabling netbook mode");
 
335
  
 
336
  /* Make sure the launcher autostarts.
 
337
     We do both because we can't be sure which launcher user is using.  We
 
338
     could check which is running, but that might not be the same as what is
 
339
     installed, if the user just did an upgrade.  No harm in handling both. */
 
340
  g_debug ("Enabling launcher autostart");
 
341
  delete_launcher_autostart_file (LAUNCHER_DESKTOP);
 
342
  delete_launcher_autostart_file (OLD_LAUNCHER_DESKTOP);
316
343
 
317
344
  /* Tell GNOME to disallow user switching */
318
345
  error = NULL;
371
398
 
372
399
  /* Launch the launcher */
373
400
  g_debug ("Launching the, er, Launcher");
374
 
  gdk_spawn_command_line_on_screen (screen, LAUNCHER_NAME, NULL);
 
401
  filename = g_find_program_in_path (LAUNCHER_NAME);
 
402
  if (filename)
 
403
    gdk_spawn_command_line_on_screen (screen, LAUNCHER_NAME, NULL);
 
404
  else
 
405
    gdk_spawn_command_line_on_screen (screen, OLD_LAUNCHER_NAME, NULL);
 
406
  g_free (filename);
375
407
 
376
408
  sleep (1);
377
409
 
408
440
    
409
441
  comps = gconf_client_get_list (client, SESSION_COMPONENTS, 
410
442
                                 GCONF_VALUE_STRING, NULL);
411
 
  copy = g_slist_copy (comps);
 
443
  copy = NULL;
412
444
  for (c = comps; c; c=c->next)
413
445
  {
414
 
    if (g_strcmp0 (c->data, "filemanager") == 0)
 
446
    if (g_strcmp0 (c->data, "filemanager") != 0)
 
447
    {
 
448
      copy = g_slist_append (copy, c->data);
 
449
    }
 
450
    else
415
451
    {
416
452
      g_debug ("Removing nautilus from gnome session startup");
417
 
      copy = g_slist_remove (copy, c->data);
418
453
    }
419
454
  }
420
 
 
421
455
  gconf_client_set_list (client, SESSION_COMPONENTS, GCONF_VALUE_STRING,
422
456
                         copy, NULL);
423
457
  for (c = comps; c; c=c->next)
432
466
static void
433
467
enable_classic ()
434
468
{
435
 
  GFile *src, *dest;
436
469
  GError *error = NULL;
437
470
  gchar *filename;
438
471
  GConfClient *client = gconf_client_get_default ();
440
473
 
441
474
  g_debug ("Enabling classic mode");
442
475
 
443
 
  /* Stop the launcher from autostarting */
 
476
  /* Stop the launcher from autostarting.
 
477
     We do both because we can't be sure which launcher user is using.  We
 
478
     could check which is running, but that might not be the same as what is
 
479
     installed, if the user just did an upgrade.  No harm in handling both. */
444
480
  g_debug ("Suppressing Launcher autostart");
445
 
  filename = launcher_autostart_file ();
446
 
  src = g_file_new_for_path (SHARE_LAUNCHER);
447
 
  dest = g_file_new_for_path (filename);
448
 
  g_file_copy (src, dest, 0, NULL, NULL, NULL, &error);
449
 
  if (error)
450
 
  {
451
 
    g_debug ("Unable to suppress launcher autostart: %s", error->message);
452
 
    g_error_free (error);
453
 
  }
454
 
  g_object_unref (dest);
455
 
  g_object_unref (src);
456
 
  g_free (filename);
 
481
  create_launcher_autostart_file (LAUNCHER_DESKTOP);
 
482
  create_launcher_autostart_file (OLD_LAUNCHER_DESKTOP);
457
483
 
458
484
  /* Tell GNOME to allow user switching */
459
485
  error = NULL;
511
537
    error = NULL;
512
538
  }
513
539
 
514
 
  /* Kill the launcher */
 
540
  /* Kill any version of the launcher. */
515
541
  g_debug ("Killing the launcher");
516
542
  gdk_spawn_command_line_on_screen (screen, "killall "LAUNCHER_NAME, NULL);
 
543
  gdk_spawn_command_line_on_screen (screen, "killall "OLD_LAUNCHER_NAME, NULL);
517
544
 
518
545
  sleep (1);
519
546
 
558
585
    g_free (c->data);
559
586
  g_slist_free (comps);
560
587
 
561
 
//  gdk_spawn_command_line_on_screen (screen, "metacity --replace", NULL);
 
588
  gdk_spawn_command_line_on_screen (screen, "metacity --replace", NULL);
562
589
  gdk_spawn_command_line_on_screen (screen, "nautilus", NULL);
563
590
 
564
591
  g_free (filename);