FVWM-MENU-DIRECTORY(1)   FVWM-MENU-DIRECTORY(1)

fvwm-menu-directory - ساخت منوی مرور دایرکتوری برای fvwm

fvwm-menu-directory [ --help|-h|-? ] [ --version|-V ] [ --name|-na NAME ] [ --title|-t NAME ] [ --item|-it NAME ] [ --icon-title|-icon-t XPM ] [ --icon-dir|-icon-d XPM ] [ --icon-file|-icon-f XPM ] [ --icon-app|-icon-a XPM ] [ --wm-icons ] [ --dir|-d NAME ] [ --order|-o NUM ] [ --[no]all|-a ] [ --[no]links|-l ] [ --xterm|-x CMD ] [ --exec-title|-exec-t CMD ] [ --exec-file|-exec-f CMD ] [ --exec-app|-exec-a [CMD] ] [ --command-title|-command-t CMD ] [ --command-file|-command-f CMD ] [ --command-app|-command-a CMD ] [ --[no]reuse|-r ] [ --[no]check-subdirs|-ch ] [ --special-dirs|-s [VALUE] ] [ --[no]memory-for-speed|-mem ] [ --menu-style|-men NAME ] [ --func-name|-f NAME ]

یک اسکریپت perl که خروجی لازم برای خواندن با PipeRead را جهت ساخت منوی fvwm شامل فهرست دایرکتوری فراهم می‌کند. تقریباً همه چیز قابل پیکربندی است.

آیتم عنوان همراه با اقدام (action) متصل به خود، معمولاً به منو افزوده می‌شود. این مورد می‌تواند برای تعریف یک اقدام برای دایرکتوری که منو برای آن ساخته می‌شود، مورد استفاده قرار گیرد؛ مانند راه‌اندازی یک ترمینال در این دایرکتوری (حالت پیش‌فرض). با این حال، ممکن است این موضوع برای برخی کاربران ناخوشایند باشد. برای غیرفعال کردن اقدام عنوان از --command-title "" استفاده کنید، و برای حذف کامل عنوان از --title "" بهره بگیرید.

--help

نمایش نحوه استفاده و خروج.

--version

نمایش نسخه و خروج.

--name name

نام منو، فقط همراه با --reuse استفاده می‌شود؛ پیش‌فرض MenuBrowser است.

--title title

قالب عنوان منو، پیش‌فرض '%*-40p' است - ۴۰ نویسه پایانی مسیر کامل فعلی. کلید TAB را می‌توان به صورت '\t' مشخص کرد، اما در fvwm2rc. باید یک بک‌اسلش دوتایی یا کلید واقعی TAB را مشخص کنید.

مشخص‌کننده‌های قالب: %d - نام دایرکتوری فعلی، %p - مسیر کامل دایرکتوری فعلی.

این مشخص‌کننده‌ها می‌توانند یک اندازه عددی صحیح اختیاری دریافت کنند؛ مثبت برای رشته تراز شده از راست یا منفی برای رشته تراز شده از چپ، مثال: %8x؛ و *num یا *-num اختیاری، به این معنی که فقط num نویسه اول یا آخر (در صورت منفی بودن) باقی بماند. مقدار num باید بیشتر از ۳ باشد، زیرا بخش حذف‌شده با ... جایگزین می‌شود، مثال: %*30x. هر دو حالت را می‌توان ترکیب کرد: %-10*-20x، که نشان می‌دهد فقط ۲۰ نویسه آخر دریافت شود، اما اگر طول آن کمتر از ۱۰ باشد - با حداکثر ۱۰ فاصله در سمت راست پر شود.

--item format

قالب آیتم منو، پیش‌فرض '%n' است. کلید TAB و اصلاح‌کننده‌های عرض برای %n، %N و %s را می‌توان همان‌طور که در --title در بالا شرح داده شد مشخص کرد. توجه داشته باشید که تعیین قالبی غیر از پیش‌فرض سرعت اسکریپت را کاهش می‌دهد.

مشخص‌کننده‌های قالب:

%n - file/dir name (without the path)
%N - file/dir name (full with the path)
%d - file/dir date (yyyy-mm-dd HH:MM:SS)
%D - file/dir date (yyyy-mm-dd)
%s - file/dir size (in bytes)
%t - file/dir type (File|Dir |Link|Sock|Blck|Char|Pipe)
%T - file/dir type (F|D|L|S|B|C|P)

مثال: --title '%*-40p\tDate, Type\tSize' --item '%*40n\t%d %t\t%s'

--icon-title icon

آیکون عنوان منو، پیش‌فرض هیچ است.

--icon-dir icon

آیکون دایرکتوری منو، پیش‌فرض هیچ است.

--icon-file icon

آیکون فایل منو، پیش‌فرض هیچ است.

--icon-app icon

