FVWMFORM(1) Fvwm Modules FVWMFORM(1)

FvwmForm - ماژول فرم ورودی برای Fvwm

Module FvwmForm [ Alias ]

برنامهٔ FvwmForm باید توسط Fvwm اجرا (spawn) شود. اگر از خط فرمان فراخوانی گردد، FvwmForm شمارهٔ نسخهٔ خود را چاپ کرده و خارج می‌شود.

ماژول FvwmForm سازوکاری برای دریافت ورودی از کاربر و اقدام متناسب با آن فراهم می‌کند. این هدف با استفاده از فرمی محقق می‌شود که کاربر می‌تواند آن را پر کرده و از طریق آن، کارهایی را که می‌خواهد Fvwm انجام دهد انتخاب نماید. یک فرم شامل پنج نوع مؤلفه است: برچسب‌های متنی، ورودی‌های متنی تک‌خطی، گزینه‌های مانعة‌الجمع (انحصاری)، گزینه‌های چندانتخابی، و دکمه‌های کنش (action). این مؤلفه‌ها در چندین سطر و با چیدمانی بسیار منعطف مرتب می‌شوند.

یک برچسب متنی فقط برای ارائهٔ توضیحات به کار می‌رود و نمی‌تواند هیچ ورودی‌ای دریافت کند.

یک مدخل مهلت زمانی (timeout)، سازوکاری برای تعیین سرآمدن زمان فرم و اجرای یک کنش معین پس از اتمام مهلت فراهم می‌سازد. شمارش معکوس به صورتی مشابه با برچسب متنی نمایش داده می‌شود، با این تفاوت که بر اساس مدت‌زمان باقی‌مانده به‌روزرسانی می‌گردد.

از یک فیلد ورودی متن می‌توان برای ویرایش یک رشتهٔ متنی تک‌خطی استفاده کرد. FvwmForm کلیدهای جابه‌جایی نشانگر به سبک Emacs را می‌پذیرد. برای جزئیات بیشتر به FvwmFormInput مراجعه کنید. رونوشت با ماوس پشتیبانی نمی‌شود، اما می‌توانید جای‌گذاری (paste) کنید.

یک بخش انتخابی از چندین گزینه تشکیل می‌شود.

خود بخش انتخابی یک موجودیت منطقی است که هیچ ویژگی نمایشی و ظاهری ندارد.

هر گزینه به صورت یک دکمهٔ فشاری به همراه یک برچسب متنی توضیحی در ادامهٔ آن نمایش داده می‌شود. هنگام انتخاب، گزینهٔ مانعة‌الجمع دایره‌ای را در وسط نشان می‌دهد، در حالی که گزینهٔ چندگانه علامت تیک را به نمایش می‌گذارد.

یک دکمهٔ کنش، هنگامی که فعال شود یک یا چند دستور را به Fvwm ارسال کرده یا دستورهای پوسته را اجرا می‌کند. این دستورهای پوسته می‌توانند حاوی محتوای فیلدهای ورودی فرم بوده و وضعیت گزینه‌های تنظیم‌شده در فرم را منعکس کنند.

دکمه‌های کنش را می‌توان از طریق صفحه‌کلید یا ماوس فعال کرد.

اگر FvwmForm بدون نام مستعار (alias) فراخوانی شود، از دستورهای پیکربندی که با "*FvwmForm" آغاز می‌شوند استفاده می‌کند.

معمولاً FvwmForm را با یک نام مستعار فراخوانی می‌کنید که بیانگر نام یک فرم، دستورهای پیکربندی و فایل پیکربندی آن است. برای نمونه، دستور "Module FvwmForm Rlogin" از دستورهای پیکربندی که با "*Rlogin" آغاز می‌شوند استفاده کرده و فایل پیکربندی اختیاری "Rlogin" را می‌خواند.

تمام فرم‌ها، صرف‌نظر از نام مستعار، ابتدا دستورهای پیکربندی‌ای را بررسی می‌کنند که با "*FvwmFormDefault" شروع می‌شوند. این دستورها معمولاً از فرم درونی "FvwmForm-Form" تأمین می‌شوند که دستورها را در فایل ".FvwmForm" ذخیره می‌کند.

خواندن فیزیکی فایل ورودی اختیاری ".FvwmForm" تنها در نخستین باری که FvwmForm فراخوانی می‌شود، یا پس از به‌روزرسانی فایل توسط "FvwmForm-Form" صورت می‌پذیرد.

هنگامی که فایل ".FvwmForm" خوانده می‌شود، این کار با ارسال دستور "Read .FvwmForm Quiet" به fvwm انجام می‌گیرد. به دلیل نحوهٔ کارکرد دستور "read"، این فایل می‌تواند در پوشهٔ کاربری شخصی fvwm شما و یا در پوشهٔ داده‌های fvwm قرار داشته باشد. برای اطلاعات بیشتر دربارهٔ متغیر محیطی $FVWM_USERDIR به توضیحات دستور read در صفحهٔ راهنمای fvwm مراجعه کنید.

سپس FvwmForm باقی‌ماندهٔ پیکربندی‌های ذخیره‌شده توسط fvwm را می‌خواند. fvwm پیکربندی‌ها را به طور پیوسته نگهداری می‌کند. پیکربندی اولیه از فایل .fvwm2rc می‌آید. منابع دیگر، از جمله دستورهای "Read" نیز می‌توانند یک فرم را تعریف کنند.

