بخش ۱: نصب پیشنیازها
۱. نصب python3-nautilus برای GNOME 48
sudo apt update
sudo apt install python3-nautilus۲. تأیید نصب برای GNOME 48
# بررسی نسخه Nautilus
nautilus --version
# باید ببینید: GNOME nautilus 48.x
# تست Python binding برای نسخه ۴.۰
python3 -c "import gi; gi.require_version('Nautilus', '4.0'); from gi.repository import Nautilus; print('Nautilus Python binding برای GNOME 48 آماده است!')"بخش ۲: ایجاد ساختار دایرکتوری
۱. ایجاد دایرکتوری افزونهها
mkdir -p ~/.local/share/nautilus-python/extensionsبخش ۳: ایجاد افزونه Backspace برای GNOME 48
فایل افزونه backspace_back.py:
#!/usr/bin/env python3
# Backspace Back Extension for GNOME 48 - Nautilus 4.0
# این افزونه دکمه Backspace را برای بازگشت به پوشه قبلی تنظیم میکند
import gi
gi.require_version('Nautilus', '4.0')
gi.require_version('Gtk', '4.0')
gi.require_version('GLib', '2.0')
from gi.repository import GObject, Nautilus, Gtk, GLib
class BackspaceBackExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
super().__init__()
print("Backspace Back Extension for GNOME 48 بارگذاری شد!")
# تنظیم accelerator با تأخیر برای اطمینان از بارگذاری کامل
GLib.timeout_add(1500, self._setup_backspace_accelerator)
def _setup_backspace_accelerator(self):
"""
تنظیم Backspace برای بازگشت به پوشه قبلی در GNOME 48
"""
try:
app = Gtk.Application.get_default()
if app:
# در GNOME 48 و Nautilus 4.0 از این action استفاده کنید
app.set_accels_for_action("win.up", ["BackSpace"])
print("✅ Backspace برای عمل 'win.up' تنظیم شد")
# actionهای جایگزین برای سازگاری بیشتر
app.set_accels_for_action("browser.up", ["BackSpace"])
print("✅ Backspace برای عمل 'browser.up' تنظیم شد")
# برای اطمینان بیشتر، actionهای دیگر را هم امتحان میکنیم
alternative_actions = [
"location-popup-up",
"slot.up",
"view.up"
]
for action in alternative_actions:
try:
app.set_accels_for_action(action, ["BackSpace"])
print(f"✅ Backspace برای عمل '{action}' تنظیم شد")
except Exception as alt_e:
print(f"⚠️ عمل '{action}' پشتیبانی نمیشود: {alt_e}")
else:
print("❌ برنامه پیشفرض GTK یافت نشد")
except Exception as e:
print(f"❌ خطا در تنظیم Backspace: {e}")
# تلاش مجدد پس از ۳ ثانیه
GLib.timeout_add(3000, self._setup_backspace_accelerator)
return False
return False # توقف تایمر
def get_file_items(self, files):
"""
آیتمهای منو برای فایلها - در این افزونه نیازی نیست
"""
return []
def get_background_items(self, current_folder):
"""
آیتمهای منو برای background - در این افزونه نیازی نیست
"""
return []بخش ۴: نصب و فعالسازی افزونه
۱. ذخیره فایل افزونه
nano ~/.local/share/nautilus-python/extensions/backspace_back.py۲. کد بالا را کپی کرده و ذخیره کنید (Ctrl+X, Y, Enter)
۳. تنظیم مجوز اجرا
chmod +x ~/.local/share/nautilus-python/extensions/backspace_back.py۴. ریستارت Nautilus
nautilus -q۵. تست افزونه
- Nautilus را دوباره اجرا کنید
- به یک پوشه بروید
- دکمه Backspace را فشار دهید
- باید به پوشه قبلی بازگردید
بخش ۵: عیبیابی و دیباگ
۱. مشاهده لاگهای افزونه
NAUTILUS_PYTHON_DEBUG=1 nautilus۲. اگر Backspace کار نکرد:
# بررسی اینکه افزونه بارگذاری شده است
ls ~/.local/share/nautilus-python/extensions/
# بررسی خطاها
journalctl -f | grep nautilus۳. نسخه جایگزین در صورت مشکل:
اگر افزونه اصلی کار نکرد، این نسخه جایگزین را امتحان کنید:
#!/usr/bin/env python3
# Backspace Back Extension - Alternative Version for GNOME 48
import gi
gi.require_version('Nautilus', '4.0')
gi.require_version('Gtk', '4.0')
gi.require_version('GLib', '2.0')
from gi.repository import GObject, Nautilus, Gtk, GLib
class BackspaceBackAlternative(GObject.GObject, Nautilus.InfoProvider):
def __init__(self):
super().__init__()
print("Backspace Back Alternative برای GNOME 48 بارگذاری شد!")
self.setup_completed = False
def update_file_info(self, file):
"""
این متد مکرراً فراخوانی میشود - از آن برای تنظیم accelerator استفاده میکنیم
"""
if not self.setup_completed:
GLib.idle_add(self._setup_accelerators)
def _setup_accelerators(self):
"""تنظیم accelerators"""
try:
app = Gtk.Application.get_default()
if app:
# تمام actionهای ممکن را امتحان میکنیم
actions = ["win.up", "browser.up", "view.up", "slot.up"]
for action in actions:
try:
app.set_accels_for_action(action, ["BackSpace"])
print(f"✅ Backspace برای '{action}' تنظیم شد")
self.setup_completed = True
except:
continue
if self.setup_completed:
print("🎯 افزونه Backspace با موفقیت پیکربندی شد!")
else:
print("⚠️ هیچ یک از actionها پشتیبانی نمیشوند")
except Exception as e:
print(f"❌ خطا: {e}")
return Falseبخش ۶: مدیریت افزونه
۱. بررسی وضعیت افزونه
# بررسی فایل افزونه
ls -la ~/.local/share/nautilus-python/extensions/backspace_back.py
# بررسی محتوای فایل
head -20 ~/.local/share/nautilus-python/extensions/backspace_back.py۲. غیرفعال کردن موقت
mv ~/.local/share/nautilus-python/extensions/backspace_back.py ~/.local/share/nautilus-python/extensions/backspace_back.py.disabled
nautilus -q۳. فعالسازی مجدد
mv ~/.local/share/nautilus-python/extensions/backspace_back.py.disabled ~/.local/share/nautilus-python/extensions/backspace_back.py
nautilus -qنکات مهم برای GNOME 48:
- حتماً از
gi.require_version('Nautilus', '4.0')استفاده کنید - در GNOME 48 action اصلی
win.upاست - افزونه باید در مسیر صحیح قرار گیرد
- پس از هر تغییر، Nautilus باید ریستارت شود
- از
GLib.timeout_addبرای تأخیر در اجرا استفاده کنید
تأیید نصب:
اگر همه مراحل را درست انجام داده باشید، پس از ریستارت Nautilus:
- ✅ با فشار دادن Backspace به پوشه قبلی بازمیگردید
- ✅ در ترمینال پیام موفقیت را میبینید
- ✅ هیچ خطایی در لاگها مشاهده نمیشود
اگر مشکلی داشتید، لاگهای دیباگ را بررسی کنید و نسخه جایگزین را امتحان نمایید.