'\" t .\" Title: FvwmAuto .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-06-28 .\" Manual: Fvwm Modules .\" Source: \ \& .\" Language: English .\" .TH "FVWMAUTO" "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)" FvwmAuto \- ماژول بالا آوردن خودکار پنجره در fvwm .SH "خلاصه دستور (SYNOPSIS)" .sp \fBModule FvwmAuto Timeout [\-passid] [\-menter|\-menterleave|\-mfocus] [EnterCommand [LeaveCommand]]\fP .sp ماژول \fIFvwmAuto\fP فقط می‌تواند توسط fvwm فراخوانی شود. فراخوانی \fIFvwmAuto\fP از خط فرمان کار نخواهد کرد. .SH "توضیحات (DESCRIPTION)" .sp ماژول \fIFvwmAuto\fP اغلب برای بالا آوردن خودکار (auto\-raise) پنجره‌هایی که فوکوس دریافت کرده‌اند استفاده می‌شود. .SH "نحوه فراخوانی (INVOCATION)" .sp نحو صحیح به این صورت است: .sp .if n .RS 4 .nf .fam C Module FvwmAuto Timeout [\-passid] [\-menter|\-menterleave|\-mfocus] [EnterCommand [LeaveCommand]] AddToMenu Modules + "Auto Raise (300 ms)"\& Module FvwmAuto 300 + "Auto Raise/Lower"\& Module FvwmAuto 300 "Silent Raise" "Silent Lower" .fam .fi .if n .RE .sp آرگومان \fITimeout\fP الزامی است. این آرگومان مشخص می‌کند پنجره پیش از اجرای دستور، چه مدت باید فوکوس ورودی صفحه‌کلید را حفظ کند. این تأخیر بر حسب میلی‌ثانیه اندازه‌گیری می‌شود و هر عدد صحیح بزرگ‌تر از صفر معتبر است. .sp اگر گزینه \fI\-passid\fP مشخص شود، شناسه پنجره‌ای (window id) که اشاره‌گر به آن وارد یا از آن خارج شده است به دستوری که برای fvwm فرستاده می‌شود ضمیمه می‌گردد. این می‌تواند همراه با دستور \fBWindowId\fP در fvwm استفاده شود. .sp گزینه‌های \fI\-menter\fP، \fI\-menterleave\fP و \fI\-mfocus\fP بر رویدادهایی که FvwmAuto به آن‌ها واکنش نشان می‌دهد اثر می‌گذارند. نباید بیش از یکی از این گزینه‌ها انتخاب شود. در حالت \fI\-mfocus\fP، ماژول FvwmAuto پنجره‌ای را که دارای فوکوس است بالا می‌آورد. در حالت \fI\-menter\fP، هنگامی که اشاره‌گر ماوس وارد پنجره‌ای می‌شود، FvwmAuto پنجره زیر اشاره‌گر را بالا می‌آورد. دستور \fILeaveCommand\fP روی پنجره‌ای اجرا می‌شود که قبل از ورود اشاره‌گر به پنجره جدید، زیر اشاره‌گر بوده است. هنگامی که اشاره‌گر پنجره‌ای را ترک کرده و وارد پنجره ریشه (root window) می‌شود، دستور \fIEnterCommand\fP نیز اجرا می‌گردد، اما بدون پنجره‌ای برای اقدام روی آن. در حالت \fI\-menterleave\fP، ماژول FvwmAuto درست مانند حالت \fI\-menter\fP عمل می‌کند، اما دستور \fILeaveCommand\fP در صورتی که اشاره‌گر از پنجره‌ای خارج شود ولی وارد پنجره جدیدی نشود نیز اجرا می‌گردد. دو حالت اخیر برای پنجره‌هایی که فوکوس را نمی‌پذیرند مفید هستند. .sp نکته: حالت \-menterleave ممکن است با پنجره‌های جهنده (popup) برخی برنامه‌ها تداخل داشته باشد. یک نمونه آن منوی بزرگ‌نمایی در Ghostview است. لطفاً در این مورد به ما اعتراض نکنید \- این یک باگ در برنامه Ghostview است. .sp دستورهای \fIEnterCommand\fP و \fILeaveCommand\fP اختیاری هستند. دستور \fIEnterCommand\fP به میزان \fITimeout\fP میلی‌ثانیه پس از دریافت فوکوس ورودی توسط یک پنجره اجرا می‌شود، و دستور \fILeaveCommand\fP به میزان \fITimeout\fP میلی‌ثانیه پس از از دست دادن فوکوس توسط پنجره اجرا می‌گردد. توجه داشته باشید که همواره باید از کلیدواژه \*(AqSilent\*(Aq قبل از خود دستور استفاده کنید. اگر این را فراموش کنید، FvwmAuto خودش پیشوند "Silent " را به رشته دستور اضافه می‌کند. بدون این پیشوند، اگر پنجره قبل از پردازش دستور ارسال‌شده توسط FvwmAuto بسته شده باشد، fvwm پنجره‌ای را برای اعمال دستور درخواست می‌کند. این مسئله می‌تواند برای مثال در منوهای جهنده (popup) رخ دهد. .sp مقدار "Silent Raise" پیش‌فرض دستور \fIEnterCommand\fP است، اما هر تابع دیگر fvwm نیز مجاز است. با این حال، استفاده از "Close" یا "Destroy" با یک مهلت زمانی پایین توصیه نمی‌شود. دستور \fILeaveCommand\fP می‌تواند برای داشتن یک میزکار مرتب سودمند باشد. با این گزینه‌ها آزمایش کنید: .sp .if n .RS 4 .nf .fam C Module FvwmAuto 0 Nop "Silent Lower" Module FvwmAuto 0 Nop "Silent Iconify" .fam .fi .if n .RE .sp یک مثال برای بالا آوردن خودکار پنجره‌ها با ClickToFocus: .sp .if n .RS 4 .nf .fam C Style * ClickToFocus FvwmAuto 0 \-menter "Silent Raise" .fam .fi .if n .RE .sp یک مثال برای بالا آوردن و پایین بردن خودکار فقط برخی از پنجره‌ها: .sp .if n .RS 4 .nf .fam C To start FvwmAuto: FvwmAuto 0 \-passid \-menter \(rs "Silent selective_raiselower raise" \(rs "Silent selective_raiselower lower" .fam .fi .if n .RE .sp و قرار دادن این کد در فایل .fvwm2rc خود: .sp .if n .RS 4 .nf .fam C AddToFunc selective_raiselower + I WindowId $1 (FvwmIconMan) $0 + I WindowId $1 (FvwmButtons) $0 + IWindowId $1 (xclock) $0 \&... .fam .fi .if n .RE .sp مثال پیچیده‌تر (سه نمونه از FvwmAuto در حال اجرا هستند): .sp .if n .RS 4 .nf .fam C DestroyFunc RestoreIconified AddToFunc\& RestoreIconified + I Current (Iconic) Iconify false DestroyFunc RegisterFocus AddToFunc\& RegisterFocus + I Exec date +"%T $n focused" >>/tmp/focus\-stats.txt DestroyFunc RegisterUnfocus AddToFunc\& RegisterUnfocus + I Exec date +"%T $n unfocused" >>/tmp/focus\-stats.txt KillModule FvwmAuto Module FvwmAuto 250 Raise Nop Module FvwmAuto 800 RestoreIconified Nop Module FvwmAuto\& 0 RegisterFocus RegisterUnfocus .fam .fi .if n .RE .SH "نکات (NOTES)" .sp پشتیبانی ویژه‌ای برای Raise/Lower در FvwmAuto وجود دارد. این ویژگی برای بهبود فراخوانی‌های بازگشتی (callbacks) مربوط به Raise/Lower افزوده شد، زیرا بیشتر کاربردهای FvwmAuto بالا آوردن یا پایین بردن خودکار است. این بهبود شامل قفل شدن روی بسته‌های M_RAISE_WINDOW و M_LOWER_WINDOW و بالا نیاوردن/پایین نبردن پنجره‌هایی است که صریحاً بالا آورده شده‌اند. پشتیبانی ویژه Raise/Lower تنها زمانی فعال می‌شود که \fIEnterCommand\fP یا \fILeaveCommand\fP شامل زیررشته "Raise" یا "Lower" باشند. در صورتی که FvwmAuto رفتاری مطابق با انتظار شما ندارد، می‌توانید با تغییر نام این دستورها هرگونه پشتیبانی ویژه را فعال یا غیرفعال کنید. .sp استفاده از \fIFvwmAuto\fP همراه با \fIEdgeCommand\fP می‌تواند حتی قدرتمندتر باشد. یک مثال کوتاه در صفحه راهنمای \fIfvwm\fP وجود دارد. .SH "نویسندگان (AUTHORS)" .sp ماژول FvwmAuto یک روز ناگهان ظاهر شد، هیچ‌کس نمی‌داند چگونه. FvwmAuto در تاریخ 09/96 بازنویسی شد، هیچ‌کس نمی‌داند توسط چه کسی.