هنگام اجازه دادن به FvwmForm و fvwm برای خواندن فایل‌ها، به یاد داشته باشید که این فایل‌ها حاوی دستورهایی هستند که می‌توانند دستورهای پوسته را اجرا نمایند؛ بنابراین باید در تعیین دسترسی‌های این فایل‌ها دقت کافی به خرج دهید.

چنانچه FvwmForm با بافتار پنجره (window context) فراخوانی شود (برای نمونه از منوی یک پنجره)، تمام دستورهایی که به Fvwm ارسال می‌کند دارای همان بافتار پنجره خواهند بود. این امر به FvwmForm اجازه می‌دهد پنجره‌ای را که از آن فراخوانی شده است کنترل کند.

پس از خوانده شدن تمامی دستورهای پیکربندی، FvwmForm فرم تعریف‌شده توسط این دستورها را به نمایش می‌گذارد..SH "پیش‌فرض‌ها (DEFAULTS)"

برنامه FvwmForm یک فرم توکار به نام «FvwmForm-Form» ایجاد می‌کند که فایلی به نام «.FvwmForm» می‌سازد. این فایل شامل رنگ‌ها و قلم‌های پیش‌فرض ذخیره‌شده برای فرم است. فرم‌های دیگر از این پیش‌فرض‌ها استفاده می‌کنند، مگر اینکه درون خود فرم بازنویسی شده باشند.

فرم ایجادکننده پیش‌فرض‌ها معمولاً از یک «منوی ماژول» فراخوانی می‌شود. برای مثال، اگر نام منوی ماژول خود را «Module-Popup» بگذارید، این خط را اضافه خواهید کرد: AddToMenu "Module-Popup" "FvwmForm Defaults" FvwmForm FvwmForm-Form

هنگامی که «FvwmForm Defaults» را از منوی ماژول خود انتخاب می‌کنید، فرمی نمایش داده می‌شود که پیش‌فرض‌های فعلی را نشان داده و به شما اجازه تغییر آن‌ها را می‌دهد. اگر دکمه «Save Restart Me» را فعال کنید، فایل «.FvwmForm» نوشته شده و «FvwmForm-Form» خارج می‌شود و برای نمایش پیش‌فرض‌های جدید مجدداً راه‌اندازی می‌گردد.

نمونه‌ای از محتوایی که این فایل ممکن است پس از ذخیره داشته باشد:

# This file last created by FvwmForm-Form on Sun Nov 28 11:18:26 EST 1999.
*FvwmFormDefault: Font 10x20
*FvwmFormDefault: InputFont 8x13bold
*FvwmFormDefault: ButtonFont 10x20
*FvwmFormDefault: TimeoutFont 10x20
*FvwmFormDefault: Fore white
*FvwmFormDefault: Back cornflowerblue
*FvwmFormDefault: Colorset -1
*FvwmFormDefault: ItemFore green
*FvwmFormDefault: ItemBack gray40
*FvwmFormDefault: ItemColorset -1
*FvwmFormDefault: ButtonPointer hand2
*FvwmFormDefault: ButtonInPointer star
*FvwmFormDefault: InputPointer gumby
*FvwmFormDefault: ButtonPointerFore blue
*FvwmFormDefault: ButtonPointerBack gray
*FvwmFormDefault: ButtonInPointerFore gray
*FvwmFormDefault: ButtonInPointerBack blue
*FvwmFormDefault: InputPointerFore
*FvwmFormDefault: InputPointerBack

دستورات موجود در این فایل درست مانند هر دستور دیگر FvwmForm هستند، با این تفاوت که با «*FvwmFormDefault» آغاز می‌شوند.

برنامه FvwmForm فایل «.FvwmForm» را تنها بار اولی که اجرا می‌شود یا پس از تغییر فایل توسط «FvwmForm-Form» می‌خواند. این کار با ارسال دستور «*FvwmFormDefault: Read x» انجام می‌شود که در آن «x» برابر با «y» یا «n» قرار می‌گیرد. مقدار «n» باعث می‌شود FvwmForm دستور «read .FvwmForm quiet» را به fvwm ارسال کند.

اگر متغیرها و مقادیر را در خط فرمانی که برای راه‌اندازی FvwmForm استفاده می‌شود ارائه دهید (مانند این):

Module FvwmForm MyForm ACTION=Browse "TITLE=Browse Form"

آنگاه همه دستورات ورودی FvwmForm تحت جایگزینی متغیر قرار می‌گیرند. متغیرها از خط فرمان صادر (export) می‌شوند. سپس هر دستور با استفاده از متغیرهای محیط گسترش می‌یابد. برای مثال، با فرض فراخوانی بالا برای «MyForm»، دستورات به این صورت تغییر خواهند کرد:

قبل: *MyForm: Text "$TITLE, Home $HOME, Going to $ACTION" بعد: *MyForm: TEXT "Browse Form, Home /home/me, Going to Browse"

استفاده از این قابلیت باید امکان استفاده از یک فرم را برای مجموعه‌های مختلفی از داده‌های ورودی فراهم سازد.

