diff --git a/libgnome-desktop/gnome-rr-config.c b/libgnome-desktop/gnome-rr-config.c
index 1cd4c209..8c1192b4 100644
--- a/libgnome-desktop/gnome-rr-config.c
+++ b/libgnome-desktop/gnome-rr-config.c
@@ -163,6 +163,7 @@ gnome_rr_config_load_current (GnomeRRConfig *config, GError **error)
 	output->priv->name = g_strdup (gnome_rr_output_get_name (rr_output));
 	output->priv->connected = TRUE;
 	output->priv->display_name = g_strdup (gnome_rr_output_get_display_name (rr_output));
+	output->priv->connector_type = g_strdup (gnome_rr_output_get_connector_type (rr_output));
 	output->priv->config = config;
 	output->priv->is_tiled = _gnome_rr_output_get_tile_info (rr_output,
 								 &output->priv->tile);
@@ -438,6 +439,7 @@ make_outputs (GnomeRRConfig *config)
 
         new->priv->name = g_strdup (old->priv->name);
         new->priv->display_name = g_strdup (old->priv->display_name);
+        new->priv->connector_type = g_strdup (old->priv->connector_type);
         new->priv->vendor = g_strdup (old->priv->vendor);
         new->priv->product = g_strdup (old->priv->product);
         new->priv->serial = g_strdup (old->priv->serial);
diff --git a/libgnome-desktop/gnome-rr-config.h b/libgnome-desktop/gnome-rr-config.h
index e9e2316c..77e8e436 100644
--- a/libgnome-desktop/gnome-rr-config.h
+++ b/libgnome-desktop/gnome-rr-config.h
@@ -77,12 +77,13 @@ GnomeRRRotation gnome_rr_output_info_get_rotation (GnomeRROutputInfo *self);
 void            gnome_rr_output_info_set_rotation (GnomeRROutputInfo *self, GnomeRRRotation rotation);
 gboolean        gnome_rr_output_info_supports_rotation (GnomeRROutputInfo *self, GnomeRRRotation rotation);
 
-gboolean gnome_rr_output_info_is_connected     (GnomeRROutputInfo *self);
-const char *gnome_rr_output_info_get_vendor    (GnomeRROutputInfo *self);
-const char *gnome_rr_output_info_get_product   (GnomeRROutputInfo *self);
-const char *gnome_rr_output_info_get_serial    (GnomeRROutputInfo *self);
-double   gnome_rr_output_info_get_aspect_ratio (GnomeRROutputInfo *self);
-char    *gnome_rr_output_info_get_display_name (GnomeRROutputInfo *self);
+gboolean gnome_rr_output_info_is_connected       (GnomeRROutputInfo *self);
+const char *gnome_rr_output_info_get_vendor      (GnomeRROutputInfo *self);
+const char *gnome_rr_output_info_get_product     (GnomeRROutputInfo *self);
+const char *gnome_rr_output_info_get_serial      (GnomeRROutputInfo *self);
+double   gnome_rr_output_info_get_aspect_ratio   (GnomeRROutputInfo *self);
+char    *gnome_rr_output_info_get_display_name   (GnomeRROutputInfo *self);
+char    *gnome_rr_output_info_get_connector_type (GnomeRROutputInfo *self);
 
 gboolean gnome_rr_output_info_get_primary (GnomeRROutputInfo *self);
 void     gnome_rr_output_info_set_primary (GnomeRROutputInfo *self, gboolean primary);
diff --git a/libgnome-desktop/gnome-rr-debug.c b/libgnome-desktop/gnome-rr-debug.c
index af578829..f301ade5 100644
--- a/libgnome-desktop/gnome-rr-debug.c
+++ b/libgnome-desktop/gnome-rr-debug.c
@@ -105,6 +105,7 @@ print_output (GnomeRROutput *output, const char *message)
 		g_free (serial);
 	}
 
+	g_print ("\tconnector type: %s\n", gnome_rr_output_get_connector_type (output));
 	print_modes (output);
 	g_print ("\n");
 }
diff --git a/libgnome-desktop/gnome-rr-output-info.c b/libgnome-desktop/gnome-rr-output-info.c
index 833a03a1..d17e2018 100644
--- a/libgnome-desktop/gnome-rr-output-info.c
+++ b/libgnome-desktop/gnome-rr-output-info.c
@@ -40,6 +40,7 @@ gnome_rr_output_info_init (GnomeRROutputInfo *self)
     self->priv->on = FALSE;
     self->priv->rotation = GNOME_RR_ROTATION_0;
     self->priv->display_name = NULL;
+    self->priv->connector_type = NULL;
 }
 
 static void
@@ -49,6 +50,7 @@ gnome_rr_output_info_finalize (GObject *gobject)
 
     g_free (self->priv->name);
     g_free (self->priv->display_name);
+    g_free (self->priv->connector_type);
     g_free (self->priv->product);
     g_free (self->priv->serial);
     g_free (self->priv->vendor);
@@ -479,6 +481,13 @@ char *gnome_rr_output_info_get_display_name (GnomeRROutputInfo *self)
     return self->priv->display_name;
 }
 
