diff --git a/vinagre/vinagre-main.c b/vinagre/vinagre-main.c
index 08e23bd..172875c 100644
--- a/vinagre/vinagre-main.c
+++ b/vinagre/vinagre-main.c
@@ -65,7 +65,7 @@ app_init (GtkApplication *app)
 
   window = GTK_WINDOW (vinagre_window_new ());
   gtk_window_set_application (window, app);
-  gtk_widget_show (GTK_WIDGET (window));
+  gtk_widget_show_all (GTK_WIDGET (window));
 
 #ifdef VINAGRE_HAVE_TELEPATHY_GLIB
   vinagre_tubes_manager = vinagre_tubes_manager_new (VINAGRE_WINDOW (window));
diff --git a/vinagre/vinagre-options.c b/vinagre/vinagre-options.c
index b4fd099..64393a9 100644
--- a/vinagre/vinagre-options.c
+++ b/vinagre/vinagre-options.c
@@ -27,6 +27,10 @@
 
 const GOptionEntry all_options [] =
 {
+  { "geometry", 0, 0, G_OPTION_ARG_STRING, &optionstate.geometry,
+  /* Translators: this is a command line option (run vinagre --help) */
+    N_("Specify geometry of the main vinagre window"), NULL },
+
   { "fullscreen", 'f', 0, G_OPTION_ARG_NONE, &optionstate.fullscreen,
   /* Translators: this is a command line option (run vinagre --help) */
     N_("Open vinagre in fullscreen mode"), NULL },
@@ -103,7 +107,7 @@ vinagre_options_process_command_line (GtkApplication *app,
       options->new_window)
     {
       v_window = vinagre_window_new ();
-      gtk_widget_show (GTK_WIDGET (v_window));
+      gtk_widget_show_all (GTK_WIDGET (v_window));
       gtk_window_set_application (GTK_WINDOW (v_window), app);
     }
   else
@@ -111,6 +115,17 @@ vinagre_options_process_command_line (GtkApplication *app,
       v_window = VINAGRE_WINDOW (window);
     }
 
+  if (options->geometry)
+    {
+      if (!gtk_window_parse_geometry (window, options->geometry))
+        {
+	  errors = g_slist_prepend (errors,
+              g_strdup_printf (_("Invalid argument %s for --geometry"),
+	      options->geometry));
+        }
+      gtk_window_unmaximize (window);
+    }
+
   for (l = servers; l; l = l->next)
     {
       VinagreConnection *conn = l->data;
diff --git a/vinagre/vinagre-options.h b/vinagre/vinagre-options.h
index dfb00f5..5a858f6 100644
--- a/vinagre/vinagre-options.h
+++ b/vinagre/vinagre-options.h
@@ -29,6 +29,7 @@ typedef struct {
   gchar **uris;
   gboolean new_window;
   gboolean fullscreen;
+  gchar *geometry;
 } VinagreCmdLineOptions;
 
 extern const GOptionEntry all_options[];