دستورات زیر را می‌توان در فایل .fvwm2rc یا از طریق هر یک از روش‌های دیگری که fvwm دستورات را می‌پذیرد تنظیم کرد. ساده‌ترین شیوه، ایجاد فایلی در دایرکتوری داده‌های مستقل از معماریِ فقط‌خواندنی، [PREFIX/share/fvwm] یا دایرکتوری شخصی fvwm شما [$HOME/.fvwm] است که با نام مستعار فرم مطابقت داشته باشد.

در پاراگراف‌های زیر، رشته «FvwmForm» معمولاً همان نام مستعار فرم خواهد بود.

برنامه FvwmForm دستورات را هم پیش از نمایش فرم و هم در حین نمایش آن می‌خواند.

دستورات زیر پیش از نمایش فرم پذیرفته می‌شوند:

Back
Button
ButtonFont
ButtonInPointer
ButtonInPointerFore
ButtonInPointerBack
ButtonPointer
ButtonPointerFore
ButtonPointerBack
Choice
Command
Colorset
Font
Fore
GrabServer
Input
InputFont
InputPointer
ItemBack
ItemColorset
ItemFore
InputPointerFore
InputPointerBack
Line
Message
PadVText
Position
Selection
Separator
Text
Timeout
TimeoutFont
Title
UseData
WarpPointer

دستورات زیر در حین نمایش فرم پذیرفته می‌شوند:

Map
Stop
UnMap

امکانات «Map»، «UnMap» و «Stop» در حال توسعه هستند و در حال حاضر در این سند توضیح داده نشده‌اند، چرا که احتمال تغییر آن‌ها وجود دارد.

ترتیب گزینه‌ها اهمیت دارد. نخستین رنگ پس‌زمینه متن، «*FvwmFormBack»، که پیش از یک آیتم قابل نمایش قرار گیرد، رنگ پس‌زمینه پیش‌فرض را برای کل فرم تعیین می‌کند.

به جز این مورد، رنگ‌ها، قلم‌ها، متن، گزینه‌های انتخابی و دکمه‌ها را می‌توان به هر ترتیبی با یکدیگر ترکیب کرد. هیچ محدودیت توکاری روی اندازه فرم، تعداد آیتم‌های روی فرم، یا تعداد قلم‌ها یا رنگ‌های استفاده‌شده وجود ندارد.

*FvwmForm: GrabServer

این گزینه باعث می‌شود FvwmForm در هنگام راه‌اندازی اشاره‌گر موش‌واره را به انحصار خود درآورد (grab کند). این قابلیت برای مواردی مانند تأیید خروج از نشست کاربری مفید است.

*FvwmForm: WarpPointer

این گزینه باعث می‌شود FvwmForm در هنگام راه‌اندازی، اشاره‌گر موش‌واره را به درون پنجره خود بپرداند (warp کند). این کار کاربر را از پیمایش‌های اضافی موش‌واره بی‌نیاز می‌کند.

*FvwmForm: Geometry geometry

موقعیت و اندازه پنجره FvwmForm را مشخص می‌کند. این گزینه مشابه عملکرد گزینه Position است اما انعطاف‌پذیری بیشتری دارد.

*FvwmForm: Position x y

پنجره FvwmForm را در مکان (x, y) روی صفحه نمایش قرار می‌دهد. طبق قرارداد، یک مقدار منفی برای x (y) فاصله را از سمت راست (پایین) صفحه نمایش می‌سنجد.

اگر این گزینه حذف شود، FvwmForm در مرکز صفحه نمایش راه‌اندازی می‌شود.

*FvwmForm: Colorset n

به ماژول اعلام می‌کند که از مجموعه رنگ (colorset) شماره n استفاده کند. *FvwmForm: Back color
رنگ پس‌زمینه پنجره FvwmForm و هر متنی در پنجره را مشخص می‌کند. اولین رنگ پس‌زمینه‌ای که FvwmForm می‌خواند، رنگ پس‌زمینه کلی صفحه را تعیین می‌کند. گزینه Colorset را غیرفعال می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: Fore color

رنگ پیش‌زمینه را برای نمایش برچسب‌های متنی مشخص می‌کند. گزینه Colorset را غیرفعال می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: ItemColorset n

به پیمانه اعلام می‌کند که از colorset n برای موارد (آیتم‌ها) استفاده کند.

*FvwmForm: ItemBack color

رنگ پس‌زمینه را برای پنجره‌های ورودی متن و دکمه‌ها مشخص می‌کند. دکمه‌ها به صورت دکمه‌های سه‌بعدی قابل‌فشردن نمایش داده می‌شوند. ورودی‌ها به صورت فیلدهای فرورفته سه‌بعدی نمایش داده می‌شوند. رنگ‌های پس‌زمینه با سایه متوسط بهترین نتیجه را دارند. گزینه ItemColorset را غیرفعال می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: ItemFore color

رنگ پیش‌زمینه را برای رشته‌های ورودی متن و متن دکمه‌ها مشخص می‌کند. گزینه ItemColorset را غیرفعال می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: Font font

قلم را برای نمایش متن ساده مشخص می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: ButtonFont font

قلم را برای متن روی دکمه‌های کنشی مشخص می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: InputFont font

قلم را برای ورودی متن مشخص می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: TimeoutFont font

قلم را برای نمایش شمارنده پایان مهلت (timeout) و متن‌های مرتبط مشخص می‌کند. بخش DEFAULTS را ببینید.

*FvwmForm: Line justification

