ranger (العربية)
ranger رينجر عبارة عن مدير ملفات لا يستخدم واجهة رسومية بل يعمل في الطرفية، مكتوب بلغة Python ويعمل بأسلوب محرر vi لربط المفاتيح، ولديه مجموعة واسعة من الميزات، حيث تستطيع إدارة الملفات ومهامها باستعمال قليل من أزرار لوحة المفاتيح ومن دون الحاجة لاستعمال الفأرة.
التثبيت
يمكنك تثبيت ranger من المستودعات الرسمية باستعمال pacman:
# pacman -S ranger
هناك أيضاً ranger-git]AUR[broken link: package not found] في مستودعات AUR.
إذا أردت أن تُعاين الملفات باستعمال "scope.sh" فقم بتثبيت:
- libcaca لمعاينة الصور
- highlight لتلوين الكود بشكل مشابه لبرامج بيئة تطوير التطبيقات
- atool لمعاينة الملفات المضغوطة
- lynx, w3m, elinks لمعاينة صفحات HTML
- poppler لمعاينة ملفات PDF
- transmission-show[broken link: package not found] لمعاينة ملفات bit-torrent
- mediainfo أو perl-image-exiftool لمعاينة معلومات ملفات الوسائط
التشغيل
لبدأ رينجر قم بتشغيل أي برنامج طرفية مثل xterm واكتب الأمر ranger
أو يمكنك استخدام الأمر:
xterm -e ranger
مقارنة مع مديري ملفات آخرين
مقارنةً مع مديري الملفات ذوو الواجهة الرسومية والفأرة فإن كفاءة رينجر أكبر، لكن تبقى الواجهة الرسومية جذابة أكثر. لدى رينجر قسم واحد يحوي أعمدة متعددة للمجلدات المختلفة، وتستطيع أن ت عاين لمحتوى الملفات على الجانب الأيمن، ومقارنة مع مديري الملفات مزدوجي الأقسام فإن رينجر يعرض معلومات أكثر عن المجلدات والملفات، ويمكنك التنقل بين المجلدات بشكل سهل وسريع باستخدام لوحة المفاتيح أو الأوامر والمواقع المحفوظة، كما أن محتوى الملف أو المجلد يظهر بشكل تلقائي للمعاينة عند الوقوف على أحد الملفات أو المجلدات، ومن ميزات مدير الملفات رينجر أيضاً: العمل بأسلوب المحرر vi لربط المفاتيح، توفر الإشارات المرجعية، إمكانية الاختيار، إمكانية وضع وسوم، التبويبات المتعددة، سجل لحفظ الأوامر، القدرة على إنشاء وصلات، أوضاع تحكم متعددة، وعارض للمهمات. يوفر رينجر أيضاً أوامر قابلة للتخصيص ومفاتيح قابلة للربط حتى مع سكربتات خارجية. أقرب المنافسين لـ رينجر هو Vifm الذي يتكون من قسمين مع ميزة المحرر vi السابقة لكنه يمتلك ميزات أقل بشكل عام.
الوثائق
تستطيع فتح الكتيب الإرشادي لمدير الملفات رينجر بكتابة ?
يمكنك أيضاً فتح قائمة بالمفاتيح التي تم ربطها بأوامر معينة عن طريق كتابة 1?
، ويمكنك أيضاً كتابة 2?
لفتح قائمة الأوامر، و3?
لقائمة الإعدادات.
التخصيص
عند بدء تشغيل رينجر يقوم بإنشاء مجلد ~/.config/ranger/
ويمكنك نسخ ملفات التهيئة الافتراضية إلى هذا المجلد عن طريق الأمر:
ranger --copy-config=all
ومن ثم تستطيع تخصيصهم، من المفيد في هذه الحالة أن تكون ملماً بعض الشيء بلغة python.
-
rc.conf
للتحكم بأوامر بدء التشغيل وربط المفاتيح -
commands.py
للتحكم بالأوامر التي يتم تنفيذها عند استخدام ":" -
rifle.conf
للتحكم بالتطبيقات التي يتم تشغيلها عند فتح أحد الملفات
يمكنك فتح الملفات باستخدام "l" أو "<Enter>". من أجل الملف rc.conf
فإنك تحتاج فقط لأن تضيف التغييرات من الملف الافتراضي ﻷن كلا الملفين يتم تحميلهما، أما من أجل الملف commands.py
فإذا لم تقم بإضافة الملف كاملاً فقم بوضع هذا السطر في أعلى الملف:
from ranger.api.commands import *
ربط المفاتيح
قم باستخدام الملف ~/.config/ranger/rc.conf
لتعديل المفاتيح، حيث بإمكانك أيضاً أن تتعلم قواعد الكتابة والتعديل من نفس الملف، بالإضافة إلى أن هناك العديد من النماذج المعرفة مسبقاً.
المثال التالي يشرح كيفية استعمال "DD" لنقل الملفات المحددة إلى المجلد ~/.Trash/
، قم بوضع هذا الكود في ~/.config/ranger/rc.conf
:
# move to trash map DD shell mv -t /home/myname/.config/ranger/Trash %s
تحديد الأوامر
تكملة للمثال السابق فإن إضافة الأسطر التالية إلى ~/.config/ranger/commands.py
ستعمل على تعريف أمر لإفراغ مجلد المحذوفات ~/.Trash
:
class empty(Command): """:empty Empties the trash directory ~/.Trash """ def execute(self): self.fm.run("rm -rf /home/myname/.Trash/{*,.[^.]*}")
لاستخدام الأمر قم بكتابة ":empty <Enter>" تستطيع استعمال المفتاح <tab> للإكمال التلقائي إذا أردت.
فتح الملفات باستخدام التطبيقات الافتراضية
قم بتعديل الملف ~/.config/ranger/rifle.conf
وبما أن الأسطر الأولى يتم تفيذها أولاً فيجب عليك وضع تعديلاتك في بداية الملف، على سبيل المثال السطر التالي سيجعل الملفات ذات الامتداد tex تُفتح باستخدام تطبيق kile.
ext tex = kile "$@"
استخدام sxiv لاستعراض الصور
من أجل استعراض الصور باستخدام sxiv بعد أن قام رينجر بتشغيل عارض الصور الافتراضي عند فتح صورة معينة، استخدم rifle_sxiv.sh script واتبع التعليمات الموجودة في التعليقات.
أوامر مفيدة
الأقراص الخارجية
من الممكن ربط الأقراص الخارجية بشكل تلقائي عن طريق Udev أو عن طريق udev wrapper، الأقراص التي تم ربطها في /media
تستطيع الدخول إليها بشكل سهل بالضغط على gm
(go,media).
الأقراص على الشبكة
أوامر متعلقة بالأرشفة
هذه الأوامر تستخدم atool لتنفيذ أوامر الأرشفة.
فك الضغط
الأوامر التالية تنفذ عملية فك الضغط عن الأرشيف بنسخ (yy) ملف أو أكثر من ملفات الأرشيف ثم تنفيذ الأمر "استخرج هنا" ":extracthere" في المجلد المطلوب.
import os from ranger.core.loader import CommandLoader class extracthere(Command): def execute(self): """ Extract copied files to current directory """ copied_files = tuple(self.fm.env.copy) if not copied_files: return def refresh(_): cwd = self.fm.env.get_directory(original_path) cwd.load_content() one_file = copied_files[0] cwd = self.fm.env.cwd original_path = cwd.path au_flags = ['-X', cwd.path] au_flags += self.line.split()[1:] au_flags += ['-e'] self.fm.env.copy.clear() self.fm.env.cut = False if len(copied_files) == 1: descr = "extracting: " + os.path.basename(one_file.path) else: descr = "extracting files from: " + os.path.basename(one_file.dirname) obj = CommandLoader(args=['aunpack'] + au_flags \ + [f.path for f in copied_files], descr=descr) obj.signal_bind('after', refresh) self.fm.loader.add(obj)
الضغط
الأوامر التالية تُمكن المستخدم من ضغط عدة ملفات على المجلد الحالي عن طريق تحديدهم ومن ثم استدعاء الأمر ":compress <package name>" الذي يدعم اقتراح تسمية الأرشيف المضغوط وفقاً لاسم المجلد الحالي كما يدعم امتدادات وصيغ متعددة للضغط.
import os from ranger.core.loader import CommandLoader class compress(Command): def execute(self): """ Compress marked files to current directory """ cwd = self.fm.env.cwd marked_files = cwd.get_selection() if not marked_files: return def refresh(_): cwd = self.fm.env.get_directory(original_path) cwd.load_content() original_path = cwd.path parts = self.line.split() au_flags = parts[1:] descr = "compressing files in: " + os.path.basename(parts[1]) obj = CommandLoader(args=['apack'] + au_flags + \ [os.path.relpath(f.path, cwd.path) for f in marked_files], descr=descr) obj.signal_bind('after', refresh) self.fm.loader.add(obj) def tab(self): """ Complete with current folder name """ extension = ['.zip', '.tar.gz', '.rar', '.7z'] return ['compress ' + os.path.basename(self.fm.env.cwd.path) + ext for ext in extension]
ربط الصور
الأوامر التالية تفترض أنك تستخدم CDemu لكي تربط الصور بالنظام (المقصود بالصور هي صور الأنظمة والبرامج ذوات الامتداد iso أو غيره، وليس صور jpg أو png أو gif وغيرها) و autofs الذي يربط الأقراص الوهمية بمكان محدد ('/media/virtualrom' في هذه الحالة). لا تنسى أن تغير مسار المجلد الذي سيتم ربط القرص فيه حسب إعدادات نظامك.
لكي تربط صورة (أو عدة صور) بقرص وهمي من cdemu داخل رينجر فإنك تختار الصور ومن ثم تكتب ':mount' في الكونسول، قد تستغرق عملية الربط قليلاً من الوقت بحسب إعداداتك (بحسب إعداداتي استغرقت عملية الربط دقيقة واحدة)، فالأوامر تستخدم محملاً مخصصاً حيث أنها تنتظر المجلد لكي يتم ربطه ومن ثم تقوم بفتحه في الخلفية في التبويب التاسع.
import os, time from ranger.core.loader import Loadable from ranger.ext.signals import SignalDispatcher from ranger.ext.shell_escape import * class MountLoader(Loadable, SignalDispatcher): """ Wait until a directory is mounted """ def __init__(self, path): SignalDispatcher.__init__(self) descr = "Waiting for dir '" + path + "' to be mounted" Loadable.__init__(self, self.generate(), descr) self.path = path def generate(self): available = False while not available: try: if os.path.ismount(self.path): available = True except: pass yield time.sleep(0.03) self.signal_emit('after') class mount(Command): def execute(self): selected_files = self.fm.env.cwd.get_selection() if not selected_files: return space = ' ' self.fm.execute_command("cdemu -b system unload 0") self.fm.execute_command("cdemu -b system load 0 " + \ space.join([shell_escape(f.path) for f in selected_files])) mountpath = "/media/virtualrom/" def mount_finished(path): currenttab = self.fm.current_tab self.fm.tab_open(9, mountpath) self.fm.tab_open(currenttab) obj = MountLoader(mountpath) obj.signal_bind('after', mount_finished) self.fm.loader.add(obj)
مصادر من الإنترنت
- ranger صفحة رينجر على الإنترنت.
- ranger mailing list قائمة رينجر البريدية
- Arch Linux forum thread موضوع في منتديات أرش لينوكس
- GitHub-page
- DotShare.it تكوينات