1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
# This example is contributed by Martin Enlund
import os
from urllib.parse import unquote
from gi.repository import Nautilus, GObject
from typing import List
class OpenTerminalExtension(GObject.GObject, Nautilus.MenuProvider):
def _open_terminal(self, file: Nautilus.FileInfo) -> None:
filename = unquote(file.get_uri()[7:])
os.chdir(filename)
os.system("gnome-terminal")
def menu_activate_cb(
self,
menu: Nautilus.MenuItem,
file: Nautilus.FileInfo,
) -> None:
self._open_terminal(file)
def menu_background_activate_cb(
self,
menu: Nautilus.MenuItem,
file: Nautilus.FileInfo,
) -> None:
self._open_terminal(file)
def get_file_items(
self,
files: List[Nautilus.FileInfo],
) -> List[Nautilus.MenuItem]:
if len(files) != 1:
return []
file = files[0]
if not file.is_directory() or file.get_uri_scheme() != "file":
return []
item = Nautilus.MenuItem(
name="NautilusPython::openterminal_file_item",
label="Open Terminal",
)
item.connect("activate", self.menu_activate_cb, file)
return [
item,
]
def get_background_items(
self,
current_folder: Nautilus.FileInfo,
) -> List[Nautilus.MenuItem]:
item = Nautilus.MenuItem(
name="NautilusPython::openterminal_file_item2",
label="Open Terminal",
)
item.connect("activate", self.menu_background_activate_cb, current_folder)
return [
item,
]
|