یک خط جدید را آغاز می‌کند. یک خط می‌تواند شامل هر تعداد مورد از متن، ورودی، دکمه‌ها و گزینه‌های انتخابی باشد. یک پنجره FvwmForm می‌تواند هر تعداد خط داشته باشد. عرض پنجره به اندازه طولانی‌ترین خط خواهد بود.

تراز موارد در خط توسط justification مشخص می‌شود که می‌تواند یکی از موارد زیر باشد:

left

موارد در سمت چپ پنجره تراز می‌شوند.

right

موارد در سمت راست پنجره تراز می‌شوند.

center

موارد در مرکز پنجره قرار می‌گیرند.

expand

اگر تنها یک مورد در خط وجود داشته باشد، در مرکز پنجره قرار می‌گیرد. اگر دو یا چند مورد وجود داشته باشد، برای پر کردن تمام عرض پنجره گسترده می‌شوند.

*FvwmForm: Message

یک ناحیه متنی را روی فرم تعریف می‌کند که حاوی آخرین پیام خطای fvwm است. برای تعیین اندازه فرم، ناحیه پیام ۸۰ بایت در نظر گرفته می‌شود. طول واقعی آن برابر با پیام دریافت‌شده است. اگر طول پیام از ۸۰ بایت بیشتر شود، می‌توانید با تغییر اندازه فرم بقیه پیام را مشاهده کنید.

نباید هیچ متن، دکمه یا فیلد ورودی را در همان خط پس از یک فیلد پیام قرار دهید. پیام‌های بزرگ‌تر از ۸۰ بایت روی باقی‌مانده خط هم‌پوشانی خواهند داشت.

*FvwmForm: PadVText Pixels

تعداد پیکسل‌های استفاده‌شده به عنوان فاصله‌گذاری عمودی بین موارد متنی، خط به خط. مقدار پیش‌فرض ۶ است که در خطوط حاوی متن آمیخته با جعبه‌های ورودی، گزینه‌ها یا دکمه‌ها مناسب به نظر می‌رسد.

برای متن ساده، مانند آنچه در یک فرم راهنما وجود دارد، فاصله‌گذاری صفر ظاهر بهتری دارد.

(مقادیر فاصله‌گذاری متعدد دیگری نیز در چیدمان فرم وجود دارد که در حال حاضر با دستورها قابل تغییر نیستند.)

*FvwmForm: Text string

رشته string را به صورت متن ساده نمایش می‌دهد. شکستن خطوط باید با استفاده از گزینه‌های متعدد *FvwmForm: Line و *FvwmForm: Text انجام شود. از نویسه‌های فاصله می‌توان برای ایجاد فاصله‌گذاری اضافی بین موارد استفاده کرد.

*FvwmForm: Title string

رشته string را به عنوان عنوان پنجره نمایش می‌دهد. این رشته باید درون دو علامت نقل‌قول (دابل کوتیشن) محصور شود. استفاده از این دستور با هر چیزی به جز یک رشته درون نقل‌قول، یک عنوان خالی ایجاد می‌کند. اگر از این دستور استفاده نشود، عنوان پنجره نام مستعار (alias) فرم خواهد بود.

*FvwmForm: Input name size init_string

یک مورد ورودی متن را با نام name مشخص می‌کند. یک زیرپنجره با عرض size نویسه برای ویرایش استفاده می‌شود. اگر init_string مشخص شده باشد، رشته اولیه هنگام شروع به کار یا بازنشانی FvwmForm خواهد بود. رشته اولیه پیش‌فرض "" است.

می‌توانید با استفاده از دکمه ۲ ماوس، درون یک فیلد ورودی الصاق (paste) انجام دهید. دکمه‌های ۱ و ۳ مکان‌نما را در یک فیلد ورودی جابه‌جا می‌کنند.

فیلدهای ورودی همواره در حالت درج (insert mode) هستند؛ رونویسی (overtyping) پشتیبانی نمی‌شود.

کلیدهای میانبر به سبک Emacs پشتیبانی می‌شوند.

کلیدهای Control-a، Home و Begin به ابتدای فیلد ورودی می‌روند. Control-e و End به انتهای فیلد ورودی می‌روند. Control-b و Left در فیلد ورودی به چپ حرکت می‌کنند. Control-f و Right در فیلد ورودی به راست حرکت می‌کنند. Control-p، Up و Shift-Tab به فیلد ورودی قبلی (در صورت وجود) می‌روند؛ اگر فرم تنها یک فیلد ورودی داشته باشد، مقدار قبلی را فراخوانی می‌کنند. Control-n، Down، Return، Line-feed و Tab به فیلد ورودی بعدی (در صورت وجود) می‌روند؛ اگر فرم تنها یک فیلد ورودی داشته باشد، کلیدهای control-n و Down مقدار ورودی پیشین را بازیابی می‌کنند. Control-h در فیلد ورودی به عقب رفته و یک نویسه را پاک می‌کند. Control-d و Delete نویسه بعدی را در فیلد ورودی حذف می‌کنند. Control-k از محل مکان‌نما تا انتهای فیلد ورودی را پاک می‌کند. Control-u کل فیلد ورودی را پاک می‌کند.

هنگامی که یک فرم دستوری را اجرا می‌کند، تمام مقادیر ورودی در یک حلقه تاریخچه ورودی با عمق ۵۰ مورد ذخیره می‌شوند.

