'\" t .\" Title: FvwmButtons .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-06-28 .\" Manual: Fvwm Modules .\" Source: \ \& .\" Language: English .\" .TH "FVWMBUTTONS" "1" "2026-06-28" "\ \&" "Fvwm Modules" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" FvwmButtons \- ماژول جعبه دکمه fvwm .SH "خلاصه دستور (SYNOPSIS)" .sp \fBModule FvwmButtons [\-g geometry] [\-transient | \-transientpanel] [name[configfile]]\fP .sp برنامه \fIFvwmButtons\fP تنها می‌تواند توسط fvwm فراخوانی شود. فراخوانی ماژول \fIFvwmButtons\fP از خط فرمان کار نخواهد کرد. .SH "توضیحات (DESCRIPTION)" .sp ماژول FvwmButtons پنجره‌ای از دکمه‌ها را فراهم می‌کند که بر روی پنجره ریشه (root window) ترمینال X قرار می‌گیرد. کاربر می‌تواند در هر زمانی دکمه‌ها را بفشارد و فراخوانی دستوری مشخص‌شده توسط کاربر را به وسیله مدیر پنجره فعال کند. برنامه FvwmButtons تنها زمانی کار می‌کند که fvwm به عنوان مدیر پنجره استفاده شود. .sp جعبه دکمه می‌تواند از هر پیکربندی یا هندسه‌ای (geometry) برخوردار باشد و می‌تواند آیکون‌های تک‌رنگ یا رنگی برای نمایش کنش‌هایی که فراخوانی می‌شوند داشته باشد. حتی سایر برنامه‌ها نیز می‌توانند توسط نوار دکمه بلعیده شوند (\*(Aqswallowed\*(Aq). .sp پنل‌هایی که با فشردن دکمه باز می‌شوند نیز در دسترس هستند. برای جزئیات به بخش \fICREATING PANELS\fP مراجعه کنید. .SH "گزینه‌ها (OPTIONS)" .sp گزینه \fI\-g\fP هندسه پنجره اصلی را مشخص می‌کند. این گزینه خط فرمان بر هر تنظیم هندسه دیگری در فایل پیکربندی اولویت دارد. .sp گزینه \fI\-transient\fP به FvwmButtons اعلام می‌کند که پس از دریافت اولین کلید یا فشردن دکمه (فشردن دکمه برای باز کردن زیرپنل محاسبه نمی‌شود) یا پس از بسته شدن یا بازتولید (respawn) یک زیرپنل، به کار خود پایان دهد. این ویژگی به‌ویژه برای زیرپنل‌هایی مفید است که می‌خواهید یک دکمه منفرد را انتخاب کنید و زیرپنل به طور خودکار بسته شود. می‌توان از آن برای ایجاد منوهای گرافیکی دوبعدی استفاده کرد. از آنجا که \fI\-transient\fP یک گزینه است و نه یک تنظیم پیکربندی، می‌توانید از همان پیکربندی هم برای نوارهای دکمه گذرا (transient) و هم غیرگذرا استفاده کنید. .sp گزینه \fI\-transientpanel\fP تقریباً همان کار گزینه \fI\-transient\fP را انجام می‌دهد، اما به جای بستن کل نوار دکمه، پنجره صرفاً پنهان می‌شود. این قابلیت زمانی که نوار دکمه به عنوان یک زیرپنل از نوار دکمه دیگری اجرا شده باشد بسیار مفید است، زیرا از نیاز به اجرای مجدد آن در هنگام انتخاب یک مورد جلوگیری می‌کند. .SH "فراخوانی (INVOCATION)" .sp برنامه FvwmButtons توسط fvwm راه‌اندازی می‌شود، بنابراین فراخوانی آن از طریق خط فرمان کار نخواهد کرد. .sp برنامه FvwmButtons می‌تواند با قرار دادن خط \*(AqModule FvwmButtons OptionalName\*(Aq در فایل .fvwm2rc فراخوانی شود. اگر قرار است FvwmButtons در حین مقداردهی اولیه fvwm اجرا شود، این دستور باید در StartFunction قرار گیرد. همچنین می‌توان آن را به یک منو، دکمه موشیواره یا کلید صفحه کلید مقید کرد تا بعداً فراخوانی شود. .sp هنگامی که با آرگومان \fIOptionalName\fP فراخوانی شود، مقدار \fIOptionalName\fP برای یافتن دستورات پیکربندی استفاده می‌شود. برای مثال: .sp .if n .RS 4 .nf .fam C AddToFunc StartFunction Module FvwmButtons MyButtonBox .fam .fi .if n .RE .sp سپس FvwmButtons به جای "*FvwmButtons" پیش‌فرض، فقط از خطوطی استفاده می‌کند که با "*MyButtonBox" آغاز می‌شوند. .SH "گزینه‌های پیکربندی (CONFIGURATION OPTIONS)" .sp دستورات زیر توسط FvwmButtons شناخته می‌شوند: .sp *FvwmButtons: Back color .RS 4 رنگ پس‌زمینه را برای دکمه‌ها مشخص می‌کند. رنگ برجستگی (relief) و سایه از رنگ پس‌زمینه محاسبه می‌شوند. .RE .sp *FvwmButtons: BoxSize algorithm .RS 4 این گزینه مشخص می‌کند که FvwmButtons تا چه حد گزینه‌های Rows و Columns را جدی در نظر بگیرد (به زیر مراجعه کنید). مقدار آن می‌تواند یکی از \fIdumb\fP، \fIfixed\fP یا \fIsmart\fP باشد. .sp اگر از \fIfixed\fP استفاده شود و هر دو گزینه Rows و Columns مشخص و غیرصفر باشند، FvwmButtons دقیقاً از تعداد سطرها و ستون‌های مشخص‌شده استفاده می‌کند. اگر جعبه برای جای دادن همه دکمه‌ها بسیار کوچک باشد، ماژول با شکست مواجه خواهد شد. .sp اگر از \fIsmart\fP استفاده شود، FvwmButtons جعبه را بزرگ‌تر می‌کند تا همه دکمه‌ها امکان جا شدن داشته باشند. تعداد ستون‌ها حداقل به اندازه عرض عریض‌ترین دکمه افزایش می‌یابد و سطرهای جدید تا زمانی که همه دکمه‌ها جای گیرند اضافه می‌شوند. برای داشتن بهترین تحمل در برابر خطاهای پیکربندی از گزینه smart استفاده کنید. .sp مقدار \fIdumb\fP نه \fIfixed\fP است و نه \fIsmart\fP. این حالت پیش‌فرض است. .RE .sp *FvwmButtons: Colorset colorset .RS 4 به ماژول اعلام می‌کند که از مجموعه رنگ \fIcolorset\fP برای پس‌زمینه پنجره استفاده کند. برای جزئیات در مورد مجموعه رنگ‌ها به صفحه راهنمای fvwm مراجعه کنید. .RE .sp *FvwmButtons: ActiveColorset colorset .RS 4 به ماژول اعلام می‌کند که در هنگام قرار گرفتن موشیواره روی دکمه، از مجموعه رنگ \fIcolorset\fP برای رنگ/تصویر پس‌زمینه و/یا رنگ عنوان دکمه استفاده کند. .RE .sp *FvwmButtons: PressColorset colorset .RS 4 به ماژول اعلام می‌کند که در هنگام فشرده شدن دکمه، از مجموعه رنگ \fIcolorset\fP برای رنگ/تصویر پس‌زمینه و/یا رنگ عنوان دکمه استفاده کند. .RE .sp *FvwmButtons: Columns columns .RS 4 تعداد ستون‌های دکمه‌ها را که باید ایجاد شوند مشخص می‌کند. در صورت عدم تعیین، تعداد ستون‌ها برابر با تعداد دکمه‌های درخواستی تقسیم بر تعداد سطرها تنظیم می‌شود. اگر هم سطرها و هم ستون‌ها مشخص شده باشند اما تعداد دکمه‌ها بیشتر از گنجایش سطرها و ستون‌ها باشد، مشخصات ستون‌ها نادیده گرفته می‌شود مگر اینکه گزینه \fIBoxSize\fP روی \fIfixed\fP تنظیم شده باشد. .RE .sp *FvwmButtons: File filename .RS 4 مشخص می‌کند که پیکربندی این دکمه در فایل \fIfilename\fP قرار دارد. \fIFilename\fP می‌تواند یک مسیر کامل باشد، یا فرض می‌شود در دایرکتوری راه‌اندازی fvwm قرار دارد. فایل پیکربندی قالبی مشابه فایل پیکربندی fvwm دارد، اما هر خط طوری خوانده می‌شود که گویی پیشوند "*FvwmButtons" دارد. کامنت‌ها با شروع خط با "#" مشخص می‌شوند. ادامه‌دار بودن خط با قرار دادن یک "\(rs" در پایان خط انجام می‌گیرد. .RE .sp *FvwmButtons: Font font .RS 4 فونت مورد استفاده برای برچسب‌گذاری دکمه‌ها یا \fINone\fP را مشخص می‌کند. .RE .sp *FvwmButtons: Fore color .RS 4 رنگ مورد استفاده برای متن برچسب دکمه و آیکون‌های تک‌رنگ را مشخص می‌کند. .RE .sp *FvwmButtons: Frame width .RS 4 عرض برجستگی دور هر دکمه را مشخص می‌کند. اگر این مقدار یک عدد منفی باشد، برجستگی معکوس می‌شود. این امر باعث می‌شود دکمه در حالت عادی فرورفته و در هنگام فعال شدن برجسته باشد. .RE .sp *FvwmButtons: Geometry geometry .RS 4 مکان و اندازه پنجره FvwmButtons را مشخص می‌کند. هندسه، یک مشخصه استاندارد هندسه پنجره X11 است. .RE .sp *FvwmButtons: ButtonGeometry geometry .RS 4 این گزینه مانند گزینه \fIGeometry\fP کار می‌کند، با این تفاوت که اندازه داده‌شده، اندازه یک دکمه منفرد است. اندازه کل پنجره FvwmButtons از ضرب ابعاد دکمه در تعداد سطرها و ستون‌ها محاسبه می‌شود. .RE .sp *FvwmButtons: Padding width height .RS 4 این گزینه پدینگ افقی پیش‌فرض را \fIwidth\fP پیکسل و پدینگ عمودی را \fIheight\fP پیکسل تعیین می‌کند. مقدار فضای خالی بین برجستگی دکمه و محتویات آن به طور معمول ۲ پیکسل در طرفین و ۴ پیکسل در بالا و پایین است، به استثنای پنجره‌ها و محفظه‌های بلعیده‌شده که اصلاً پدینگ ندارند، مگر اینکه از این گزینه استفاده شود. .RE .sp *FvwmButtons: Pixmap pixmapfile .RS 4 یک pixmap پس‌زمینه را برای استفاده مشخص می‌کند. برای یک پس‌زمینه شفاف، مقدار "none" (بدون نقل‌قول جفتی) را مشخص کنید. .RE .sp *FvwmButtons: Rows rows .RS 4 تعداد سطرهای دکمه‌ها را که باید ایجاد شوند مشخص می‌کند. مقدار پیش‌فرض ۲ سطر است. .RE .sp *FvwmButtons: WindowName name .RS 4 اگر FvwmButtons دارای نوار عنوانی باشد که با Title style فعال شده است (برای مثال در برخی زیرپنل‌های گذرا)، این گزینه می‌تواند نام پنجره (Window name) و نام آیکون (Icon name) آن را به رشته ارائه‌شده با این پارامتر تنظیم کند. در صورت حذف، پیش‌فرض برای نام پنجره و آیکون همان نام منبع پنجره است که خودش صرفاً "FvwmButtons" است یا از نام مستعاری که پیکربندی FvwmButtons به آن ارجاع دارد مشتق می‌شود. این قابلیت امکان تنظیم عنوانی با فاصله و نویسه‌های غیر ASCII بیشتری را فراهم می‌کند که در غیر این صورت به عنوان نام مستعار برای نمونه ماژول FvwmButtons مجاز نیست. .RE .sp *FvwmButtons: (options) [title icon command] .RS 4 محتویات یک دکمه را در جعبه دکمه مشخص می‌کند. گزینه‌های (\fIoptions\fP) زیر که با ویرگول یا فضای خالی جدا می‌شوند را می‌توان به یک دکمه نسبت داد: .sp \fIgeometry\fP .RS 4 اندازه و موقعیت دکمه را درون پنجره یا محفظه FvwmButtons مشخص می‌کند. هندسه، یک مشخصه استاندارد هندسه پنجره X11 است. دکمه به اندازه \fIwidth\fP برابر عرض معمولی دکمه و \fIheight\fP برابر ارتفاع معمولی دکمه خواهد بود. در صورت تعیین مقادیری برای \fIx\fP و \fIy\fP، دکمه به میزان x (y) واحد دکمه از چپ (بالا) محفظه در صورت مثبت بودن x (y) و به میزان x (y) واحد از راست (پایین) در صورت منفی بودن x (y) قرار می‌گیرد. دکمه‌های دارای آرگومان‌های موقعیت (x و y) قبل از دکمه‌های فاقد آن‌ها قرار می‌گیرند. اگر به این دلیل دو یا چند دکمه مجبور به هم‌پوشانی شوند، FvwmButtons با یک پیام خطا خارج می‌شود. .RE .sp Action [(\fIoptions\fP)] \fIcommand\fP .RS 4 دستور fvwm را مشخص می‌کند که با فعال شدن دکمه از طریق فشردن return یا دکمه موشیواره اجرا شود. اگر \fIcommand\fP حاوی ویرگول یا پرانتز بسته باشد، باید درون نقل‌قول قرار گیرد. .sp گزینه‌های فعلی \fIAction\fP عبارتند از: Mouse \fIn\fP \- این کنش تنها برای دکمه \fIn\fP موشیواره اجرا می‌شود. علاوه بر کنش عمومی، می‌توان یک کنش را برای هر دکمه موشیواره تعریف کرد. .sp در بخش \fIcommand\fP، می‌توانید از چندین متغیر از پیش تعریف‌شده استفاده کنید: \fI$left\fP، \fI$right\fP، \fI$top\fP و \fI$bottom\fP با مختصات چپ، راست، بالا و پایین دکمه فشرده‌شده جایگزین می‌شوند. متغیرهای \fI$\-left\fP، \fI$\-right\fP، \fI$\-top\fP و \fI$\-bottom\fP نیز به همین ترتیب جایگزین می‌شوند، اما مختصات در عوض از لبه پایین یا راست صفحه محاسبه می‌شوند (برای دکمه‌ای که ۵ پیکسل از لبه راست صفحه فاصله دارد، مقدار $\-right برابر ۵ خواهد بود). متغیرهای \fI$width\fP و \fI$height\fP با عرض یا ارتفاع دکمه جایگزین می‌شوند. متغیرهای \fI$fg\fP و \fI$bg\fP با نام رنگ پیش‌زمینه یا پس‌زمینه تنظیم‌شده با گزینه \fIBack\fP یا \fIFore\fP جایگزین می‌شوند (به زیر مراجعه کنید). تمام این جایگزینی‌ها صرف‌نظر از هرگونه نویسه نقل‌قول انجام می‌شوند. برای درج یک \*(Aq$\*(Aq واقعی از رشته \*(Aq$$\*(Aq استفاده کنید. .sp مثال: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Title xload, Action (Mouse 1) \(rs `Exec exec xload \-fg $fg \-bg $bg \-geometry \-3000\-3000`) .fam .fi .if n .RE .sp توجه: در نسخه‌های fvwm قبل از 2.5.0، نمی‌شد کنش‌ها را به دکمه‌ای اختصاص داد که پنجره برنامه‌ای را می‌بلعید (گزینه \fISwallow\fP را ببینید). چنین کنش‌هایی تنها زمانی کار می‌کردند که روی حاشیه دور دکمه کلیک می‌شد. این قابلیت اکنون فراهم است، اما برای بازگرداندن رفتار قدیمی، می‌توان از \fIActionIgnoresClientWindow\fP روی دکمه استفاده کرد: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Action beep, ActionIgnoresClientWindow, \(rs Swallow xeyes "Exec exec xeyes") .fam .fi .if n .RE .sp در این مثال، کنش تنها زمانی اجرا می‌شود که روی حاشیه دکمه یا بخش شفاف پنجره xeyes کلیک کنید، نه روی خود پنجره xeyes. .RE .sp ActionIgnoresClientWindow .RS 4 به یادداشت موجود در توضیحات \fIAction\fP در بالا مراجعه کنید. .RE .sp ActionOnPress .RS 4 به طور معمول کنش در هنگام رها کردن دکمه اجرا می‌شود، به جز کنش \fBPopup\fP. این گزینه این رفتار را تغییر می‌دهد به طوری که کنش با فشردن دکمه اجرا می‌شود. این می‌تواند برای مثال در مورد \fBMenu\fP یا \fBSendToModule\fP که پنجره‌های پاپ‌آپ ایجاد می‌کنند مناسب باشد، یا زمانی که مقدار \fBFrame\fP برابر 0 باشد و دکمه در غیر این صورت بی‌حرکت و غیرپاسخگو به نظر برسد. .RE .sp Back color .RS 4 رنگ پس‌زمینه مورد استفاده برای رسم این جعبه را مشخص می‌کند. رنگ برجستگی و رنگ سایه از این مقدار محاسبه می‌شوند. .RE .sp Center .RS 4 محتویات دکمه در مرکز دکمه تراز می‌شوند. این حالت پیش‌فرض است اما می‌تواند با \fILeft\fP یا \fIRight\fP تغییر کند. .RE .sp Top .RS 4 محتویات دکمه به صورت عمودی در بالای دکمه تراز می‌شوند. حالت پیش‌فرض، تراز کردن عمودی در مرکز است. .RE .sp Colorset colorset .RS 4 مجموعه رنگ داده‌شده می‌تواند برای یک محفظه، یک برنامه بلعیده‌شده و یک دکمه ساده اعمال شود. برای اعمال آن به یک دکمه یا محفظه، کافی است این گزینه را در خطی همراه با توصیف دکمه یا محفظه قرار دهید. رسم پس‌زمینه برای دکمه‌ها و محفظه‌های مجزا با مجموعه‌های رنگ نیازمند ارتباط زیادی با سرور X است. بنابراین اگر از سرعت ترسیم ده‌ها دکمه با پس‌زمینه مجموعه رنگ راضی نیستید، در اینجا از مجموعه‌های رنگ استفاده نکنید. تنظیم مجموعه‌های رنگ به عنوان پس‌زمینه برنامه‌های بلعیده‌شده چنین محدودیتی ندارد اما کاملاً به برنامه بلعیده‌شده بستگی دارد. ممکن است طبق میل شما کار کند، اما از آنجا که شامل دستکاری پنجره‌های برنامه‌های دیگر است، هیچ تضمینی در کار نیست. من سه برنامه را آزمایش کرده‌ام: xosview با پس‌زمینه مجموعه رنگ به خوبی کار می‌کند، xload تنها با یک پس‌زمینه یکدست یا VGradient کار می‌کند و یک xclock عقربه‌ای پس از حرکت عقربه‌هایش ردی با رنگ پس‌زمینه باقی می‌گذارد. .sp اگر پنجره بلعیده‌شده یک ماژول fvwm باشد (گزینه (No)FvwmModule در دستور Swallow را ببینید)، آنگاه \fIcolorset\fP به ماژول بلعیده‌شده اعمال نمی‌شود. شما باید از \fIcolorset\fP در پیکربندی ماژول استفاده کنید. اگر ماژول بلعیده‌شده دارای یک پس‌زمینه شفاف باشد، پس‌زمینه FvwmButtons (و نه مجموعه رنگ دکمه) از میان شفافیت پس‌زمینه ماژول بلعیده‌شده دیده می‌شود. برای جزئیات در مورد مجموعه‌های رنگ به صفحه راهنمای fvwm مراجعه کنید. .RE .sp ActiveColorset colorset .RS 4 استفاده از مجموعه رنگ \fIcolorset\fP برای رنگ/تصویر پس‌زمینه و/یا رنگ عنوان دکمه در هنگامی که موشیواره روی آن قرار دارد. .RE .sp PressColorset colorset .RS 4 استفاده از مجموعه رنگ \fIcolorset\fP برای رنگ/تصویر پس‌زمینه و/یا رنگ عنوان دکمه در هنگام فشرده شدن آن. .RE .sp Container [(options)] .RS 4 مشخص می‌کند که این دکمه شامل یک جعبه دکمه مینیاتوری خواهد بود که معادل بلعیدن یک ماژول FvwmButtons دیگر است. گزینه‌ها همان‌هایی هستند که می‌توان برای یک دکمه منفرد داد، اما روی تمام دکمه‌های گنجانده‌شده تأثیر می‌گذارند. گزینه‌های موجود برای این کاربرد عبارتند از \fIBack، Font، Fore، Frame\fP و \fIPadding\fP. پرچم‌های گزینه‌های Title و Swallow را می‌توان با \fITitle(flags)\fP و \fISwallow(flags)\fP تعیین کرد. همچنین باید یکی از مقادیر "Columns \fIwidth\fP" یا "Rows \fIheight\fP" را مشخص کنید، در غیر این صورت "Rows 2" فرض خواهد شد. برای مشاهده یک مثال، به بخش \fISample configuration\fP مراجعه کنید. .sp خود دکمه محفظه (مستقل از محتویات آن) می‌تواند گزینه‌های قالب‌بندی مانند \fIFrame\fP و \fIPadding\fP را بپذیرد، و دستورات می‌توانند به آن متصل شوند. این بدان معنی است که می‌توانید یک برجستگی حساس به کلیک در اطراف یک محفظه بسازید، مانند: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (2x2, Frame 5, Padding 2 2, Action Beep,\(rs Container(Frame 1)) .fam .fi .if n .RE .sp به طور معمول شما می‌خواهید حداقل یک تنظیم اندازه \fIwidth\fPx_height_ به محفظه بدهید. .RE .sp End .RS 4 مشخص می‌کند که دکمه دیگری برای محفظه فعلی تعریف نشده است و دکمه‌های بعدی در محفظه والد قرار خواهند گرفت. این گزینه باید در یک خط مستقل قرار گیرد، یعنی: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (End) .fam .fi .if n .RE .RE .sp Font fontname .RS 4 مشخص می‌کند که فونت \fIfontname\fP برای برچسب‌گذاری این دکمه استفاده شود. .RE .sp Fore color .RS 4 رنگ پیش‌زمینه عنوان و آیکون‌های تک‌رنگ در این دکمه را مشخص می‌کند. .RE .sp Frame width .RS 4 برجستگی دکمه به عرض \fIwidth\fP پیکسل خواهد بود. اگر \fIwidth\fP به صورت یک عدد منفی داده شود، برجستگی معکوس می‌شود. این امر باعث می‌شود دکمه به طور معمول فرورفته و در هنگام فعال شدن برجسته باشد. .RE .sp Icon filename .RS 4 نام فایل تصویری شامل آیکونی که روی دکمه نمایش داده می‌شود. برنامه FvwmButtons مسیر مشخص‌شده در مورد پیکربندی ImagePath در fvwm را برای یافتن فایل آیکون جستجو می‌کند. .RE .sp ActiveIcon filename .RS 4 نام فایل تصویری شامل یک آیکون جایگزین برای نمایش روی دکمه هنگامی که موشیواره روی دکمه قرار دارد. اگر هیچ ActiveIcon تعیین نشده باشد، تصویر مشخص‌شده توسط Icon نمایش داده می‌شود (در صورت وجود). .RE .sp PressIcon filename .RS 4 نام فایل تصویری شامل یک آیکون جایگزین برای نمایش روی دکمه هنگام فشرده شدن دکمه. اگر هیچ PressIcon تعیین نشده باشد، تصویر مشخص‌شده توسط Icon نمایش داده می‌شود (در صورت وجود). .RE .sp Id id .RS 4 شناسه‌ای که برای تشخیص این دکمه استفاده می‌شود. اولین نویسه شناسه باید الفبایی باشد. همچنین به بخش «DYNAMICAL ACTIONS» مراجعه کنید. .RE .sp Left .RS 4 محتویات دکمه در سمت چپ تراز می‌شوند. حالت پیش‌فرض تراز کردن محتویات در مرکز دکمه است. .RE .sp NoSize .RS 4 این گزینه مشخص می‌کند که این دکمه در محاسبات اولیه اندازه دکمه‌ها اصلاً در نظر گرفته نشود. برای دکمه‌های خاصی که چند پیکسل بیش از حد بزرگ می‌شوند تا در یک ردیف جا شوند و بنابراین کل جعبه دکمه شما را به هم می‌ریزند، مفید است. مقدار "NoSize" معادل "Size 0 0" است. .RE .sp Padding width height .RS 4 مقدار فضای خالی بین برجستگی دکمه و محتویات آن به طور معمول ۲ پیکسل در طرفین و ۴ پیکسل در بالا و پایین است، به استثنای پنجره‌ها و محفظه‌های بلعیده‌شده که به طور پیش‌فرض اصلاً پدینگ ندارند. این گزینه پدینگ افقی را به \fIwidth\fP و پدینگ عمودی را به \fIheight\fP تنظیم می‌کند. .RE .sp Panel [ (options) ] hangon command .RS 4 پنل‌ها را می‌توان دقیقاً مانند پنجره‌هایی که توسط دکمه‌ها با دستور \fISwallow\fP در زیر بلعیده می‌شوند بلعید، اما آنها درون دکمه نمایش داده نمی‌شوند. در عوض تا زمانی که کاربر دکمه پنل را فشار دهد پنهان می‌مانند. سپس پنل (پنجره برنامه بلعیده‌شده) با یک پویانمایی لغزشی باز می‌شود. گزینه‌ها (\fIoptions\fP) می‌توانند هر یک از پرچم‌های (\fIflags\fP) شرح‌داده‌شده برای دستور Swallow باشند. علاوه بر این می‌توان از یک جهت \*(Aqleft\*(Aq، \*(Aqright\*(Aq، \*(Aqup\*(Aq یا \*(Aqdown\*(Aq برای تعیین جهت لغزش استفاده کرد. .sp گزینه \fIsteps animation\-steps\fP تعداد مراحل پویانمایی را تعیین می‌کند. .sp گزینه \fIdelay ms\fP تأخیر بین مراحل پویانمایی را به میلی‌ثانیه مشخص می‌کند. از صفر برای بدون تأخیر استفاده کنید. حداکثر مقدار تأخیر ۱۰ ثانیه (10000) است. استفاده از گزینه تأخیر هیچ فایده‌ای ندارد مگر اینکه از گزینه smooth نیز استفاده کنید. .sp گزینه \fIsmooth\fP باعث می‌شود پنل بین مراحل پویانمایی دوباره ترسیم شود. پویانمایی لغزشی به این ترتیب ممکن است روان‌تر باشد؛ این امر به برنامه و سرعت نمایشگر بستگی دارد. برنامه ممکن است به جای بیرون لغزیدن، در حال بزرگ شدن به نظر برسد. پویانمایی ممکن است کندتر باشد. .sp گزینه \fIHints\fP باعث می‌شود FvwmButtons از راهنماهای اندازه برنامه (size hints) برای محاسبه اندازه مراحل پویانمایی استفاده کند. گزینه \fIHints\fP حالت پیش‌فرض است. اگر تعداد مراحل آن چیزی نیست که می‌خواهید، از \fINoHints\fP استفاده کنید. .sp گزینه \fInoborder\fP به FvwmButtons می‌گوید هنگام محاسبه موقعیت‌ها برای پویانمایی، حاشیه‌های پنجره را نادیده بگیرد (معادل تنظیم noplr و noptb در گزینه position). .sp با تنظیم گزینه \fIindicator\fP، برنامه FvwmButtons یک مثلث کوچک در دکمه‌ای که پنل را باز خواهد کرد ترسیم می‌کند. جهت مثلث به سمتی است که پنل باز می‌شود. کلیدواژه \fIindicator\fP می‌تواند با یک عدد صحیح مثبت دنبال شود که حداکثر عرض و ارتفاع نشانگر را مشخص می‌کند. بدون این اندازه، FvwmButtons نشانگر را هم‌اندازه دکمه می‌کند. احتمالاً مایل خواهید بود از گزینه \fIPadding\fP برای باقی گذاشتن چند پیکسل فاصله بین نشانگر و کادر دکمه استفاده کنید. گزینه دومی نیز می‌تواند برای indicator مشخص شود که ظاهر مثلث را تعیین می‌کند. اگر این کلیدواژه \fIin\fP باشد، مثلث به صورت فرورفته ظاهر می‌شود، در حالی که \fIout\fP باعث می‌شود مثلث به صورت برآمده (سه‌بعدی برجسته) به نظر برسد. اگر این کلیدواژه حذف شود، پیش‌فرض \fIout\fP یا برآمده خواهد بود. .sp گزینه \fIposition\fP امکان تعیین موقعیت پنل را فراهم می‌کند. نحو آن به این صورت است: .sp .if n .RS 4 .nf .fam C position [context\-window] [pos] [x y] [border\-opts] .fam .fi .if n .RE .sp آرگومان \fIcontext\-window\fP می‌تواند یکی از موارد زیر باشد: Button، Module یا Root. پنجره زمینه (\fIcontext\-window\fP) پنجره‌ای است که جابه‌جایی درصدی پنل از آن محاسبه می‌شود. مقدار Button دکمه پنل را مشخص می‌کند، Module خود FvwmButtons را مشخص می‌کند، و Root یک صفحه مجازی را مشخص می‌کند. پنجره زمینه همراه با جهت لغزش، یک پاره‌خط را تعریف می‌کنند که یکی از حاشیه‌های پنجره زمینه است: حاشیه بالا/پایین/چپ/راست برای لغزش به بالا/پایین/چپ/راست. .sp آرگومان \fIpos\fP می‌تواند یکی از موارد زیر باشد: center، left یا right (برای لغزش به بالا یا پایین) یا top یا bottom (برای لغزش به چپ یا راست). این آرگومان موقعیت عمودی (لغزش به بالا و پایین) یا افقی (لغزش به چپ و راست) پنل را روی پاره‌خط مشخص می‌کند. برای مثال، برای یک لغزش به بالا اگر از pos با مقدار left استفاده کنید، حاشیه‌های چپ پنل و پنجره زمینه هم‌تراز خواهند شد. .sp مقادیر جابه‌جایی \fIx\fP و \fIy\fP مشخص می‌کنند که پنل چه اندازه از موقعیت پیش‌فرض خود جابه‌جا شود. به طور پیش‌فرض، مقدار عددی داده‌شده به عنوان درصدی از عرض (ارتفاع) پنجره زمینه تفسیر می‌شود. حرف پایانی "p" این تفسیر را به "پیکسل" تغییر می‌دهد. تمام محاسبات جابه‌جایی نسبت به مکان دکمه‌ها سنجیده می‌شوند، حتی در صورت استفاده از زمینه root. .sp گزینه‌های \fIborder\-opts\fP عبارتند از: mlr، mtb، noplr و noptb. آنها مشخص می‌کنند که عرض کدام حاشیه‌ها محاسبه شود. به طور پیش‌فرض، حاشیه‌های FvwmButtons در نظر گرفته نمی‌شوند. گزینه mlr این پیش‌فرض را برای حاشیه چپ و راست معکوس می‌کند و mtb این پیش‌فرض را برای حاشیه بالا و پایین معکوس می‌کند. برعکس، حاشیه‌های Panel به طور پیش‌فرض در نظر گرفته می‌شوند. گزینه noplr این پیش‌فرض را برای حاشیه چپ و راست معکوس می‌کند و noptb این پیش‌فرض را برای حاشیه بالا و پایین معکوس می‌کند. .sp تنظیمات پیش‌فرض عبارتند از لغزش به بالا با تأخیر پنج میلی‌ثانیه و دوازده مرحله پویانمایی. برای نمایش پنل بدون هیچ‌گونه پویانمایی، تعداد مراحل را روی صفر تنظیم کنید. موقعیت پیش‌فرض \*(AqButton center\*(Aq است. .sp لطفاً برای اطلاعات بیشتر درباره پنل‌ها به بخش \fICREATING PANELS\fP مراجعه کنید. .sp مثال: .sp .if n .RS 4 .nf .fam C # To include the panel in a button *FvwmButtons: (Panel(down, delay 0, steps 16) \(rs SubPanel "Module FvwmButtons SubPanel") # To define the panel as an instance of # FvwmButtons with a different name: *SubPanel: (Icon my_lock.xpm, Action Exec xlock) *SubPanel: (Icon my_move.xpm, Action Move) ... .fam .fi .if n .RE .RE .sp Right .RS 4 محتویات دکمه در سمت راست تراز می‌شوند. حالت پیش‌فرض تراز کردن محتویات در مرکز دکمه است. .RE .sp Size width height .RS 4 مشخص می‌کند که محتویات این دکمه بدون توجه به اندازه‌ای که FvwmButtons از روی آیکون و عنوان محاسبه می‌کند، نیازمند \fIwidth\fP در \fIheight\fP پیکسل است. یک نوار دکمه که فقط پنجره‌های بلعیده‌شده دارد، بدون تعیین این گزینه چندان بزرگ نخواهد شد، زیرا FvwmButtons اندازه‌ها را برای دکمه‌های بلعنده در نظر نمی‌گیرد. توجه داشته باشید که این گزینه حداقل فضای تضمین‌شده را ارائه می‌دهد؛ دکمه‌های دیگر ممکن است جعبه دکمه را وادار به استفاده از اندازه‌های بزرگ‌تری کنند. .RE .sp Swallow [(flags)] hangon command .RS 4 باعث می‌شود FvwmButtons دستور \fIcommand\fP را اجرا کند، و هنگامی که پنجره‌ای با نام، کلاس یا منبع منطبق بر \fIhangon\fP ظاهر شد، شکار شده و درون این دکمه بلعیده شود. رشته \fIhangon\fP می‌تواند شامل نویسه‌های عام (\*(Aq*\*(Aq) باشد که با هر زیررشته‌ای مطابقت دارند. Swallow متغیرهای \fI$fg\fP و \fI$bg\fP را همان‌طور که در بالا برای گزینه \fIAction\fP شرح داده شد جایگزین می‌کند (اما اگر از گزینه‌های UseOld و NoClose استفاده کنید، با راه‌اندازی مجدد FvwmButtons برنامه مجدداً اجرا نمی‌شود و بنابراین در صورت تغییر رنگ‌ها، رنگ‌های جدید را دریافت نمی‌کند). یک مثال: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Swallow XClock \*(AqExec xclock \-geometry \-3000\-3000 &\*(Aq) .fam .fi .if n .RE .sp نخستین پنجره‌ای را که نام، کلاس یا منبع آن "XClock" باشد برداشته و در دکمه نمایش می‌دهد. اگر هیچ پنجره منطبقی یافت نشود، دستور "Exec" یکی ایجاد می‌کند. آرگومان "\-geometry \-3000\-3000" به این دلیل به کار رفته که پنجره ابتدا خارج از دید ترسیم شود تا بعد درون FvwmButtons بلعیده شود. .sp ماژول‌ها را می‌توان با مشخص کردن خود ماژول به جای \*(AqExec whatever\*(Aq بلعید، مانند: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Swallow "FvwmPager" "FvwmPager 0 0") .fam .fi .if n .RE .sp پرچم‌هایی که می‌توان به swallow داد عبارتند از: .sp NoClose / Close \- مشخص می‌کند که آیا برنامه بلعیده‌شده در این دکمه در هنگام خروج بدون خطای FvwmButtons از حالت بلعیده خارج شود یا بسته شود. گزینه "NoClose" را می‌توان با "UseOld" ترکیب کرد تا پنجره‌ها پس از راه‌اندازی مجدد مدیر پنجره پابرجا بمانند. تنظیم پیش‌فرض "Close" است. .sp NoHints / Hints \- مشخص می‌کند که آیا راهنماها (hints) از برنامه بلعیده‌شده در این دکمه نادیده گرفته شوند یا خیر، که برای مجبور کردن یک پنجره به تغییر اندازه جهت جا شدن در دکمه مفید است. مقدار پیش‌فرض "Hints" است. .sp NoKill / Kill \- مشخص می‌کند که آیا برنامه بلعیده‌شده با بستن اجباری (kill) پایان یابد یا با ارسال یک پیام به آن. این کار می‌تواند برای پایان دادن به برنامه‌هایی که پروتکل مدیر پنجره را نمی‌پذیرند مفید باشد. مقدار پیش‌فرض "NoKill" است. در صورت مشخص شدن "NoClose" این گزینه اثری ندارد. .sp NoRespawn / Respawn / SwallowNew \- مشخص می‌کند که آیا برنامه بلعیده‌شده در صورت بسته شدن ناگهانی، مجدداً اجرا (respawn) شود یا خیر. اگر "Respawn" مشخص شود، برنامه با استفاده از \fIcommand\fP اولیه دوباره راه‌اندازی می‌شود. با احتیاط از این گزینه استفاده کنید، چرا که ممکن است برنامه دلیل موجهی برای پایان یافتن داشته باشد. اگر "SwallowNew" داده شود، برنامه مجدداً اجرا نمی‌شود، اما اگر پنجره جدیدی با نام مشخص‌شده ظاهر شود، بلعیده خواهد شد. .sp NoOld / UseOld \- مشخص می‌کند که آیا دکمه پیش از آنکه خودش پنجره‌ای را با \fIcommand\fP ایجاد کند، برای بلعیدن یک پنجره موجود مطابق با نام \fIhangon\fP تلاش خواهد کرد یا خیر. رشته \fIhangon\fP می‌تواند حاوی نویسه‌های عام (\*(Aq*\*(Aq) باشد که با هر زیررشته‌ای مطابقت دارند. مقدار پیش‌فرض "NoOld" است. "UseOld" را می‌توان با "NoKill" ترکیب کرد تا پنجره‌ها پس از راه‌اندازی مجدد مدیر پنجره پابرجا بمانند. اگر می‌خواهید FvwmButtons یک پنجره قدیمی را ببلعد و در صورت عدم موفقیت خودش برنامه‌ای را اجرا نکند، مقدار \fIcommand\fP را برابر "Nop" قرار دهید: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Swallow (UseOld) "Console" Nop) .fam .fi .if n .RE .sp اگر می‌خواهید خودتان بتوانید آن را اجرا کنید، آن را با یک کنش ترکیب نمایید: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Swallow (UseOld) "Console" Nop, \(rs Action `Exec "Console" console &`) .fam .fi .if n .RE .sp NoTitle / UseTitle \- مشخص می‌کند که آیا عنوان دکمه از عنوان پنجره بلعیده‌شده گرفته شود یا خیر. اگر "UseTitle" داده شود، عنوان روی دکمه به صورت پویا تغییر می‌کند تا نام پنجره را بازتاب دهد. مقدار پیش‌فرض "NoTitle" است. .sp NoFvwmModule / FvwmModule \- به طور پیش‌فرض، FvwmButtons پنجره بلعیده‌شده را در صورتی که ۴ حرف اول \fIcommand\fP برابر "Fvwm" یا ۶ حرف اول \fIcommand\fP برابر "Module" باشد به عنوان پنجره ماژول fvwm در نظر می‌گیرد. NoFvwmModule و FvwmModule این منطق را نادیده می‌گیرند و لغو می‌کنند. .RE .sp Title [(options)] name .RS 4 عنوانی را که باید روی دکمه نوشته شود مشخص می‌کند. با قرار دادن عنوان در نقل‌قول می‌توان فاصله‌های خالی را در آن گنجاند. اگر یک عنوان در هر زمانی برای دکمه‌هایش بیش از حد طولانی باشد، نویسه‌ها یکی‌یکی حذف می‌شوند تا جا شود. اگر \fIjustify\fP برابر "Right" باشد، ابتدای متن حذف می‌شود، در غیر این صورت انتهای آن بریده می‌شود. این گزینه‌ها (\fIoptions\fP) را می‌توان به Title داد: .sp Center \- عنوان به صورت افقی در مرکز قرار می‌گیرد. این حالت پیش‌فرض است. .sp Left \- عنوان در سمت چپ تراز می‌شود. .sp Right \- عنوان در سمت راست تراز می‌شود. .sp Side \- باعث می‌شود عنوان به جای قرار گرفتن در زیر (که حالت پیش‌فرض است)، در سمت راست هر آیکون یا پنجره بلعیده‌شده ظاهر شود. اگر از آیکون‌های کوچک استفاده می‌کنید و این مورد را با گزینه "Left" یا "Right" ترکیب نمایید، می‌توانید ظاهری شبیه به منوهای fvwm به دست آورید. .RE .sp ActiveTitle name .RS 4 عنوانی را که باید هنگام قرار گرفتن موشیواره روی دکمه، روی آن نوشته شود مشخص می‌کند. اگر ActiveTitle تعیین نشده باشد، متن مشخص‌شده با Title نمایش داده می‌شود (در صورت وجود). .RE .sp PressTitle name .RS 4 عنوانی را که باید هنگام فشرده شدن دکمه روی آن نوشته شود مشخص می‌کند. اگر PressTitle تعیین نشده باشد، متن مشخص‌شده با Title نمایش داده می‌شود (در صورت وجود). .RE .sp فیلدهای قدیمی (Legacy fields) [title icon command] .RS 4 این فیلدها برای سازگاری با نسخه‌های پیشین FvwmButtons حفظ شده‌اند و استفاده از آنها توصیه نمی‌شود. فیلد \fItitle\fP مشابه گزینه Title \fIname\fP است. اگر فیلد عنوان "\-" باشد، هیچ عنوانی نمایش داده نمی‌شود. فیلد \fIicon\fP مشابه گزینه Icon \fIfilename\fP است. اگر فیلد آیکون "\-" باشد هیچ آیکونی نمایش داده نمی‌شود. فیلد \fIcommand\fP مشابه گزینه Action \fIcommand\fP یا در حالت دیگر Swallow "\fIhangon\fP" \fIcommand\fP است. .RE .sp دستور (The command) .RS 4 هر دستور fvwm توسط FvwmButtons شناسایی می‌شود. برای اطلاعات بیشتر به fvwm(1) مراجعه کنید. .sp دستور Exec در هنگام استفاده در Actions دارای یک پسوند کوچک است، نحو آن چنین است: .sp .if n .RS 4 .nf .fam C Exec ["hangon"] command .fam .fi .if n .RE .sp مثال: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Action Exec "xload" xload) .fam .fi .if n .RE .sp رشته hangon باید درون نقل‌قول جفتی قرار گیرد. هنگامی که FvwmButtons با چنین دستور Exec مواجه می‌شود، دکمه تا زمانی که پنجره‌ای با نام، کلاس یا منبع منطبق با بخش درون نقل‌قولِ دستور دیده شود، به صورت فشرده باقی می‌ماند. این سازوکار به منظور ارائه بازخورد بصری به کاربر است که کنش درخواستی او اجرا خواهد شد. رشته hangon می‌تواند شامل نویسه‌های عام (\*(Aq*\*(Aq) باشد که با هر زیررشته‌ای مطابقت دارند. اگر بخش درون نقل‌قول فاقد هرگونه نویسه باشد، دکمه بلافاصله به بیرون بازمی‌گردد. توجه داشته باشید که کاربران می‌توانند به فشردن دکمه و اجرای مجدد دستور ادامه دهند، حتی زمانی که دکمه فشرده به نظر می‌رسد. .RE .sp نقل‌قول (Quoting) .RS 4 هر رشته‌ای که حاوی فضای خالی باشد باید درون نقل‌قول قرار گیرد. بر خلاف نسخه‌های پیشین، دستورات دیگر نیازی به قرار گرفتن در نقل‌قول ندارند. در این حالت هر نویسه نقل‌قول دست‌نخورده به برنامه منتقل می‌شود. فقط ویرگول‌های \*(Aq,\*(Aq و پرانتزهای بسته \*(Aq)\*(Aq باید در داخل یک دستور درون نقل‌قول قرار گیرند. نقل‌قول را می‌توان با هر یک از سه نویسه نقل‌قول انجام داد؛ نقل‌قول تکی: .sp \*(AqThis is a "quote"\*(Aq, .sp نقل‌قول جفتی: .sp "It\(cqs another `quote\*(Aq", .sp و نقل‌قول معکوس (بک‌تیک): .sp \f(CRThis is a strange quote\fP. .sp استفاده از نقل‌قول معکوس غیرمعمول است اما به عمد برای زمانی است که از یک پیش‌پردازنده استفاده می‌کنید و می‌خواهید دستورات شما را تحت تأثیر قرار دهد، مانند این: .sp .if n .RS 4 .nf .fam C #define BG gray60 *FvwmButtons: (Swallow "xload" `Exec xload \-bg BG &`) .fam .fi .if n .RE .sp هر نویسه منفرد را می‌توان با یک بک‌اسلش پیشین \*(Aq\(rs\*(Aq گریز داد (نقل‌قول کرد). .RE .RE.SH "ایجاد پنل‌ها (CREATING PANELS)" .sp نسخه‌های پیشین FvwmButtons (از fvwm 2.0.46 تا 2.3.6) روش متفاوتی برای مدیریت پنل‌ها داشتند. شما نمی‌توانید از پیکربندی قدیمی پنل خود با قابلیت جدید پنل استفاده کنید. برای اطلاعات بیشتر بخش «تبدیل پیکربندی‌های قدیمی پنل (CONVERTING OLD PANEL CONFIGURATIONS)» را بخوانید. .SS "نحوه ایجاد پنل‌های جدید (HOW TO CREATE NEW PANELS)" .sp هر برنامه‌ای که بتواند از درون fvwm اجرا شود و پنجره داشته باشد، می‌تواند به عنوان پنل استفاده شود. پنجره یک ترمینال می‌تواند پنل شما باشد، یا برنامه‌ای مانند xload یا xosview یا یک ماژول دیگر fvwm، از جمله خود FvwmButtons. تمام چیزی که باید بدانید این است که چگونه برنامه خود را از fvwm اجرا کنید. .sp دکمه‌ای که پنل را فراخوانی می‌کند، به سادگی هر دکمه دیگری پیکربندی می‌شود. در اصل شما به چیزی بیشتر از گزینه \fIPanel\fP نیاز ندارید: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Panel my_first_panel \(rs "Module FvwmButtons \-g \-30000\-30000 my_first_panel") *FvwmButtons: (Panel my_second_panel \(rs "Exec exec xterm \-g \-30000\-30000 \-n my_second_panel") .fam .fi .if n .RE .sp این عملکرد مشابه گزینه \fISwallow\fP است. تفاوت در این است که برنامه هنگام بالا آمدن درون دکمه قرار نمی‌گیرد، بلکه از دید پنهان می‌شود. هنگامی که دکمه مربوط به پنل را فشار می‌دهید، پنجره به شکل لغزشی نمایان می‌شود. گزینه \*(Aq\-g \-30000\-30000\*(Aq به برنامه می‌گوید که باید در جایی بسیار دور در بالا و سمت چپ صفحه قابل مشاهده شما ایجاد شود. در غیر این صورت، هنگام راه‌اندازی FvwmButtons برای یک لحظه چشمک‌زدن آن را خواهید دید. برخی برنامه‌ها با این نوع نحو به خوبی کار نمی‌کنند، بنابراین شاید مجبور باشید با چشمک‌زدن کوتاه پنجره کنار بیایید. اگر می‌خواهید از نمونه دیگری از FvwmButtons یک پنل بسازید می‌توانید این کار را انجام دهید، اما باید به آن نامی متفاوت بدهید (\*(Aqmy_first_panel\*(Aq در مثال بالا). اگر FvwmButtons را تحت همان نام اجرا کنید، پنل‌های جدید به صورت بازگشتی ایجاد می‌شوند تا جایی که منابع سیستم شما تمام شده و FvwmButtons کرش کند! برای پیکربندی یک نوار دکمه دوم با نامی متفاوت، کافی است در فایل پیکربندی خود \*(Aq*new_name\*(Aq را به جای \*(Aq*FvwmButtons\*(Aq قرار دهید. اگر با گزینه \fISwallow\fP آشنایی ندارید یا می‌خواهید درباره نحوه کارکرد «بلعیدن» (swallowing) پنل‌ها بیشتر بدانید، به توضیحات گزینه \fISwallow\fP مراجعه کنید. .sp اکنون که پنل شما اساساً کار می‌کند، مایل خواهید بود که کمی آن را تنظیم کنید. شاید نخواهید عنوان پنجره روی پنل نمایش داده شود. برای غیرفعال کردن عنوان، از دستور \fIStyle\fP در fvwm استفاده کنید. اگر نوار دکمه شما چسبان (\*(Aqsticky\*(Aq) است، ممکن است بخواهید پنل را نیز چسبان کنید. و احتمالاً پنجره پنل در صورت تبدیل شدن به آیکون، نباید آیکونی داشته باشد. .sp .if n .RS 4 .nf .fam C Style name_of_panel_window NoTitle, Sitcky, NoIcon .fam .fi .if n .RE .sp ممکن است بخواهید پنل شما تنها تا زمانی باز بماند که چیزی را در آن انتخاب کنید. می‌توانید در دستور، گزینه \fI\-transientpanel\fP را بعد از گزینه \-g به FvwmButtons بدهید. ماژول FvwmPager نیز گزینه مشابهی به نام \*(Aq\-transient\*(Aq دارد. .sp در نهایت، اکنون می‌توانید یک آیکون، یک عنوان یا یک فلش کوچک را در دکمه قرار دهید تا بتوانید کاربرد آن را تشخیص دهید. یک عنوان یا آیکون می‌تواند طبق معمول مشخص شود. برای فعال کردن فلش، فقط کافی است پس از کلمه کلیدی \*(AqPanel\*(Aq در مثال بالا عبارت \*(Aq(indicator)\*(Aq و سپس گزینه \fIPadding\fP را اضافه کنید تا چند پیکسل بین فلش و حاشیه دکمه فاصله بماند. جهت اختیاری برای باز شدن پنل را نیز می‌توان تعیین کرد: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Padding 2, Panel(down, indicator) my_first_panel \(rs "Module FvwmButtons \-g \-30000\-30000 \-transientpanel my_first_panel") .fam .fi .if n .RE .sp گزینه‌های متعدد دیگری برای پیکربندی نحوه کار پنل شما وجود دارد، به عنوان مثال سرعت و روانی پویانمایی لغزشی. لطفاً برای جزئیات بیشتر به توضیحات گزینه \fIPanel\fP مراجعه کنید. .SS "تبدیل پیکربندی‌های قدیمی پنل (CONVERTING OLD PANEL CONFIGURATIONS)" .sp این بخش نحوه تبدیل یک نحو نسبتاً قدیمی استفاده شده در نسخه‌های 2.2.x را توضیح می‌دهد. اگر نحو پیکربندی شما جدیدتر است، می‌توانید از آن صرف‌نظر کنید. .sp با قابلیت قدیمی پنل، شما ابتدا یک یا چند خط برای تعریف پنل‌ها در پیکربندی اصلی FvwmButtons خود داشتید: .sp .if n .RS 4 .nf .fam C \&... *FvwmButtons(Title WinOps,Panel WinOps) *FvwmButtons(Title Tools ,Panel Tools) \&... .fam .fi .if n .RE .sp پس از آخرین خط پیکربندی برای پنل اصلی، پیکربندی نخستین پنل با خطی که با *FvwmButtonsPanel شروع می‌شد ارائه می‌گردید: .sp .if n .RS 4 .nf .fam C *FvwmButtonsPanel WinOps *FvwmButtonsBack bisque2 \&... *FvwmButtonsPanel Tools *FvwmButtonsBack bisque2 \&... .fam .fi .if n .RE .sp و احتمالاً دستورهای Style را برای پنل‌های خود داشتید: .sp .if n .RS 4 .nf .fam C Style FvwmButtonsPanel Title, NoHandles, BorderWidth 0 Style FvwmButtonsPanel NoButton 2, NoButton 4, Sticky .fam .fi .if n .RE .sp پیکربندی جدید بسیار مشابه به نظر می‌رسد، اما اکنون پیکربندی پنل اصلی از پیکربندی زیرپنل‌ها مستقل است. خطوط فراخوانی‌کننده پنل‌ها از همان نحو گزینه Swallow استفاده می‌کنند، بنابراین شما فقط کافی است نام پنجره‌ای را که می‌خواهید به عنوان پنل استفاده شود و دستوری که باید اجرا شود را به جای نام پنل اضافه کنید. توجه داشته باشید که به نمونه جدید FvwmButtons یک نام متفاوت بدهید. .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Title WinOps, Panel WinOps \(rs "Module FvwmButtons WinOps") *FvwmButtons: (Title Tools , Panel Tools \(rs "Module FvwmButtons Tools") .fam .fi .if n .RE .sp اگر از چیزی شبیه به \*(AqPanel\-d\*(Aq استفاده می‌کردید، اکنون باید به جای آن از \*(AqPanel(down)\*(Aq استفاده کنید. برای اینکه پنل جدید به محض انتخاب شدن یک دکمه ناپدید شود، FvwmButtons را با گزینه \*(Aq\-transientpanel\*(Aq اجرا کنید: .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Title Tools , Panel(down) Tools \(rs "Module FvwmButtons \-transientpanel Tools") .fam .fi .if n .RE .sp تغییر دادن بقیه پیکربندی بسیار ساده است. خطوط \*(Aq*FvwmButtonsPanel \*(Aq را حذف کنید و در عوض را به تمام خطوط پیکربندی بعدی برای پنل اضافه کنید. از همان نام در دستورهای Style خود استفاده کنید: .sp .if n .RS 4 .nf .fam C *WinOps: Back bisque2 \&... *Tools: Back bisque2 \&... Style "WinOps" Title, NoHandles, BorderWidth 0 Style "WinOps" NoButton 2, NoButton 4, Sticky Style "Tools" Title, NoHandles, BorderWidth 0 Style "Tools" NoButton 2, NoButton 4, Sticky .fam .fi .if n .RE .sp همین و بس. پنل‌های جدید بسیار انعطاف‌پذیرتر هستند. لطفاً برای جزئیات به بخش‌های دیگر این مستندات مراجعه کنید..SS "چرا قابلیت پانل بازنویسی شد؟ (WHY WAS THE PANEL FEATURE REWRITTEN?)" .sp چندین دلیل وجود دارد. مهم‌ترین دلیل این است که کد برنامه‌ای که پانل‌ها را پیاده‌سازی می‌کرد بسیار مخل بود و مشکلات زیادی ایجاد می‌کرد. در همان حال، نوشتن قابلیت‌های جدید برای FvwmButtons را در بهترین حالت دشوار می‌ساخت. دلیل دوم این است که بیشتر کاربران به‌سادگی قادر به راه‌اندازی آن نبودند \- بیش از حد پیچیده بود. حتی خود من (نویسندهٔ کد جدید) مجبور شدم پیش از آن‌که برای نخستین بار آن را به کار بیندازم، چندین ساعت وقت صرف کنم. دلیل سوم این است که پانل‌های جدید انعطاف‌پذیرتر و همه‌کاره‌تر هستند. هر برنامه‌ای می‌تواند یک پانل در FvwmButtons باشد، نه فقط نمونه‌های دیگر خود FvwmButtons. بنابراین صمیمانه امیدوارم کسی از این تغییر ناخشنود نباشد. بله \- شما باید پیکربندی خود را تغییر دهید، اما پیکربندی قابلیت جدید بسیار ساده‌تر است، به‌ویژه اگر از پیش بدانید گزینهٔ Swallow چگونه کار می‌کند. .SH "الگوریتم چینش (ARRANGEMENT ALGORITHM)" .sp FvwmButtons با به‌کارگیری بازگشتیِ الگوریتم زیر روی هر ظرف (container)، از جمله خود جعبه دکمه (buttonbox)، تلاش می‌کند دکمه‌های خود را به بهترین شکل ممکن بچیند. .sp تنظیم اندازهٔ مناسب .RS 4 ابتدا تعداد مساحت‌های واحدِ دکمه را که نیاز خواهد داشت، با جمع کردن حاصل‌ضرب عرض در ارتفاع (بر حسب واحد دکمه) هر دکمه محاسبه می‌کند. ظرف‌ها در این مرحله یک دکمهٔ معمولی در نظر گرفته می‌شوند. سپس آرگومان‌های داده‌شدهٔ \fIrows\fP و \fIcolumns\fP را بررسی می‌کند. اگر تعداد سطرها داده شده باشد، محاسبه می‌کند که چند ستون مورد نیاز است و به آن پایبند می‌ماند، مگر اینکه \fIcolumns\fP بزرگ‌تر باشد؛ که در این صورت مقداری فضای خالی در پایین جعبه دکمه ایجاد خواهد شد. اگر تعداد ستون‌ها داده شده باشد، محاسبه می‌کند که برای جا دادن تمام دکمه‌ها به چند سطر نیاز است. اگر هیچ‌کدام داده نشده باشد، فرض می‌کند دو سطر می‌خواهید و تعداد ستون‌ها را بر اساس آن پیدا می‌کند. اگر گزینهٔ BoxSize روی \fIsmart\fP تنظیم شده باشد، دست‌کم ارتفاع/عرض بلندترین/عریض‌ترین دکمه استفاده می‌شود، در حالی که مقدار \fIfixed\fP مانع از تغییر اندازهٔ جعبه در صورت تنظیم غیرصفر بودن هر دو مقدار \fIrows\fP و \fIcolumns\fP می‌شود. .RE .sp جابه‌جایی و چیدمان دکمه‌ها .RS 4 اکنون مساحت به‌اندازهٔ کافی بزرگی برای قرار دادن دکمه‌ها در اختیار دارد؛ تنها کاری که باقی مانده چیدمان درست آن‌هاست. دو نوع دکمه وجود دارد: دکمه‌های ثابت (fixed) و دکمه‌های شناور (floating). یک دکمهٔ ثابت با یک آرگومان هندسهٔ x/y مجبور به قرارگیری در شکافی (slot) مشخص در جعبه دکمه می‌شود. تمام دکمه‌های دیگر شناور در نظر گرفته می‌شوند. دکمه‌های ثابت اول چیده می‌شوند. اگر یک دکمهٔ ثابت با دکمه‌ای دیگر هم‌پوشانی داشته باشد یا بخواهد بیرون از پنجرهٔ دکمه‌ها قرار گیرد، FvwmButtons با یک پیام خطا خارج می‌شود. پس از آن، دکمه‌های شناور چیده می‌شوند. الگوریتم تلاش می‌کند دکمه‌ها را به سبک غربی یعنی از چپ به راست و از بالا به پایین قرار دهد. اگر دکمه در موقعیت پیشنهادی جا شود، در آن‌جا قرار می‌گیرد؛ در غیر این صورت شکاف فعلی خالی مانده و شکاف سمت راست بررسی خواهد شد. پس از قرار گرفتن دکمه، برای قرار دادن دکمهٔ بعدی در شکاف بعد تلاش می‌شود و این روند تا زمانی که همهٔ دکمه‌ها چیده شوند ادامه می‌یابد. در صورت استفاده از گزینهٔ BoxSize با مقدار \fIsmart\fP، در صورت نیاز سطرهای بیشتری در زیر آخرین سطر دکمه‌ها اضافه می‌شود تا تمام دکمه‌ها جا شوند. .RE .sp ظرف‌ها (Containers) .RS 4 ظرف‌ها با همین الگوریتم چیده می‌شوند؛ در واقع با یافتن آن‌ها توسط الگوریتم، چیدمان آن‌ها به‌صورت بازگشتی انجام می‌گیرد. .RE .sp مثال توضیحی .RS 4 یک مثال در این‌جا می‌تواند مفید باشد: فرض کنید ۶ دکمه دارید که همگی اندازهٔ واحد دارند به جز شمارهٔ ۲ که ۲در۲ (2x2) است. این به معنی ۵ ضرب در ۱ به‌علاوهٔ ۱ ضرب در ۴ است که مجموع مساحت آن برابر با ۹ دکمهٔ واحد می‌شود. فرض کنید ۳ ستون درخواست کرده‌اید. .RE .sp .if n .RS 4 .nf .fam C 1) +\-\-\-+\-\-\-+\-\-\-+\& 2) +\-\-\-+\-\-\-+\-\-\-+\& 3) +\-\-\-+\-\-\-+\-\-\-+ | 1 |\& |\& | 1 |\& |\& | 1 |\& | +\-\-\-+\& +\& +\-\-\-+\& 2\& +\& +\-\-\-+\& 2\& + |\& |\& |\& |\& |\& | 3 |\& | +\& +\& +\& +\-\-\-+\-\-\-+\& +\-\-\-+\-\-\-+\-\-\-+ |\& |\& |\& |\& |\& |\& |\& | +\-\-\-\-\-\-\-\-\-\-\-+\& +\-\-\-+\-\-\-\-\-\-\-+\& +\-\-\-+\-\-\-+\-\-\-+ 4) +\-\-\-+\-\-\-+\-\-\-+\& 5) +\-\-\-+\-\-\-\-\-\-\-+\& 6) +\-\-\-+\-\-\-\-\-\-\-+ | 1 |\& |\& | 1 |\& |\& | 1 |\& | +\-\-\-+\& 2\& +\& +\-\-\-+\& 2\& |\& +\-\-\-+\& 2\& | | 3 |\& |\& | 3 |\& |\& | 3 |\& | +\-\-\-+\-\-\-+\-\-\-+\& +\-\-\-+\-\-\-+\-\-\-+\& +\-\-\-+\-\-\-\-\-\-\-+ | 4 |\& |\& | 4 | 5 |\& |\& | 4 | 5 | 6 | +\-\-\-+\-\-\-+\-\-\-+\& +\-\-\-+\-\-\-+\-\-\-+\& +\-\-\-+\-\-\-+\-\-\-+ .fam .fi .if n .RE .sp دکمه‌ها چه اندازه‌ای خواهند داشت؟ .RS 4 هنگامی که FvwmButtons آیکون‌ها و فونت‌های مورد نیاز پیکربندی خود را خواند، می‌تواند اندازهٔ مورد نیاز برای هر دکمهٔ غیربلعنده (non\-swallowing) را مشخص کند. اندازهٔ دکمهٔ واحد در یک ظرف طوری تنظیم می‌شود که به اندازهٔ کافی بزرگ باشد تا بزرگ‌ترین دکمه را بدون فشرده کردن در خود جای دهد. از پنجره‌های بلعیده‌شده (swallowed) صرفاً انتظار می‌رود با اندازهٔ دکمه‌ای که از این طرح دریافت می‌کنند سازگار باشند. اگر یک پیکربندی خاص به فضای بیشتری برای یک پنجرهٔ بلعیده‌شده نیاز داشته باشد، می‌توان آن را در خط پیکربندی آن دکمه با استفاده از گزینهٔ «Size \fIwidth height\fP» مشخص کرد. این کار به FvwmButtons می‌گوید که در داخل برجستگی (relief) و فاصله‌گذاری (padding)، دست‌کم \fIwidth\fP در \fIheight\fP پیکسل به این دکمه اختصاص دهد. .RE .SH "کنش‌های پویا (DYNAMICAL ACTIONS)" .sp یک نمونهٔ در حال اجرای FvwmButtons ممکن است دستوراتی را در زمان اجرا دریافت کند. این کار با استفاده از دستور fvwm زیر انجام می‌شود: .sp .if n .RS 4 .nf .fam C SendToModule FvwmButtons\-Alias .fam .fi .if n .RE .sp کنش‌های پشتیبانی‌شده: .sp ChangeButton button_id options .RS 4 می‌تواند برای تغییر عنوان یا آیکون یک دکمه در زمان اجرا به کار رود. \fIbutton_id\fP شناسهٔ دکمه برای تغییر است که با استفاده از گزینهٔ دکمهٔ \fBId\fP مشخص می‌شود. همچنین می‌تواند یک عدد باشد که در این صورت دکمه با شمارهٔ داده‌شده در نظر گرفته می‌شود. و در نهایت، \fIbutton_id\fP می‌تواند به صورت +x+y باشد که در آن x و y به ترتیب شمارهٔ ستون و شمارهٔ سطر دکمهٔ مورد نظر برای تغییر هستند. امکان تعیین چندین جفت‌گزینه (نام به همراه مقدار) با جدا کردن آن‌ها به‌وسیلهٔ ویرگول وجود دارد. در حال حاضر گزینه‌ها شامل \fBTitle\fP، \fBActiveTitle\fP، \fBPressTitle\fP، \fBColorset\fP، \fBIcon\fP، \fBActiveIcon\fP و \fBPressIcon\fP هستند. این گزینه‌ها مانند گزینه‌های پیکربندیِ هم‌نام خود عمل می‌کنند. .RE .sp ExpandButtonVars button_id command .RS 4 متغیرهای موجود در \fIcommand\fP را دقیقاً مانند گزینهٔ دکمهٔ \fBAction\fP جایگزین کرده و سپس دستور را به fvwm پس می‌فرستد. نحو \fIbutton_id\fP همان است که در بالا برای \fBChangeButton\fP شرح داده شد. .RE .sp PressButton button_id [mouse_button] .RS 4 کلیک ماوس را روی یک دکمه شبیه‌سازی می‌کند. \fIbutton_id\fP شناسهٔ دکمه برای فشردن است که با گزینهٔ دکمهٔ \fBId\fP مشخص شده و \fImouse_button\fP شمارهٔ کلید ماوس است که برای کلیک روی دکمه استفاده می‌شود؛ به عنوان مثال "1" برای دکمهٔ چپ ماوس و غیره. قرار دادن شماره در نقل‌قول ضروری نیست. اگر گزینهٔ \fImouse_button\fP ذکر نشود، کلید ۱ ماوس فرض می‌شود. رفتار این دستور دقیقاً به گونه‌ای است که گویی کلید ماوس روی دکمهٔ مورد نظر فشرده و رها شده است. .RE .sp Silent .RS 4 این پیشوند ممکن است پیش از سایر کنش‌ها مشخص شود. تمام پیام‌های خطای ممکن و هشدارها را غیرفعال می‌کند. .sp مثال .RS 4 .RE .RE .sp .if n .RS 4 .nf .fam C *FvwmButtons: (Id note1, Title "13:30 \- Dinner", Icon clock1.xpm) SendToModule FvwmButtons Silent \(rs ChangeButton note1 Icon clock2.xpm, Title "18:00 \- Go Home" .fam .fi .if n .RE.SH "پیکربندی نمونه (SAMPLE CONFIGURATION)" .sp موارد زیر بخش‌هایی از یک فایل .fvwm2rc هستند که دستورهای مقداردهی اولیه FvwmButtons را شرح می‌دهند: .sp .if n .RS 4 .nf .fam C ########################################################## # Load any modules which should be started during fvwm # initialization # Make sure FvwmButtons is always there. AddToFunc StartFunction\& "I" Module FvwmButtons # Make it titlebar\-less, sticky, and give it an icon Style "FvwmButtons"\& Icon toolbox.xpm, NoTitle, Sticky # Make the menu/panel look like CDE Style "WinOps" Title, NoHandles, BorderWidth 0 Style "WinOps" NoButton 2, NoButton 4, Sticky Style "Tools" Title, NoHandles, BorderWidth 0 Style "Tools" NoButton 2, NoButton 4, Sticky ########################################################## DestroyModuleConfig FvwmButtons: * *FvwmButtons: Fore Black *FvwmButtons: Back rgb:90/80/90 *FvwmButtons: Geometry \-135\-5 *FvwmButtons: Rows 1 *FvwmButtons: BoxSize smart *FvwmButtons: Font \-*\-helvetica\-medium\-r\-*\-*\-12\-* *FvwmButtons: Padding 2 2 *FvwmButtons: (Title WinOps, Panel WinOps \(rs "Module FvwmButtons \-transientpanel WinOps") *FvwmButtons: (Title Tools, Panel Tools\& \(rs "Module FvwmButtons \-transientpanel Tools") *FvwmButtons: (Title Resize, Icon resize.xpm,\& Action Resize) *FvwmButtons: (Title Move,\& Icon arrows2.xpm, Action Move\& ) *FvwmButtons: (Title Lower,\& Icon Down,\& Action Lower ) *FvwmButtons: (Title Raise,\& Icon Up,\& Action Raise ) *FvwmButtons: (Title Kill,\& Icon bomb.xpm,\& Action Destroy) *FvwmButtons: (1x1,Container(Rows 3,Frame 1)) *FvwmButtons: (Title Dopey ,Action\& \(rs `Exec "big_win" xterm \-T big_win \-geometry 80x50 &`) *FvwmButtons: (Title Snoopy, Font fixed, Action\& \(rs `Exec "small_win" xterm \-T small_win &`) *FvwmButtons: (Title Smokin\*(Aq) *FvwmButtons: (End) *FvwmButtons: (Title Xcalc, Icon rcalc.xpm,\& \(rs Action `Exec "Calculator" xcalc &`) *FvwmButtons: (Title XMag, Icon magnifying_glass2.xpm,\& \(rs Action `Exec "xmag" xmag &`) *FvwmButtons: (Title Mail, Icon mail2.xpm,\& \(rs Action `Exec "xmh" xmh &`) *FvwmButtons: (4x1, Swallow "FvwmPager" `FvwmPager 0 3`\& \(rs Frame 3) *FvwmButtons: (Swallow(UseOld,NoKill) "xload15" `Exec xload \(rs \-title xload15 \-nolabel \-bg rgb:90/80/90 \-update 15\& \(rs \-geometry \-3000\-3000 &`) .fam .fi .if n .RE .sp خطوط پایانی کمی ترفندآمیزند \- یکی از آن‌ها ماژول FvwmPager را اجرا کرده و آن را برای نمایش درون یک دکمه با پهنای چهار برابر می‌بلعد (swallow می‌کند). در صورت استفاده، Pager تا جای ممکن درون برجستگی دکمه (relief) بزرگ خواهد بود. .sp خط پایانی حتی جادویی‌تر است. به ترکیب \fIUseOld\fP و \fINoKill\fP دقت کنید؛ این ترکیب تلاش می‌کند هنگام راه‌اندازی، پنجرهٔ موجود با نام "xload15" را ببلعد (در صورت شکست: پنجره‌ای با دستور مشخص‌شده راه‌اندازی می‌کند)، که هنگام پایان کار FvwmButtons از حالت بلعیده خارج (رها) می‌شود. برنامهٔ بلعیده‌شده با "\-geometry \-3000\-3000" راه‌اندازی می‌شود تا پیش از بلعیده‌شدن قابل مشاهده نباشد. .sp سایر پنل‌ها پس از پنل ریشه (root panel) مشخص شده‌اند: .sp .if n .RS 4 .nf .fam C ########## PANEL WinOps DestroyModuleConfig WinOps: * *WinOps: Back bisque2 *WinOps: Geometry \-3\-3 *WinOps: Columns 1 *WinOps: (Title Resize, Icon resize.xpm,\& Action Resize) *WinOps: (Title Move,\& Icon arrows2.xpm, Action Move\& ) *WinOps: (Title Lower,\& Icon Down,\& Action Lower ) *WinOps: (Title Raise,\& Icon Up,\& Action Raise ) ########## PANEL Tools DestroyModuleConfig Tools: * *Tools: Back bisque2 *Tools: Geometry \-1\-1 *Tools: Columns 1 *Tools: (Title Kill,\& Icon bomb.xpm,\& Action Destroy) .fam .fi .if n .RE .sp تعیین رنگ با ساختار \fIrgb:90/80/90\fP در واقع صحیح‌ترین شیوه برای مشخص‌کردن رنگ‌های مستقل در X است و باید به جای ساختار قدیمی‌تر \fI#908090\fP استفاده شود. اگر ساختار دوم در فایل پیکربندی شما استفاده شود، باید مطمئن شوید که علامت هش (#) را در هر یک از \fIcommand\fPهایی که اجرا خواهند شد گریز (escape) دهید، در غیر این صورت fvwm باقی‌ماندهٔ خط را به عنوان کامنت تلقی خواهد کرد. .sp توجه داشته باشید که با مشخصات هندسی x/y می‌توانید به راحتی پنجره‌های دکمه‌ای دارای شکاف (فاصله) بسازید. در اینجا مثالی دیگر آمده است. بدون مشخصات geometry برای دکمه‌ها نمی‌توانید به چنین چیزی دست یابید: .sp .if n .RS 4 .nf .fam C ########################################################## # Another example ########################################################## # Make it titlebar\-less, sticky, and give it an icon Style "FvwmButtons"\& Icon toolbox.xpm, NoTitle, Sticky DestroyModuleConfig FvwmButtons: * *FvwmButtons: Font\& 5x7 *FvwmButtons: Back rgb:90/80/90 *FvwmButtons: Fore\& black *FvwmButtons: Frame\& 1 # 9x11 pixels per button, 4x4 pixels for the frame *FvwmButtons: Geometry\& 580x59+0\-0 *FvwmButtons: Rows\& 5 *FvwmButtons: Columns\& 64 *FvwmButtons: BoxSize\& fixed *FvwmButtons: Padding\& 1 1 # Pop up a module menu directly above the button. *FvwmButtons: (9x1+3+0, Padding 0, Title "Modules",\& \(rs Action `Menu Modulepopup rectangle \(rs $widthx$height+$lleft+$top o+50 \-100m`) # first row of buttons from left to right: *FvwmButtons: (3x2+0+1, Icon my_lock.xpm, Action `Exec xlock`) *FvwmButtons: (3x2+3+1, Icon my_recapture.xpm, Action Recapture) *FvwmButtons: (3x2+6+1, Icon my_resize.xpm, Action Resize) *FvwmButtons: (3x2+9+1, Icon my_move.xpm, Action Move) # second row of buttons from left to right: *FvwmButtons: (3x2+0+3, Icon my_exit.xpm, Action QuitSave) *FvwmButtons: (3x2+3+3, Icon my_restart.xpm, Action Restart) *FvwmButtons: (3x2+6+3, Icon my_kill.xpm, Action Destroy) *FvwmButtons: (3x2+9+3, Icon my_shell.xpm, Action \*(AqExec rxvt\*(Aq) # big items *FvwmButtons: (10x5, Swallow (NoKill, NoCLose)\& \(rs "FvwmPager" \*(AqFvwmPager * * \-geometry 40x40\-1024\-1024\*(Aq) *FvwmButtons: (6x5, Swallow "FvwmXclock" `Exec xclock \(rs \-name FvwmXclock \-geometry 40x40+0\-3000 \-padding 1\& \(rs \-analog \-chime \-bg rgb:90/80/90`) *FvwmButtons: (13x5, Swallow (NoClose)\& \(rs "FvwmIconMan" \*(AqModule FvwmIconMan\*(Aq) *FvwmButtons: (20x5, Padding 0, Swallow "xosview"\& \(rs `Exec /usr/X11R6/bin/xosview \-cpu \-int \-page \-net\& \(rs \-geometry 100x50+0\-3000 \-font 5x7`) .fam .fi .if n .RE.SH "گزارش باگ‌ها (BUGS)" .sp بخش action در گزینهٔ Swallow در صورتی که شامل هرگونه نویسهٔ فضای خالی (whitespace) باشد، باید داخل علامت نقل‌قول قرار گیرد. .SH "تاریخچه (HISTORY)" .sp برنامهٔ FvwmButtons و ایدهٔ برقراری ارتباط این ماژول با Window Manager، همگی اثر اصلی Robert Nation هستند. .sp در ابتدا، FvwmGoodStuff پیش‌درآمد FvwmButtons بود. .SH "نویسندگان (AUTHORS)" .sp Robert Nation (1993). تا حدی بهبودیافته توسط Jarl Totland (1996)، Jui\-Hsuan Joshua Feng و Scott Smedley.