On our Ubuntu machines we have nautilus file manager with nautilus-extension-gnome-terminal
installed. This adds an entry to the context menu (right click) to start a gnome-terminal in the current directory. As I'm mostly using Terminator terminal, I wanted to have a similar context menu entry to launch Terminator directly. I
came across this python script
Show archive.org snapshot
that does exactly that.
- Install python3-nautilus:
sudo apt install python3-nautilus
- Create
/usr/share/nautilus-python/extensions/nautilus-open-in-terminal.py
with content
import os, locale
try:
from urllib import unquote
except ImportError:
from urllib.parse import unquote
from gi import require_version
require_version('Gtk', '3.0')
require_version('Nautilus', '3.0')
from gi.repository import Nautilus, GObject
from gettext import gettext, bindtextdomain, textdomain
TERMINAL_PATH="/usr/bin/terminator"
class NautilusOpenInTerminal(GObject.GObject, Nautilus.MenuProvider):
"""Open in terminator"""
def __init__(self):
GObject.Object.__init__(self)
def get_background_items(self, window, file):
"""Returns the menu items to display when no file/folder is selected
(i.e. when right-clicking the background)."""
# Add the menu items
items = []
self._setup_gettext();
self.window = window
if file.is_directory() and file.get_uri_scheme() == "file":
if os.path.exists(TERMINAL_PATH):
items += [self._create_terminal_item(file)]
return items
def _setup_gettext(self):
"""Initializes gettext to localize strings."""
try: # prevent a possible exception
locale.setlocale(locale.LC_ALL, "")
except:
pass
bindtextdomain("nautilus-open-in-terminal", "/usr/share/locale")
textdomain("nautilus-open-in-terminal")
def _create_terminal_item(self, file):
"""Creates the 'Open in Terminal' menu item."""
item = Nautilus.MenuItem(name="NautilusOpenInTerminal::Nautilus",
label=gettext("Open in T_erminator"),
tip=gettext("Open this folder in the Terminator terminal"))
item.connect("activate", self._terminal_run, file)
return item
def _terminal_run(self, menu, file):
"""'Open in Terminal' menu item callback."""
filename = unquote(file.get_uri()[7:])
os.chdir(filename)
os.system(TERMINAL_PATH + " &")
- restart nautilus:
nautilus -q
Posted by Daniel Straßner to makandra dev (2024-10-14 12:36)