کلید Meta(mod2)-"<" مقدار قبلی یک فیلد ورودی را بازیابی می‌کند. Meta(mod2)-">" مقدار بعدی یک فیلد ورودی را بازیابی می‌کند.

(برای فرم‌هایی با یک فیلد ورودی، از کلیدهای جهت‌نما استفاده کنید که بسیار ساده‌تر هستند.)

*FvwmForm: Selection name type

این گزینه یک مورد گزینش با نام name را آغاز می‌کند. گزینه‌های آن در دستورهای پیکربندی بعدی مشخص می‌شوند. گزینه type یکی از موارد زیر است:

single

انتخاب‌ها مانعة‌الجمع (تک‌انتخابی) هستند.

multiple

این یک انتخاب چندگزینه‌ای است.

*FvwmForm: Separator

یک خط سایه‌دار ۲ پیکسلی در عرض فرم رسم می‌کند تا نشانه‌ای بصری برای یک ناحیه مجزا باشد. *FvwmForm: Choice name value on | off string
گزینه‌ای را برای یک گزینش تعیین می‌کند. موردِ انتخاب دارای یک name و یک value است که در دستورها به کار می‌روند. بخش *FvwmForm: Command را ببینید. رشتهٔ string به عنوان برچسب در سمت راست دکمهٔ انتخاب نمایش داده می‌شود.

هنگامی که FvwmForm شروع به کار کرده یا بازنشانی می‌شود، گزینه حالت اولیهٔ مشخص‌شده را به خود می‌گیرد («on» به معنای انتخاب‌شده است). اگر گزینش‌ها مانعة‌الجمع باشند، FvwmForm ناهماهنگی‌ها در وضعیت‌های اولیهٔ گزینه‌ها را تشخیص نمی‌دهد؛ یعنی ممکن است دو گزینه یا هیچ‌کدام انتخاب شده باشند. با این حال، به محض اینکه کاربر گزینه‌ای را انتخاب کند، FvwmForm تضمین می‌کند که تنها یک گزینه انتخاب شود.

*FvwmForm: Button type string [key]

این گزینه یک دکمهٔ عملیاتی را مشخص می‌کند. دکمه دارای برچسب string است و هنگام فعال شدن، مجموعه‌ای از دستورهای Fvwm (command) را اجرا می‌کند. این دستورها در ادامه تحت *FvwmForm: Commands آورده شده‌اند.

آرگومان اختیاری key یک کلید میانبر صفحه‌کلید را مشخص می‌کند که دکمه را فعال می‌سازد. این کلید می‌تواند یک نویسهٔ کنترلی باشد که به صورت ^@، ^A، ...، ^_ مشخص می‌شود، یا یک کلید تابعی که به صورت F1، F2، ...، F35 مشخص می‌گردد. کلیدهای کنترلی که برای حرکت مکان‌نما در فیلدهای ورودی متنی استفاده می‌شوند نمی‌توانند هیچ دکمه‌ای را فعال کنند؛ به استثنای TAB (^I)، RETURN (^M) و LINEFEED (^J) که در زمان قرار داشتن مکان‌نما در آخرین فیلد ورودی متن می‌توانند دکمه را فعال سازند.

رفتار دکمه با type تعیین می‌شود:

continue

برنامهٔ FvwmForm پس از ارسال دستورها به اجرای خود ادامه می‌دهد.

restart

پس از ارسال دستورها، FvwmForm تمام مقادیر را به مقادیر اولیه بازنشانی کرده و سپس به اجرا ادامه می‌دهد.

quit

برنامهٔ FvwmForm پس از ارسال دستورها خارج می‌شود.

*FvwmForm: Command command

این گزینه یک دستور Fvwm مرتبط با دکمهٔ کنونی را مشخص می‌کند. می‌توان بیش از یک دستور را به یک دکمه متصل کرد. دستورهایی که پیش از هر گزینهٔ *FvwmForm: Button ظاهر می‌شوند، در زمان راه‌اندازی اجرا می‌گردند. این دستور معمولاً یک صدای بوق (beep) برای جلب توجه کاربر است.

دستورهایی که با یک علامت تعجب (!) آغاز می‌شوند توسط FvwmForm اجرا می‌گردند، و تمام دستورهای دیگر برای اجرا به Fvwm ارسال می‌شوند. پیش از ارسال هر دستور به Fvwm، برنامهٔ FvwmForm متغیرهایی با قالب‌های زیر را شناسایی کرده و مقادیر آن‌ها را جایگزین می‌کند.

$(name)

اگر name متناظر با یک فیلد ورودی متن باشد، نتیجه رشتهٔ ورودی کاربر خواهد بود. پیش از نویسه‌های خاصِ نقل‌قول تکی، نقل‌قول دوتایی و بک‌اسلش، یک بک‌اسلش قرار می‌گیرد.

اگر name متناظر با یک گزینه (choice) باشد، در صورت انتخاب بودن آن گزینه، نتیجه مقدار آن گزینه خواهد بود (همان‌طور که در *FvwmForm: Choice مشخص شده است). اگر گزینه انتخاب نشده باشد، نتیجه یک رشتهٔ خالی خواهد بود.

اگر name متناظر با یک گزینش (selection) باشد، نتیجه فهرستی از مقادیر انتخاب‌شدهٔ تمام گزینه‌های آن خواهد بود که با فاصله از هم جدا شده‌اند.

