File tilix-nautilus-43-compat.patch of Package tilix
From 5c28f1e5757409a44f5d22e706151c8a3846b2fe Mon Sep 17 00:00:00 2001
From: Jeremy Bicha <jeremy.bicha@canonical.com>
Date: Thu, 1 Sep 2022 10:05:28 -0400
Subject: [PATCH 1/2] nautilus: Don't import a specific version
This isn't needed since
https://gitlab.gnome.org/GNOME/nautilus-python/-/commit/8c88de8da42
And interferes with being able to use this extension
on Nautilus 43+
---
data/nautilus/open-tilix.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/data/nautilus/open-tilix.py b/data/nautilus/open-tilix.py
index 16a9b97c..21a1223d 100644
--- a/data/nautilus/open-tilix.py
+++ b/data/nautilus/open-tilix.py
@@ -14,7 +14,6 @@
from gi import require_version
require_version('Gtk', '3.0')
-require_version('Nautilus', '3.0')
from gi.repository import Gio, GObject, Gtk, Nautilus
From dd68daaa8b7fdeae1b1a0b7dde337dca4e9d2e2b Mon Sep 17 00:00:00 2001
From: Jeremy Bicha <jeremy.bicha@canonical.com>
Date: Fri, 9 Sep 2022 21:51:05 -0400
Subject: [PATCH 2/2] nautilus: Add compatibility with Nautilus 43
Nautilus 43 and nautilus-python 4 have made major changes to the API
Nautilus.LocationWidgetProvider has been dropped from the API
without a replacement
https://gnome.pages.gitlab.gnome.org/nautilus-python/nautilus-python-migrating-to-4.html
---
data/nautilus/open-tilix.py | 85 ++++++++++++++++++++-----------------
1 file changed, 45 insertions(+), 40 deletions(-)
diff --git a/data/nautilus/open-tilix.py b/data/nautilus/open-tilix.py
index 21a1223d..ac7c53c5 100644
--- a/data/nautilus/open-tilix.py
+++ b/data/nautilus/open-tilix.py
@@ -12,9 +12,11 @@
from urllib.parse import unquote, urlparse
+from gi.repository import Gio, GObject, Nautilus
from gi import require_version
-require_version('Gtk', '3.0')
-from gi.repository import Gio, GObject, Gtk, Nautilus
+if hasattr(Nautilus, "LocationWidgetProvider"):
+ require_version('Gtk', '3.0')
+ from gi.repository import Gtk
TERMINAL = "tilix"
@@ -34,43 +36,44 @@ def open_terminal_in_file(filename):
else:
call("{0} &".format(TERMINAL), shell=True)
+# Nautilus 43 doesn't offer the LocationWidgetProvider any more
+if hasattr(Nautilus, "LocationWidgetProvider"):
+ class OpenTilixShortcutProvider(GObject.GObject,
+ Nautilus.LocationWidgetProvider):
+
+ def __init__(self):
+ source = Gio.SettingsSchemaSource.get_default()
+ if source.lookup(TILIX_KEYBINDINGS, True):
+ self._gsettings = Gio.Settings.new(TILIX_KEYBINDINGS)
+ self._gsettings.connect("changed", self._bind_shortcut)
+ self._create_accel_group()
+ self._window = None
+ self._uri = None
+
+ def _create_accel_group(self):
+ self._accel_group = Gtk.AccelGroup()
+ shortcut = self._gsettings.get_string(GSETTINGS_OPEN_TERMINAL)
+ key, mod = Gtk.accelerator_parse(shortcut)
+ self._accel_group.connect(key, mod, Gtk.AccelFlags.VISIBLE,
+ self._open_terminal)
+
+ def _bind_shortcut(self, gsettings, key):
+ if key == GSETTINGS_OPEN_TERMINAL:
+ self._accel_group.disconnect(self._open_terminal)
+ self._create_accel_group()
+
+ def _open_terminal(self, *args):
+ filename = unquote(self._uri[7:])
+ open_terminal_in_file(filename)
-class OpenTilixShortcutProvider(GObject.GObject,
- Nautilus.LocationWidgetProvider):
-
- def __init__(self):
- source = Gio.SettingsSchemaSource.get_default()
- if source.lookup(TILIX_KEYBINDINGS, True):
- self._gsettings = Gio.Settings.new(TILIX_KEYBINDINGS)
- self._gsettings.connect("changed", self._bind_shortcut)
- self._create_accel_group()
- self._window = None
- self._uri = None
-
- def _create_accel_group(self):
- self._accel_group = Gtk.AccelGroup()
- shortcut = self._gsettings.get_string(GSETTINGS_OPEN_TERMINAL)
- key, mod = Gtk.accelerator_parse(shortcut)
- self._accel_group.connect(key, mod, Gtk.AccelFlags.VISIBLE,
- self._open_terminal)
-
- def _bind_shortcut(self, gsettings, key):
- if key == GSETTINGS_OPEN_TERMINAL:
- self._accel_group.disconnect(self._open_terminal)
- self._create_accel_group()
-
- def _open_terminal(self, *args):
- filename = unquote(self._uri[7:])
- open_terminal_in_file(filename)
-
- def get_widget(self, uri, window):
- self._uri = uri
- if self._window:
- self._window.remove_accel_group(self._accel_group)
- if self._gsettings:
- window.add_accel_group(self._accel_group)
- self._window = window
- return None
+ def get_widget(self, uri, window):
+ self._uri = uri
+ if self._window:
+ self._window.remove_accel_group(self._accel_group)
+ if self._gsettings:
+ window.add_accel_group(self._accel_group)
+ self._window = window
+ return None
class OpenTilixExtension(GObject.GObject, Nautilus.MenuProvider):
@@ -99,7 +102,8 @@ def _menu_activate_cb(self, menu, file_):
def _menu_background_activate_cb(self, menu, file_):
self._open_terminal(file_)
- def get_file_items(self, window, files):
+ def get_file_items(self, *args):
+ files = args[-1]
if len(files) != 1:
return
items = []
@@ -124,7 +128,8 @@ def get_file_items(self, window, files):
return items
- def get_background_items(self, window, file_):
+ def get_background_items(self, *args):
+ file_ = args[-1]
items = []
if file_.get_uri_scheme() in REMOTE_URI_SCHEME:
item = Nautilus.MenuItem(name='NautilusPython::open_bg_remote_item',