آیکون برنامه منو، پیش‌فرض هیچ است.

--wm-icons

تعریف نام‌های آیکون مناسب برای استفاده همراه با بسته wm-icons. در حال حاضر این معادل است با: --icon-title menu/folder-open.xpm --icon-item menu/file.xpm --icon-dir menu/folder.xpm --icon-app menu/utility.xpm.

--dir dir

دایرکتوری شروع، پیش‌فرض ${HOME-.} است.

--order number

در محدوده (-6 .. 6)، پیش‌فرض 5 است:
1 - do not sort
2 - dirs first
3 - files first
4 - sort by name
5 - dirs first
6 - files first

عدد منفی نشان‌دهنده ترتیب معکوس است.

--[no]all

نمایش فایل‌های پنهان، مانند 'ls -A'، پیش‌فرض --noall است.

--[no]links

دنبال کردن دایرکتوری‌های پیوند داده شده، پیش‌فرض --nolinks است.

--xterm command

فراخوانی شبیه‌ساز ترمینال X، پیش‌فرض 'xterm -e' است.

--exec-title command

یک دستور Exec در fvwm روی عنوان دایرکتوری (معمولاً شل)، پیش‌فرض ${SHELL-/bin/sh} است. '-' به معنی عدم وجود دستور Exec (یعنی Nop) است. اگر دستور با '^' شروع نشود، فراخوانی ترمینال X در ابتدای آن اضافه می‌شود. دستور در دایرکتوری که در حال حاضر مرور می‌شود اجرا می‌گردد.

--exec-file command

یک دستور Exec در fvwm روی فایل‌های معمولی، پیش‌فرض ${EDITOR-vi} است. '-' به معنای عدم وجود دستور Exec (یعنی Nop) است. اگر دستور با '^' شروع نشود، فراخوانی ترمینال X در ابتدای آن افزوده می‌شود. نام واقعی فایل به انتهای دستور اضافه می‌گردد.

--exec-app [command]

یک دستور Exec در fvwm روی فایل‌های با دسترسی اجرا (+x)، پیش‌فرض '-' است، که به معنی همان دستور فایل‌های معمولی است. اگر دستوری داده نشود، خالی در نظر گرفته می‌شود - صرفاً فایل +x را اجرا می‌کند. اگر دستور با '^' شروع نشود، فراخوانی ترمینال X در ابتدای آن افزوده می‌شود. نام واقعی فایل به انتهای دستور اضافه می‌گردد.

--command-title command

یک دستور fvwm برای اجرا روی عنوان. اگر این گزینه مشخص نشود (یا دستور '-' باشد)، به جای آن از --exec-title استفاده می‌شود. در دستور، %d با مسیر کامل دایرکتوری جایگزین می‌شود.

در واقع، --exec-title=tcsh معادل است با --command-title='Exec cd %d; xterm -e tcsh'.

مقدار خالی اقدام عنوان را غیرفعال می‌کند.

--command-file command

یک دستور fvwm برای اجرا روی فایل‌های معمولی. اگر این گزینه داده نشود (یا دستور '-' باشد)، به جای آن از --exec-file استفاده می‌شود. در دستور، %f با مسیر کامل فایل جایگزین می‌شود.

در واقع، --exec-file=vi معادل است با --command-file='Exec xterm -e vi %f'.

--command-app command

یک دستور fvwm برای اجرا روی فایل‌های اجرایی (x). اگر این گزینه مشخص نشود (یا دستور '-' باشد)، از --command-app به جای آن استفاده می‌شود. در این دستور، %f با مسیر کامل فایل جایگزین می‌شود.

در واقع، --exec-app=^exec معادل است با --command-app='Exec exec %f'.

--[no]reuse

بدون منوهای بالارونده (pop-up)، استفاده مجدد از همان منو، پیش‌فرض --noreuse است. هنگامی که این گزینه را مشخص می‌کنید، از اقدام Menu استفاده می‌شود، نه Popup. همچنین، پارامتر --name نادیده گرفته نمی‌شود، و در صورتی که فایل ~/.fvwm/.fvwm-menu-directory.dir وجود داشته باشد، پارامتر --dir نادیده گرفته خواهد شد. این فایل فقط زمانی ایجاد یا استفاده می‌شود که این گزینه مشخص شده باشد، و تنها راه‌حل برای وضعیت فعلی منوی fvwm است.

--[no]check-subdirs