$(name?string)

اگر name یک فیلد ورودی متن بوده و مقدار آن رشته‌ای خالی نباشد، نتیجه string خواهد بود که جایگزینی بازگشتی متغیرها روی آن اعمال شده است. اگر مقدار ورودی خالی باشد، نتیجه خالی خواهد بود.

اگر name یک گزینه باشد و انتخاب شده باشد، نتیجه string با اعمال جایگزینی بازگشتی متغیرها خواهد بود. اگر گزینه انتخاب نشده باشد، نتیجه خالی خواهد بود.

$(name!string)

مشابه حالت بالا است، با این تفاوت که شرایط عکس در نظر گرفته می‌شوند.

هنگام استفاده از حالت‌های «?» و «!» برای ارسال یک رشته، رشته با یک پرانتز راست محصور می‌شود. اگر لازم است پرانتز راست را داخل یک رشته قرار دهید، پیش از آن یک بک‌اسلش بگذارید.

*FvwmForm: UseData datafile leading

به FvwmForm اعلام می‌کند که یک فایل داده را خوانده و داده‌ها را از دستورهای ماژولی که با آرگومان «leading» و یک متغیر ورودی، گزینه یا گزینش در فرم مطابقت دارند، استخراج کند.

این قابلیت به فرم اجازه می‌دهد داده‌های پیکربندی فعلی ماژول fvwm را نمایش دهد. برای مشاهدهٔ مثالی از نحوهٔ کارکرد این قابلیت، فایل «FvwmForm-Rlogin» را که در دایرکتوری داده‌های فقط‌خواندنی و مستقل از معماری [PREFIX/share/fvwm] نصب شده و در زیر آورده شده است، بررسی کنید.

برای گزینه‌ها، وضعیت دکمه با کلمهٔ «on» نشان داده می‌شود؛ تمام مقادیر دیگر برای یک تنظیم به عنوان off در نظر گرفته می‌شوند.

برای گزینش‌ها، وضعیت هر دکمهٔ گزینه بر اساس تطبیق مقدار فعلی گزینش با هر گزینه تعیین می‌شود. در حال حاضر، این قابلیت تنها برای گزینش‌هایی که فقط یک انتخاب را مجاز می‌دانند به‌درستی کار می‌کند.

*FvwmForm: ButtonPointer pointername

نشانگر پیش‌فرض ماوس (hand2) را که هنگام قرار گرفتن نشانگر روی دکمه استفاده می‌شود، تغییر می‌دهد. مقدار pointername باید یکی از نام‌های تعریف‌شده در فایل سرایند X11/cursorfont.h (بدون پیشوند XC_) باشد. بخش DEFAULTS را ببینید.

*FvwmForm: ButtonInPointer pointername

نشانگر پیش‌فرض ماوس (hand1) را که هنگام فشرده شدن یک دکمه استفاده می‌شود، تغییر می‌دهد. مقدار pointername باید یکی از نام‌های تعریف‌شده در فایل سرایند X11/cursorfont.h (بدون پیشوند XC_) باشد. بخش DEFAULTS را ببینید.

*FvwmForm: InputPointer pointername

نشانگر پیش‌فرض ماوس (xterm) را که هنگام قرار گرفتن نشانگر روی یک فیلد متنی استفاده می‌شود، تغییر می‌دهد. مقدار pointername باید یکی از نام‌های تعریف‌شده در فایل سرایند X11/cursorfont.h (بدون پیشوند XC_) باشد. بخش DEFAULTS را ببینید.

*FvwmForm: ButtonPointerFore|Back color

رنگ‌های پیش‌فرض پیش‌زمینه و پس‌زمینهٔ نشانگر ماوس را که هنگام قرار گرفتن روی دکمه استفاده می‌شوند، تغییر می‌دهد. بخش DEFAULTS را ببینید.

*FvwmForm: ButtonInPointerFore|Back color

رنگ‌های پیش‌فرض پیش‌زمینه و پس‌زمینهٔ نشانگر ماوس را که هنگام فشرده بودن دکمه استفاده می‌شوند، تغییر می‌دهد. بخش DEFAULTS را ببینید.

*FvwmForm: InputPointerFore|Back color

رنگ‌های پیش‌فرض پیش‌زمینه و پس‌زمینهٔ نشانگر ماوس را که هنگام قرار گرفتن روی فیلد متنی استفاده می‌شوند، تغییر می‌دهد. بخش DEFAULTS را ببینید.

*FvwmForm: Timeout tenth_of_seconds command "text"

برنامهٔ FvwmForm را به گونه‌ای تنظیم می‌کند که پس از مدت‌زمان مشخص‌شده بر حسب tenth of seconds (دهم ثانیه) منقضی شود. وقتی زمان‌سنج به صفر برسد، دستور command اجرا می‌شود. فیلد text بسیار شبیه به یک فیلد Text نمایش داده می‌شود، با این تفاوت که عبارت '%%' در سطر به صورت خودکار با مقدار زمان باقی‌ماندهٔ زمان‌سنج جایگزین می‌گردد. هم‌گام با شمارش معکوس زمان‌سنج، این مقدار هر یک‌دهم ثانیه به‌روزرسانی می‌شود. در هر فرم تنها می‌تواند یک فیلد timeout وجود داشته باشد.

