64

En la versión 37 de Fedora con nautilus 43, la tecla retroceso en nautilus dejó de utilizarse para volver al directorio anterior.
En lo personal nunca me gustó ese cambio, nunca lo aceptaré, POR LA SENCILLA RAZÓN, DE QUE NO ENTIENDO, POR QUÉ TENER QUE USAR LA COMBINACIÓN DE DOS TECLAS PARA VOLVER AL DIRECTORIO ANTERIOR, CUANDO PUEDES USAR SOLO UNA?
Pero, esa sólo es mi opinión, mi comodidad y experiencia en mi trabajo día a día con Nautilus, por lo que, mientras yo encuentre cómo regresar o habilitar dicha función, lo seguiré haciendo.
Hasta la versión 46 de Nautilus/Files de Gnome que venía por defecto en Fedora 40, el script que utilizaba para habilitar la tecla de backspace o retroceso para volver al directorio anterior o padre, funcionaba bien, sin embargo, en la versión 47 de Files o Nautilus, ya no funciona. Así que el script, requiere una actualización, mínima pero la requiere.
Los repositorio de rpmfusion solo se instalan en caso de que no se tengan previamente configurados
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install nautilus-python python3-gobject gtk3 python3 gobject-introspection-devel pkg-config python3-devel gtk-murrine-engine kernel-headers kernel-devel dkms elfutils-libelf-devel qt5-qtx11extras gcc make perl bzip2 meson ninja-build gcc python3-devel python3-pip gobject-introspection-devel glib2-devel nautilus-devel
Aquí la configuración en Nautilus enable BackSpace: se aceptan sugerencias y mejoras
Crear el siguiente directorio:
mkdir -p ~/.local/share/nautilus-python/extensions
Crear el archivo en el directorio creado previamente:
gnome-text-editor ~/.local/share/nautilus-python/extensions/BackspaceBack.py
#!/usr/bin/env python
# created by linuxitos
import gi
gi.require_version('Nautilus', '4.0')
gi.require_version('Gtk', '4.0')
from gi.repository import GObject, Nautilus, Gtk, GLib
def idle_callback(*args):
app = Gtk.Application.get_default()
app.set_accels_for_action("win.up", ["BackSpace"])
return False
def window_added(*args):
GLib.idle_add(idle_callback, None)
class BackspaceBack(GObject.GObject, Nautilus.ColumnProvider):
app = Gtk.Application.get_default()
app.set_accels_for_action("win.up", ["BackSpace"])
app.connect("window-added", window_added)
#!/usr/bin/env python
# created by linuxitos
import gi
gi.require_version('Nautilus', '4.0')
gi.require_version('Gtk', '4.0')
from gi.repository import GObject, Nautilus, Gtk, GLib
def idle_callback(*args):
app = Gtk.Application.get_default()
app.set_accels_for_action("slot.up", ["BackSpace"])
return False
def window_added(*args):
GLib.idle_add(idle_callback, None)
class BackspaceBack(GObject.GObject, Nautilus.ColumnProvider):
app = Gtk.Application.get_default()
app.set_accels_for_action("slot.up", ["BackSpace"])
app.connect("window-added", window_added)
#!/usr/bin/env python
# created by linuxitos (mod GNOME 49)
import gi
import os
gi.require_version('Nautilus', '4.1')
gi.require_version('Gtk', '4.0')
gi.require_version('Gdk', '4.0')
from gi.repository import GObject, Nautilus, Gtk, Gdk
class BackspaceBack(GObject.GObject, Nautilus.InfoProvider):
def __init__(self):
super().__init__()
app = Gtk.Application.get_default()
if not app:
print("[BackspaceBack] Gtk.Application.get_default() is None", file=os.sys.stderr)
return
app.connect("window-added", self.on_window_added)
for window in app.get_windows():
if isinstance(window, Gtk.ApplicationWindow):
self._attach_controller(window)
def update_file_info(self, file: Nautilus.FileInfo):
return
def on_window_added(self, app, window):
if isinstance(window, Gtk.ApplicationWindow):
self._attach_controller(window)
def _attach_controller(self, window: Gtk.Window):
if getattr(window, "_backspace_nav_attached", False):
return
key_controller = Gtk.EventControllerKey.new()
key_controller.connect("key-pressed", self.on_key_pressed, window)
window.add_controller(key_controller)
window._backspace_nav_attached = True
def on_key_pressed(self, controller, keyval, keycode, state, window: Gtk.Window):
if keyval != Gdk.KEY_BackSpace:
return False
if state & Gtk.accelerator_get_default_mod_mask():
return False
focus_widget = window.get_focus()
if isinstance(focus_widget, Gtk.Editable):
return False
try:
window.activate_action("slot.up", None)
return True
except Exception as e:
print(f"[BackspaceBack] Error al activar 'slot.up': {e}", file=os.sys.stderr)
return False
def init():
return BackspaceBack()
Reiniciar nautilus/files
nautilus -q
Espero y sea de utilidad, fue probado y utilizado desde Fedora 37, hasta la versión 49.