diff --git a/src/js/ui/application.js b/src/js/ui/application.js
index 771673f..72639c2 100644
--- a/src/js/ui/application.js
+++ b/src/js/ui/application.js
@@ -47,10 +47,14 @@ const SushiIface = <interface name={SUSHI_DBUS_NAME}>
     <arg type="i" direction="in" name="xid" />
     <arg type="b" direction="in" name="closeIfAlreadyShown" />
 </method>
+<signal name="TriggerNautilus">
+    <arg type="n" direction="out" name="event_type" />
+</signal>
 <method name="Close">
 </method>
 </interface>;
 
+
 const Application = new Lang.Class({
     Name: 'Application',
     Extends: Gtk.Application,
diff --git a/src/js/ui/mainWindow.js b/src/js/ui/mainWindow.js
index a65d0ba..c47d18f 100644
--- a/src/js/ui/mainWindow.js
+++ b/src/js/ui/mainWindow.js
@@ -48,6 +48,8 @@ const Utils = imports.ui.utils;
 
 const Sushi = imports.gi.Sushi;
 
+const Gio = imports.gi.Gio;
+
 function MainWindow(args) {
     this._init(args);
 }
@@ -71,7 +73,16 @@ MainWindow.prototype = {
         this._createGtkWindow();
         this._createClutterEmbed();
 
-	this.file = null;
+        this.NautilusActions = Object.freeze({
+            "MOVE_UP": 0,
+            "MOVE_DOWN": 1,
+            "MOVE_LEFT": 2,
+            "MOVE_RIGHT": 3,
+            "DELETE": 4,
+            "ENTER": 5
+        });
+
+    	this.file = null;
     },
 
     _createGtkWindow : function() {
@@ -175,7 +186,34 @@ MainWindow.prototype = {
         this._clearAndQuit();
     },
 
+
+    _moveNautilusSelection : function (key) {
+        let action = 0;
+        switch(key) {
+            case Clutter.KEY_Left:
+                action = this.NautilusActions["MOVE_LEFT"];
+                break;
+            case Clutter.KEY_Right:
+                action = this.NautilusActions["MOVE_RIGHT"];
+                break;
+            case Clutter.KEY_Up:
+                action = this.NautilusActions["MOVE_UP"];
+                break;
+            case Clutter.KEY_Down:
+                action = this.NautilusActions["MOVE_DOWN"];
+                break;
+            default:
+                return;
+        }
+
+        let res = this._application._dbusImpl.emit_signal(
+            "TriggerNautilus",
+            GLib.Variant.new('(n)', [action])
+        );
+    },
+
     _onStageKeyPressEvent : function(actor, event) {
+
         let key = event.get_key_symbol();
 
         if (key == Clutter.KEY_Escape ||
@@ -186,6 +224,13 @@ MainWindow.prototype = {
         if (key == Clutter.KEY_f ||
             key == Clutter.KEY_F11)
             this.toggleFullScreen();
+
+        if (key == Clutter.KEY_Left ||
+            key == Clutter.KEY_Right ||
+            key == Clutter.KEY_Up ||
+            key == Clutter.KEY_Down) {
+            this._moveNautilusSelection(key);
+        }
     },
 
     _onButtonPressEvent : function(actor, event) {