تمام «مثال‌های» زیر در هنگام نصب fvwm در پوشهٔ داده‌های مستقل از معماری و فقط‌خواندنی، یعنی [PREFIX/share/fvwm]، نصب می‌شوند.

دستورهای زیر منویی برای فراخوانی این مثال‌ها ایجاد می‌کنند:

DestroyMenu Forms
AddToMenu Forms "&Q. QuitVerify" Module FvwmForm FvwmForm-QuitVerify
AddToMenu Forms "&C. Capture"    Module FvwmForm FvwmForm-Capture
AddToMenu Forms "&R. Rlogin"     Module FvwmForm FvwmForm-Rlogin
AddToMenu Forms "&T. Talk"       Module FvwmForm FvwmForm-Talk

این مثال روش mwm را برای تأیید خروج شبیه‌سازی می‌کند. کلید Return خروج را انجام می‌دهد و Escape خروج را لغو می‌کند. این فرم پس از ۲۰ ثانیه منقضی می‌شود و عملکردی معادل دکمهٔ 'Logout' را انجام می‌دهد.

DestroyModuleConfig  FvwmForm-QuitVerify: *
*FvwmForm-QuitVerify: GrabServer
*FvwmForm-QuitVerify: WarpPointer
*FvwmForm-QuitVerify: Command     Beep
*FvwmForm-QuitVerify: Line        center
*FvwmForm-QuitVerify: Text        "Do you really want to logout?"
*FvwmForm-QuitVerify: Line        expand
*FvwmForm-QuitVerify: Button      quit "Logout" ^M
*FvwmForm-QuitVerify: Command     Quit
*FvwmForm-QuitVerify: Button      restart   "Restart" ^R
*FvwmForm-QuitVerify: Command     Restart
*FvwmForm-QuitVerify: Button      quit "Cancel" ^[
*FvwmForm-QuitVerify: Command     Nop
*FvwmForm-QuitVerify: Timeout     200 Quit "Automatic logout will occur in %% tenth of seconds."

این مثال به کاربر اجازه می‌دهد نام میزبان و یک نام کاربری اختیاری را وارد کند و یک پنجرهٔ xterm را از میزبان راه دور باز می‌کند.

DestroyModuleConfig  FvwmForm-Rlogin: *
*FvwmForm-Rlogin: WarpPointer
*FvwmForm-Rlogin: Line         center
*FvwmForm-Rlogin: Text         "Login to Remote Host"
*FvwmForm-Rlogin: Line         center
*FvwmForm-Rlogin: Text         "Host:"
*FvwmForm-Rlogin: Input        HostName        20      ""
*FvwmForm-Rlogin: Line         center
*FvwmForm-Rlogin: Selection    UserSel single
*FvwmForm-Rlogin: Choice       Default Default on      "same user"
*FvwmForm-Rlogin: Choice       Custom  Custom  off     "user:"
*FvwmForm-Rlogin: Input        UserName        10      ""
*FvwmForm-Rlogin: Line         expand
*FvwmForm-Rlogin: Button       quit    "Login"         ^M
*FvwmForm-Rlogin: Command      Exec exec ssh $(Custom?-l $(UserName)) $(HostName) xterm -T x
term@$(HostName) -display $HOSTDISPLAY &
       # Before saving the data, remove any previously saved data:
       *FvwmForm-Rlogin: Command DestroyModuleConfig FvwmForm-RloginDefault: *
       # The "Login" button causes a login and a saving of the current data:
       *FvwmForm-Rlogin: Command !(                        /bin/echo \
         "# Created by FvwmForm-Rlogin on: `/bin/date`.";  /bin/echo \
         '*FvwmForm-RloginDefault: HostName $(HostName)';  /bin/echo \
         '*FvwmForm-RloginDefault: UserName $(UserName)';  /bin/echo \
         '*FvwmForm-RloginDefault: Default $(Default?on)'; /bin/echo \
         '*FvwmForm-RloginDefault: Custom $(Custom?on)' \
       ) > ${FVWM_USERDIR}/.FvwmForm-Rlogin
       *FvwmForm-Rlogin: Button       restart "Reset"
       *FvwmForm-Rlogin: Button       quit    "Cancel"        ^[
       *FvwmForm-Rlogin: Command      Nop
       # Tell FvwmForm to read vars from the .FvwmForm-RloginDefault file:
       *FvwmForm-Rlogin: UseData .FvwmForm-Rlogin *FvwmForm-RloginDefault

این مثال یک رابط کاربری (front-end) برای xwd، xwud و xpr فراهم می‌کند.

DestroyModuleConfig  FvwmForm-Capture: *
*FvwmForm-Capture: Line       center
*FvwmForm-Capture: Text       "Capture Window"
*FvwmForm-Capture: Line       left
*FvwmForm-Capture: Text       "File: "
*FvwmForm-Capture: Input      file            25      "/tmp/Capture"
*FvwmForm-Capture: Line       left
*FvwmForm-Capture: Text       "Printer: "
*FvwmForm-Capture: Input      printer         20      "$PRINTER"
*FvwmForm-Capture: Line       expand
*FvwmForm-Capture: Selection  PtrType single
*FvwmForm-Capture: Choice     PS      ps      on      "PostScript"
*FvwmForm-Capture: Choice     Ljet    ljet    off     "HP LaserJet"
*FvwmForm-Capture: Line       left
*FvwmForm-Capture: Text       "xwd options:"
*FvwmForm-Capture: Line       expand
*FvwmForm-Capture: Selection  Options multiple
*FvwmForm-Capture: Choice     Brd     -nobdrs off     "No border"
*FvwmForm-Capture: Choice     Frm     -frame  on      "With frame"
*FvwmForm-Capture: Choice     XYZ     -xy     off     "XY format"
*FvwmForm-Capture: Line       expand
*FvwmForm-Capture: Button     continue        "Capture"       ^M
*FvwmForm-Capture: Command    Exec exec xwd -out $(file) $(Options) &
*FvwmForm-Capture: Button     continue        "Preview"
*FvwmForm-Capture: Command    Exec exec xwud -in $(file) &
*FvwmForm-Capture: Button     continue        "Print"
*FvwmForm-Capture: Command    Exec exec xpr -device $(PtrType) $(file) | lpr -P $(printer) &
*FvwmForm-Capture: Button     quit            "Quit"

این مثال جایگزینی برای ماژول FvwmTalk فراهم می‌کند. ۲ فرم وجود دارد: «FvwmForm-Talk.» که دستورها را اجرا می‌کند یا آن‌ها را برای اجرا به fvwm ارسال می‌کند، و «FvwmForm-TalkHelp.» که یک فرم راهنما است.

در فرم راهنما، توجه کنید که چگونه فاصله‌گذاری عمودی خطوط تغییر یافته است. فاصله‌گذاری خطوط معمول FvwmForm فرض می‌کند که متن با دکمه‌ها درآمیخته است؛ فرم‌های راهنما به فاصله‌گذاری متفاوتی نیاز دارند.

# FvwmForm-Talk - Basic replacement for FvwmTalk
DestroyModuleConfig  FvwmForm-Talk: *
*FvwmForm-Talk: WarpPointer
# Layout
*FvwmForm-Talk: Line         center
*FvwmForm-Talk: Text         "Talk to Fvwm"
*FvwmForm-Talk: Line         left
*FvwmForm-Talk: Text         "Command:"
*FvwmForm-Talk: Input        Command 80 ""
*FvwmForm-Talk: Line         left
*FvwmForm-Talk: Text         "Msg:"
*FvwmForm-Talk: Message
*FvwmForm-Talk: Line         center
# Buttons
*FvwmForm-Talk: Button       restart    "Return - Execute"         ^M
*FvwmForm-Talk: Command        $(Command)
*FvwmForm-Talk: Button       continue    "F1 - Help" F1
*FvwmForm-Talk: Command        Module FvwmForm FvwmForm-TalkHelp
*FvwmForm-Talk: Button       restart     "F3 - Reset input" F3
*FvwmForm-Talk: Command        Nop
*FvwmForm-Talk: Button       quit        "F4 - Dismiss"  F4
*FvwmForm-Talk: Command        Nop
# FvwmForm-TalkHelp - Help Text for FvwmForm-Talk
DestroyModuleConfig  FvwmForm-TalkHelp: *
*FvwmForm-TalkHelp: WarpPointer
# Layout
*FvwmForm-TalkHelp: Line    center
*FvwmForm-TalkHelp: Text    "Talk to Fvwm - Help"
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    " "
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: PadVText 0
*FvwmForm-TalkHelp: Text    "Enter commands in the
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    "Commands beginning with
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    "shell as a sub-process of the form."
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    "All other commands are sent to fvwm for execution."
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    ""
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    "Fvwm error messages are shown on the
*FvwmForm-TalkHelp: Line    left
*FvwmForm-TalkHelp: Text    ""
# Buttons
*FvwmForm-TalkHelp: Line    center
*FvwmForm-TalkHelp: Button  quit    "Return - Dismiss"         ^M
*FvwmForm-TalkHelp: Command   Nop

برنامه FvwmForm روشی نسبتاً ساده برای ارائه ورودی است. هیچ سازوکاری برای اعتبارسنجی ورودی وجود ندارد. FvwmForm راهی برای مدیریت لیست‌ها ندارد.

باگ‌ها را به لیست fvwm-workers گزارش دهید.

برنامه FvwmForm اثر اصلی Thomas Zuwei Feng است ( <ztfeng@math.princeton.edu>).

کپی‌رایت فوریه ۱۹۹۵، Thomas Zuwei Feng. هیچ‌گونه تضمین یا گارانتی به هر نحو، صریح یا ضمنی ارائه نمی‌شود. از این برنامه با مسئولیت خود استفاده کنید. بدین‌وسیله مجوز استفاده، تغییر و بازتوزیع این برنامه داده می‌شود، به شرطی که این حق‌کپی‌رایت دست‌نخورده باقی بماند.

در طول پاییز ۱۹۹۸، Dan Espen تمامی محدودیت‌های اندازه فرم را حذف کرد، امکان تغییر نامحدود فونت و رنگ، کنترل فاصله‌گذاری فرم، خواندن فایل پیکربندی، کنترل سراسری ظاهر، اجرای همگام دستورات، نمایش پیام‌های خطا، جایگزینی متغیرها، اشاره‌گرهای قابل‌پیکربندی و کلی خرابکاری دیگر را اضافه نمود. هیچ کپی‌رایت اضافی اعمال نمی‌شود.

2026-06-28