import os import subprocess from gi.repository import Nautilus, GObject class KittyNautilusExtension(GObject.GObject, Nautilus.MenuProvider): def __init__(self): pass def launch_kitty(self, menu: Nautilus.MenuItem, path): subprocess.Popen(["kitty", "--working-directory", path], shell=False) def make_item(self, name, path) -> Nautilus.MenuItem: item = Nautilus.MenuItem( name=name, label="Open in Kitty", tip="Open current folder in Kitty", icon="terminal", ) item.connect("activate", self.launch_kitty, path) return item def get_file_items(self, _window, files) -> [Nautilus.MenuItem]: if len(files) == 1: path = files[0].get_location().get_path() if os.path.isdir(path): return [self.make_item("NautilusFileOpenKitty", path)] def get_background_items(self, _window, file) -> [Nautilus.MenuItem]: path = file.get_location().get_path() return [self.make_item("NautilusBackgroundOpenKitty", path)]