Blob Blame History Raw
diff -up gnome-system-monitor-2.22.0/src/procman.h.system-tab-arg gnome-system-monitor-2.22.0/src/procman.h
--- gnome-system-monitor-2.22.0/src/procman.h.system-tab-arg	2008-04-01 17:09:29.000000000 -0400
+++ gnome-system-monitor-2.22.0/src/procman.h	2008-04-01 17:09:29.000000000 -0400
@@ -58,6 +58,7 @@ enum
 static const unsigned MIN_UPDATE_INTERVAL =   1 * 1000;
 static const unsigned MAX_UPDATE_INTERVAL = 100 * 1000;
 
+#define SHOW_SYSTEM_TAB_CMD "SHOWSYSTAB" /* elegant, eh */
 
 enum ProcmanTab
 {
diff -up gnome-system-monitor-2.22.0/src/procman.cpp.system-tab-arg gnome-system-monitor-2.22.0/src/procman.cpp
--- gnome-system-monitor-2.22.0/src/procman.cpp.system-tab-arg	2008-04-01 17:09:29.000000000 -0400
+++ gnome-system-monitor-2.22.0/src/procman.cpp	2008-04-01 17:10:20.000000000 -0400
@@ -626,14 +626,19 @@ cb_server (const gchar *msg, gpointer us
 {
 	GdkWindow *window;
 	ProcData *procdata;
-	guint32 timestamp;
+	guint32 timestamp = 0;
 
 	window = gdk_get_default_root_window ();
 
 	procdata = *(ProcData**)user_data;
 	g_assert (procdata != NULL);
 
-	timestamp = strtoul(msg, NULL, 0);
+    procman_debug("cb_server(%s)", msg);
+	if (msg != NULL && strcmp(SHOW_SYSTEM_TAB_CMD, msg) == 0) {
+		procman_debug("Changing to PROCMAN_TAB_SYSINFO via bacon message");
+		gtk_notebook_set_current_page(GTK_NOTEBOOK(procdata->notebook), PROCMAN_TAB_SYSINFO);
+	} else 
+		timestamp = strtoul(msg, NULL, 0);
 
 	if (timestamp == 0)
 	{
@@ -669,12 +674,28 @@ main (int argc, char *argv[])
 	ProcData *procdata;
 	BaconMessageConnection *conn;
 
+	/* Parse commandline arguments */
+	GError *error = NULL;
+	GOptionContext *context;
+	static gboolean show_system_tab = FALSE;
+	static GOptionEntry entries[] = 
+	{
+		{ "show-system-tab", 's', 0, G_OPTION_ARG_NONE, &show_system_tab, "Show the System tab", NULL },
+		{ NULL }
+	};
+
 	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	textdomain (GETTEXT_PACKAGE);
 
 	startup_timestamp = get_startup_timestamp();
 
+	context = g_option_context_new("- a simple process and system monitor.");
+	g_option_context_set_ignore_unknown_options(context, TRUE);
+	g_option_context_add_main_entries(context, entries, GETTEXT_PACKAGE);
+	g_option_context_parse(context, &argc, &argv, &error);
+	g_option_context_free(context);
+
 	Gtk::Main kit(&argc, &argv);
 	procman_debug("post gtk_init");
 
@@ -691,6 +712,9 @@ main (int argc, char *argv[])
 
 		timestamp = g_strdup_printf ("%" G_GUINT32_FORMAT, startup_timestamp);
 
+		if (show_system_tab)
+			bacon_message_connection_send(conn, SHOW_SYSTEM_TAB_CMD);
+
 		bacon_message_connection_send (conn, timestamp);
 
 		gdk_notify_startup_complete ();
@@ -727,6 +751,11 @@ main (int argc, char *argv[])
 
 	g_assert(procdata->app);
 			
+	if (show_system_tab) {
+		procman_debug("Starting with PROCMAN_TAB_SYSINFO by commandline request");
+		gtk_notebook_set_current_page(GTK_NOTEBOOK(procdata->notebook), PROCMAN_TAB_SYSINFO);
+	}
+
  	gtk_widget_show(procdata->app);
        
 	procman_debug("begin gtk_main");