بررسی تمامی زیردایرکتوری‌ها برای داشتن مجوز اجرا (+x) و جایگزینی دستور "Popup"/"Menu" با Nop برای موارد فاقد مجوز. این کار جلوه بصری غیرفعال کردن مثلث منوی پاپ‌آپ در آیتم زیردایرکتوری را دارد. حالت پیش‌فرض --nocheck-subdirs است، زیرا: ۱) فعال کردن این مورد سرعت اسکریپت را کمی کاهش می‌دهد، ۲) با فعال بودن این گزینه، اگر از هیچ آیکونی استفاده نشود و مرتب‌سازی جداگانه دایرکتوری/فایل به کار نرود، هیچ راهی برای تشخیص اینکه آیا این آیتم یک دایرکتوری است یا فایل وجود ندارد.

--special-dirs value

افزودن دایرکتوری‌های ویژه .. یا ~ یا / مطابق با مقدار اختیاری داده شده. بدون این گزینه این دایرکتوری‌ها اضافه نمی‌شوند. مقدار پیش‌فرض در صورت عدم تعیین "1,2" است. این مقدار شامل اندیس‌های مرتب‌شده دایرکتوری‌های ویژه است که با کاما از هم جدا شده‌اند، به طوری که 1 دایرکتوری والد، 2 دایرکتوری خانه (home)، و 3 دایرکتوری ریشه (root) است. اگر یک علامت منفی قبل از مقدار قرار گیرد، دایرکتوری‌های ویژه به جای بالای منو در انتهای منو افزوده می‌شوند. مقدار 0 یا هر مقدار نامعتبر معادل عدم تعیین این گزینه است.

--[no]memory-for-speed

استفاده از بهینه‌سازی سرعت؛ یعنی استفاده از منوهای دایرکتوری که قبلاً ایجاد شده‌اند بدون از بین بردن آن‌ها در هنگام بسته شدن، پیش‌فرض --nomemory-for-speed است.

هشدار: بهینه‌سازی سرعت حافظه زیادی اشغال می‌کند که تا زمانی که fvwm در حال اجراست دیگر هرگز آزاد نمی‌شود.

--menu-style name

اختصاص نام MenuStyle به منوها.

--func-name name

بازنویسی نام پیش‌فرض MissingSubmenuFunction که FuncFvwmMenuDirectory است.

پارامترهای گزینه را می‌توان با استفاده از '=' یا در آرگومان بعدی مشخص کرد. گزینه‌های کوتاه اگر مبهم نباشند بلامانع هستند: -a، -x، -icon-f؛ اما در مورد گزینه‌های کوتاه احتیاط کنید، آنچه اکنون غیرمبهم است ممکن است در نسخه‌های بعدی مبهم شود.

برای فراخوانی اسکریپت، این عبارت را در فایل پیکربندی fvwm خود قرار دهید:

AddToFunc FuncFvwmMenuDirectory
+ I PipeRead "fvwm-menu-directory -d $0"

مثال پیچیده‌تر:

AddToFunc FuncFvwmMenuDirectory
+ I PipeRead "fvwm-menu-directory -d '$0' -x 'Eterm -g 80x40 -e' \\
    -a -l -o 6 --exec-app --exec-title 'tcsh -l' \\
    --exec-file 'vim -R' -t 'Go to: %d' --wm-icons"

و این را در منویی قرار دهید که می‌خواهید منوهای دایرکتوری از آن باز شوند:

AddToMenu SomeMenu MissingSubmenuFunction FuncFvwmMenuDirectory
+ "Home Directory" Popup $[HOME]
+ "Httpd Directory" Popup /home/httpd

نکته: لطفاً از نام‌های مسیر مطلق استفاده کنید.

برای دستیابی به نتایج بهتر، ایده خوبی است که هنگام استفاده از این اسکریپت، تأخیر پاپ‌آپ منو را روی مقداری مثبت تنظیم کرده و مکان‌نمای مشغول را در فایل پیکربندی خود فعال کنید:

MenuStyle * PopupDelayed, PopupDelay 200
BusyCursor DynamicMenu True

کاربرد جالب دیگر ('--reuse' یا '-r' برای این مورد الزامی است):

AddToMenu Browser
+ DynamicPopupAction PipeRead \\
  "fvwm-menu-directory -r -na Browser -d / -s"
AddToMenu SomeMenu "My Browser" Menu Browser

در اینجا اگر فایل ~/.fvwm/.fvwm-menu-directory.dir وجود داشته باشد، پارامتر '--dir' (دایرکتوری شروع) نادیده گرفته می‌شود، که می‌توانید آن فایل را حذف کنید.

الهام‌گرفته در تاریخ 1999-06-07 توسط Dominik Vogt <domivogt@fvwm.org>.

بازنویسی در تاریخ 1999-08-05 توسط Mikhael Goikhman <migo@homemail.com>.

این اسکریپت تحت همان شرایط خود fvwm توزیع می‌شود. برای جزئیات به پروانه عمومی همگانی گنو (GNU GPL) مراجعه کنید.

گزارش اشکالات به <fvwm-workers@fvwm.org> یا https://github.com/fvwmorg/fvwm3.

2026-06-28