diff --git a/entity_view_mode.module b/entity_view_mode.module
index cec996e..9669def 100644
--- a/entity_view_mode.module
+++ b/entity_view_mode.module
@@ -285,3 +285,45 @@ function entity_view_mode_get_possible_bundles($entity_type) {
 
   return $bundles;
 }
+
+
+/**
+ * Implements hook_context_plugins().
+ */
+function entity_view_mode_context_plugins() {
+  $plugins = array();
+
+  $plugins['entity_view_mode_context_reaction_entity_view'] = array(
+    'handler' => array(
+      'path' => drupal_get_path('module', 'entity_view_mode') . '/plugins',
+      'file' => 'entity_view_mode_context_reaction_entity_view.inc',
+      'class' => 'entity_view_mode_context_reaction_entity_view',
+      'parent' => 'context_reaction',
+    ),
+  );
+
+  return $plugins;
+}
+
+/**
+ * Implements hook_context_registry().
+ */
+function entity_view_mode_context_registry() {
+  return array(
+    'reactions' => array(
+      'entity_view_mode_entity_view' => array(
+        'title' => t('Entity view mode'),
+        'plugin' => 'entity_view_mode_context_reaction_entity_view',
+      ),
+    ),
+  );
+}
+
+/**
+ * Implements hook_entity_view_mode_alter().
+ */
+function entity_view_mode_entity_view_mode_alter(&$view_mode, $context) {
+  if (module_exists('context') && ($plugin = context_get_plugin('reaction', 'entity_view_mode_entity_view'))) {
+    $plugin->execute($view_mode, $context);
+  }
+}
diff --git a/plugins/entity_view_mode_context_reaction_entity_view.inc b/plugins/entity_view_mode_context_reaction_entity_view.inc
new file mode 100644
index 0000000..4ae5328
--- /dev/null
+++ b/plugins/entity_view_mode_context_reaction_entity_view.inc
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Expose entity view modes as context reactions.
+ */
+class entity_view_mode_context_reaction_entity_view extends context_reaction {
+
+  function options_form($context) {
+    $form = array('#tree' => TRUE);
+
+    $entity_types = array();
+    $empty = array('' => '- ' . t('Select') . ' -');
+    $values = $this->fetch_from_context($context);
+
+    foreach (entity_get_info() as $entity_type => $info) {
+      if (!empty($info['view modes'])) {
+        $entity_types[$entity_type] = isset($info['label']) ? $info['label'] : $entity_type;
+
+        $options = $empty;
+        foreach ($info['view modes'] as $view_mode => $view_mode_info) {
+          $options[$view_mode] = $view_mode_info['label'];
+        }
+
+        $form['view_mode'][$entity_type] = array(
+          '#title' => t('Entity view modes'),
+          '#description' => t('Select the entity view mode for the entity being viewed.'),
+          '#type' => 'select',
+          '#options' => $options,
+          '#default_value' => isset($values['view_mode'][$entity_type]) ? $values['view_mode'][$entity_type] : '',
+          '#states' => array(
+            'visible' => array(
+              ':input[name="reactions[plugins][entity_view_mode_entity_view][entity_type]"]' => array('value' => $entity_type),
+            ),
+          ),
+        );
+      }
+    }
+
+    $form['entity_type'] = array(
+      '#title' => t('Entity type'),
+      '#description' => t('Select the entity type being viewed.'),
+      '#type' => 'select',
+      '#options' => $empty + $entity_types,
+      '#weight' => -10,
+      '#default_value' => isset($values['entity_type']) ? $values['entity_type'] : '',
+    );
+
+    return $form;
+  }
+
+  function execute(&$view_mode, $context) {
+    $entity_type = $context['entity_type'];
+    foreach ($this->get_contexts() as $k => $v) {
+      if (!empty($v->reactions[$this->plugin]) && $v->reactions[$this->plugin]['entity_type'] == $entity_type) {
+        $current_view_mode = $v->reactions[$this->plugin]['view_mode'][$entity_type];
+        $bundles = entity_view_mode_get_enabled_bundles($entity_type, $current_view_mode);
+        list(, , $bundle) = entity_extract_ids($entity_type, $context['entity']);
+        if (in_array($bundle, $bundles)) {
+          $view_mode = $current_view_mode;
+        }
+      }
+    }
+  }
+}