+char *gnome_rr_output_info_get_connector_type (GnomeRROutputInfo *self)
+{
+    g_return_val_if_fail (GNOME_IS_RR_OUTPUT_INFO (self), NULL);
+
+    return self->priv->connector_type;
+}
+
 gboolean gnome_rr_output_info_get_primary (GnomeRROutputInfo *self)
 {
     g_return_val_if_fail (GNOME_IS_RR_OUTPUT_INFO (self), FALSE);
diff --git a/libgnome-desktop/gnome-rr-private.h b/libgnome-desktop/gnome-rr-private.h
index e721e39c..1d20cb70 100644
--- a/libgnome-desktop/gnome-rr-private.h
+++ b/libgnome-desktop/gnome-rr-private.h
@@ -86,6 +86,7 @@ struct _GnomeRROutputInfoPrivate
     int			pref_width;
     int			pref_height;
     char *		display_name;
+    char *		connector_type;
     gboolean            primary;
     gboolean            underscanning;
 
@@ -105,6 +106,7 @@ struct _GnomeRRConfigPrivate
   GnomeRROutputInfo **outputs;
 };
 
+gboolean _gnome_rr_output_connector_type_is_builtin_display (const char *name);
 gboolean _gnome_rr_output_name_is_builtin_display (const char *name);
 
 gboolean _gnome_rr_screen_apply_configuration (GnomeRRScreen  *screen,
diff --git a/libgnome-desktop/gnome-rr.c b/libgnome-desktop/gnome-rr.c
index 16670ddc..66264e22 100644
--- a/libgnome-desktop/gnome-rr.c
+++ b/libgnome-desktop/gnome-rr.c
@@ -64,6 +64,7 @@ struct GnomeRROutput
     
     char *		name;
     char *		display_name;
+    char *              connector_type;
     GnomeRRCrtc *	current_crtc;
     GnomeRRCrtc **	possible_crtcs;
     GnomeRROutput **	clones;
@@ -1400,6 +1401,7 @@ output_initialize (GnomeRROutput *output, GVariant *info)
     g_variant_lookup (properties, "width-mm", "i", &output->width_mm);
     g_variant_lookup (properties, "height-mm", "i", &output->height_mm);
     g_variant_lookup (properties, "display-name", "s", &output->display_name);
+    g_variant_lookup (properties, "connector-type", "s", &output->connector_type);
     g_variant_lookup (properties, "backlight", "i", &output->backlight);
     g_variant_lookup (properties, "min-backlight-step", "i", &output->min_backlight_step);
     g_variant_lookup (properties, "primary", "b", &output->is_primary);
@@ -1444,6 +1446,7 @@ output_copy (const GnomeRROutput *from)
     output->info = from->info;
     output->name = g_strdup (from->name);
     output->display_name = g_strdup (from->display_name);
+    output->connector_type = g_strdup (from->connector_type);
     output->vendor = g_strdup (from->vendor);
     output->product = g_strdup (from->product);
     output->serial = g_strdup (from->serial);
@@ -1491,6 +1494,7 @@ output_free (GnomeRROutput *output)
     g_free (output->product);
     g_free (output->serial);
     g_free (output->display_name);
+    g_free (output->connector_type);
     g_free (output->edid_file);
     if (output->edid)
       g_bytes_unref (output->edid);
@@ -1578,6 +1582,14 @@ gnome_rr_output_get_display_name (GnomeRROutput *output)
     return output->display_name;
 }
 
+const char *
+gnome_rr_output_get_connector_type (GnomeRROutput *output)
+{
+    g_return_val_if_fail (output != NULL, NULL);
+
+    return output->connector_type;
+}
+
 /**
  * gnome_rr_output_get_backlight:
  *
@@ -1674,6 +1686,20 @@ gnome_rr_output_get_possible_crtcs (GnomeRROutput *output)
 }
 
 gboolean
+_gnome_rr_output_connector_type_is_builtin_display (const char *name)
+{
+    if (!name)
+        return FALSE;
+
+    if (!strcmp (name, "LVDS") ||
+	!strcmp (name, "eDP") ||
+	!strcmp (name, "DSI"))
+        return TRUE;
+
+    return FALSE;
+}
+
+gboolean
 _gnome_rr_output_name_is_builtin_display (const char *name)
 {
     if (!name)
@@ -1695,7 +1721,7 @@ gnome_rr_output_is_builtin_display (GnomeRROutput *output)
 {
     g_return_val_if_fail (output != NULL, FALSE);
 
-    return _gnome_rr_output_name_is_builtin_display (output->name);
+    return _gnome_rr_output_connector_type_is_builtin_display (output->connector_type) || _gnome_rr_output_name_is_builtin_display (output->name);
 }
 
 /**
diff --git a/libgnome-desktop/gnome-rr.h b/libgnome-desktop/gnome-rr.h
index 4c7cf80c..caf6b2d2 100644
--- a/libgnome-desktop/gnome-rr.h
+++ b/libgnome-desktop/gnome-rr.h
@@ -144,6 +144,7 @@ gboolean        gnome_rr_screen_set_dpms_mode      (GnomeRRScreen         *scree
 guint32         gnome_rr_output_get_id             (GnomeRROutput         *output);
 const char *    gnome_rr_output_get_name           (GnomeRROutput         *output);
 const char *    gnome_rr_output_get_display_name   (GnomeRROutput         *output);
+const char *    gnome_rr_output_get_connector_type (GnomeRROutput         *output);
 const guint8 *  gnome_rr_output_get_edid_data      (GnomeRROutput         *output,
 						    gsize                 *size);
 void            gnome_rr_output_get_ids_from_edid  (GnomeRROutput         *output,
