diff --git a/src/file_browser.vala b/src/file_browser.vala
index b68c48c..581aa9a 100644
--- a/src/file_browser.vala
+++ b/src/file_browser.vala
@@ -51,6 +51,7 @@ public class FileBrowser : Grid
     private ToolButton _parent_button;
     private GLib.Settings _settings;
     private GLib.Settings _latex_settings;
+    private GLib.Settings _terminal_settings;
     private uint _timeout_id = 0;
 
     public FileBrowser (MainWindow main_window)
@@ -79,6 +80,8 @@ public class FileBrowser : Grid
 
         _latex_settings = new GLib.Settings ("org.gnome.latexila.preferences.latex");
         _latex_settings.changed["clean-extensions"].connect (delayed_refresh);
+        
+        _terminal_settings = new GLib.Settings ("org.gnome.desktop.default-applications.terminal");
     }
 
     // list of parent directories
@@ -277,28 +280,83 @@ public class FileBrowser : Grid
 
     private ToolButton get_open_directory_button ()
     {
-        ToolButton open_directory_button = new ToolButton (null, null);
-        open_directory_button.icon_name = "document-open";
-        open_directory_button.tooltip_text =
-            _("Open the current directory in a file manager");
+        /* Menu */
+
+        Gtk.Menu menu = new Gtk.Menu ();
+        menu.append (get_open_directory_menu ());
+        menu.append (get_open_terminal_menu ());
+        menu.show_all ();
+
+        /* Tool button */
+
+        ToolButton button = new ToolButton (null, null);
+        button.icon_name = "document-open";
 
-        open_directory_button.clicked.connect (() =>
+        button.clicked.connect (() =>
         {
-            return_if_fail (_current_directory != null);
+            menu.popup (null, null, null, 0, get_current_event_time ());
+        });
 
+        return button;
+    }
+    
+    private Gtk.MenuItem get_open_directory_menu ()
+    {
+        Gtk.MenuItem open_directory = 
+			new Gtk.MenuItem.with_label (_("Open directory"));
+        open_directory.tooltip_text = 
+			_("Open the directory in a file manager");
+
+        open_directory.activate.connect (() =>
+        {
+            return_if_fail (_current_directory != null);
+            
             try
             {
-                Latexila.utils_show_uri (this.get_screen (),
-                    _current_directory.get_uri (), Gdk.CURRENT_TIME);
+                Latexila.utils_show_uri(this.get_screen (), 
+					_current_directory.get_uri (), Gdk.CURRENT_TIME);
             }
             catch (Error error)
             {
                 handle_error (error);
             }
         });
+        
+        return open_directory;
+	}
+	
+	private Gtk.MenuItem get_open_terminal_menu ()
+    {
+        Gtk.MenuItem open_terminal = 
+			new Gtk.MenuItem.with_label (_("Open terminal"));
+        open_terminal.tooltip_text = 
+			_("Open the directory in a terminal");
 
-        return open_directory_button;
-    }
+        open_terminal.activate.connect (() =>
+        {
+            return_if_fail (_current_directory != null);
+            
+            string? name_term = _terminal_settings.get_string ("exec");
+            
+            return_if_fail (name_term != null);
+            
+            try
+            {
+				string exec_cmd = 
+					"%s --working-directory=\"%s\""
+					.printf(name_term, _current_directory.get_path ());
+				AppInfo app_info = 
+					AppInfo.create_from_commandline (exec_cmd, "", 0);
+				app_info.launch(null, null);
+			}
+            catch (Error error)
+            {
+                handle_error (error);
+            }
+        });
+        
+        return open_terminal;
+	}
 
     private ToolButton get_properties_button ()
     {
