| FVWMEVENT(1) | Fvwm Modules | FVWMEVENT(1) |
نام (NAME)
FvwmEvent - ماژول رویدادهای fvwm
توضیحات (DESCRIPTION)
ماژول FvwmEvent اقدامی را بر اساس رویدادهای fvwm فعال میکند. میتوان از آن برای اتصال هر تابع یا برنامه fvwm به هر رویداد مدیر پنجره استفاده کرد. FvwmEvent میتواند زمانی که پنجرهها اضافه، حذف، آیکونیک یا لولهای (shaded) میشوند، یا زمانی که fvwm صفحه مجازی یا میزکار نمایشی را تغییر میدهد، یا زمانی که مانیتورهای RandR تغییر میکنند، فعال یا غیرفعال میشوند یا فوکوس میگیرند، اقداماتی را اجرا کند. خلاق باشید، کاربردهای زیادی برای آن خواهید یافت.
فراخوانی (INVOCATION)
FvwmEvent توسط fvwm اجرا میشود، بنابراین فراخوانی آن از طریق خط فرمان کار نخواهد کرد. FvwmEvent را میتوان از درون فایل پیکربندی (config) با یا بدون یک نام مستعار (Alias) به صورت زیر اجرا کرد:
Module FvwmEvent Alias
میتوانید این دستور را به StartFunction اضافه کنید تا اطمینان حاصل شود که FvwmEvent هنگام شروع به کار fvwm در حال اجراست و به رویدادها گوش میدهد. متناوباً میتوانید آن را به یک منو، کلید میانبر و غیره بیفزایید. میتوانید نمونه در حال اجرای FvwmEvent را با دستور زیر متوقف کنید:
KillModule FvwmEvent Alias
گزینههای پیکربندی (CONFIGURATION OPTIONS)
FvwmEvent اطلاعات پیکربندی را از پایگاه داده پیکربندی ماژول fvwm دریافت میکند (به fvwm(1)، بخش MODULE COMMANDS مراجعه کنید)، و گزینههای پیکربندی خاصی را جستجو میکند:
*FvwmEvent: Cmd command
# execute distinct fvwm functions *FvwmEvent: Cmd # execute distinct external programs *FvwmEvent: Cmd exec
FvwmEvent از برنامههای خارجی دیگر نیز پشتیبانی میکند؛ برای مثال دستور 'say' در rsynth:
*FvwmEvent: Cmd "Exec /rsynth/say" *FvwmEvent: destroy_window "window closed"
همچنین میتوانید از دستور داخلی Echo در fvwm به عنوان FvwmEvent: Cmd برای دریافت خروجی اشکالزدایی رویدادهای fvwm به صورت بیصدا استفاده کنید. من از این پیکربندی برای اشکالزدایی FvwmAuto استفاده کردم:
*FvwmEvent: Cmd Echo *FvwmEvent: focus_change "focus change" *FvwmEvent: raise_window "raise window"
حتی میتوانید دستورات شل متفاوتی را برای هر رویداد تنها با تنظیم زیر فراخوانی کنید:
*FvwmEvent: Cmd exec *FvwmEvent: add_window 'killname "APPL ERROR"'
*FvwmEvent: PassId
*FvwmEvent: window-manager-event action
رویدادهای زیر معتبر هستند:
| Event | Description |
| add_window | هنگامی رخ میدهد که پنجره جدیدی نگاشت و قابل رویت میشود |
| config_info | هنگامی رخ میدهد که یک ماژول درخواست پیکربندی میکند |
| configure_window | هنگامی رخ میدهد که رویداد ConfigureNotify اتفاق میافتد |
| default_icon | هنگامی رخ میدهد که DefaultIcon یک پنجره تغییر میکند |
| deiconify | هنگامی رخ میدهد که یک پنجره از حالت آیکون خارج میشود |
| destroy_window | هنگامی رخ میدهد که یک پنجره بسته و تخریب میشود |
| dewindowshade | هنگامی رخ میدهد که پنجره از حالت لولهای باز میشود (unshade) |
| echo | هنگامی رخ میدهد که دستور Echo اجرا میشود |
| end_config_info | هنگامی رخ میدهد که اطلاعات پیکربندی دیگری برای ارسال به ماژول وجود ندارد |
| end_windowlist | هنگامی رخ میدهد که ارسال فهرست پنجرهها پایان یافته است |
| enter_window | هنگامی رخ میدهد که پنجرهای رویداد EnterNotify دریافت میکند |
| error | منسوخشده (DEPRECATED) |
| focus_change | هنگامی رخ میدهد که پنجرهای فوکوس را به دست میآورد یا از دست میدهد |
| icon_file | منسوخشده (DEPRECATED) |
| icon_location | منسوخشده (DEPRECATED) |
| icon_name | منسوخشده (DEPRECATED) |
| iconify | هنگامی رخ میدهد که پنجرهای آیکونیک (کوچک) میشود |
| leave_window | هنگامی رخ میدهد که پنجرهای رویداد LeaveNotify دریافت میکند |
| lower_window | هنگامی رخ میدهد که پنجرهای به لایه پایینتر برده میشود |
| map | هنگامی رخ میدهد که پنجرهای نگاشت (Mapped) میشود |
| mini_icon | هنگامی رخ میدهد که مینیآیکون یک پنجره تغییر میکند |
| monitor_changed | هنگامی رخ میدهد که وضوح مانیتور تغییر میکند |
| monitor_disabled | هنگامی رخ میدهد که مانیتوری غیرفعال میشود (از طریق RandR) |
| monitor_enabled | هنگامی رخ میدهد که مانیتوری فعال میشود (از طریق RandR) |
| monitor_focus | هنگامی رخ میدهد که مانیتوری فوکوس به دست میآورد |
| new_desk | هنگامی رخ میدهد که به میزکار جدیدی جابهجا میشوید |
| new_page | هنگامی رخ میدهد که به صفحه جدیدی جابهجا میشوید |
| old_add_window | منسوخشده (DEPRECATED) |
| old_configure_window | منسوخشده (DEPRECATED) |
| property_change | هنگامی رخ میدهد که پنجرهای رویداد PropertyNotify دریافت میکند |
| raise_window | هنگامی رخ میدهد که پنجرهای به لایه بالاتر آورده میشود |
| res_class | هنگامی رخ میدهد که کلاس (Class) پنجره تنظیم میشود |
| res_name | هنگامی رخ میدهد که منبع (Resource) پنجره تنظیم میشود |
| restack | هنگامی رخ میدهد که چیدمان لایههای پنجرهها تغییر میکند (restack) |
| sendconfig | هنگامی رخ میدهد که FvwmEvent پیکربندی خود را درخواست میکند |
| shutdown | منسوخشده (DEPRECATED) |
| startup | منسوخشده (DEPRECATED) |
| string | هنگامی رخ میدهد که دستور SendToModule استفاده میشود |
| unknown | منسوخشده (DEPRECATED) |
| visible_icon_name | هنگامی رخ میدهد که نام آیکون قابل رویت یک پنجره تغییر میکند |
| visible_name | هنگامی رخ میدهد که نام قابل رویت یک پنجره تغییر میکند |
| window_name | هنگامی رخ میدهد که نام پنجره (WM_NAME) تنظیم میشود |
| windowshade | هنگامی رخ میدهد که پنجرهای لولهای (shaded) میشود |
گردانندههای رویداد مربوط به پنجره در بستر (context) پنجره اجرا میشوند. پیشتر از PassId برای این منظور استفاده میشد، اما اکنون نیازی به استفاده از PassId نیست.
رویدادهای *monitor_ در بستر پنجره اجرا نمیشوند (زیرا پنجرهای وجود ندارد).
به دستور رویداد مشخصشده مقادیر زیر نیز ارسال میگردد:
$0: monitor_event_name (for example: monitor_changed) $1: monitor_name (the RandR name of the monitor)
برای مثال، مورد زیر را در نظر بگیرید:
DestroyFunc RandRFunc AddToFunc RandRFunc + I Exec exec xmessage "Monitor $1 had this event: $0" DestroyModuleConfig FE-Monitor: * *FE-Monitor: monitor_changed RandRFunc *FE-Monitor: monitor_enabled RandRFunc KillModule FvwmEvent FE-Monitor Module FvwmEvent FE-Monitor
هنگامی که مثلاً رویداد monitor_changed رخ میدهد، تابع RandRFunc اجرا میشود که نام مانیتور به عنوان آرگومان اول و نام رویداد مانیتور به عنوان آرگومان دوم به آن ارسال میشود. به این ترتیب در صورت نیاز میتوان تطبیقهای بیشتری انجام داد.
NOTE: استفاده از PassID با پیکربندیای که شامل خطوط _monitor باشد کار نخواهد کرد زیرا شناسهای برای بازگرداندن وجود ندارد. اگر PassID همچنان مورد نیاز است، رویدادهای مانیتور را به پیکربندی مستقل FvwmEvent خود تفکیک کنید.
رویداد echo هر زمان که Fvwm دستور Echo را دریافت کند تولید میشود.
نکته: رویداد enter_window زمانی رخ میدهد که نشانگر وارد یک پنجره میشود. با گزینه -passid، شناسه آن پنجره به fvwm ارسال میشود. رویداد enter_window همچنین زمانی که نشانگر یک پنجره را ترک کرده و به پنجره ریشه (root window) میرود نیز تولید میشود. در این حالت، شناسه ارسالی 0 است.
نکته: هنگام رسیدن رویداد shutdown، ممکن است پیش از آنکه FvwmEvent بتواند اقدام مرتبط را فراخوانی کند متوقف و کشته (kill) شود.
*FvwmEvent: Delay 5
*FvwmEvent: StartDelay delay
تاریخچه (HISTORY)
این ماژول از FvwmAudio توسعه یافته است، که آن هم به نوبه خود به شدت مبتنی بر یک ماژول مشابه در Fvwm به نام FvwmSound توسط Mark Boyns بود. FvwmAudio صرفاً برنامه اصلی Mark را گرفت و آن را گسترش داد تا به اندازه کافی جامع باشد و با هر پخشکننده صوتی کار کند. به دلیل درخواستهای گوناگون برای انجام کارهای مشخص در هنگام رویدادهای خاص، FvwmEvent این امکان را یک گام فراتر برد و اکنون هر تابع fvwm را فراخوانی میکند. اگر از تابع Exec در fvwm استفاده شود، میتوان هر برنامه خارجی را با هر پارامتری فراخوانی کرد.
نویسندگان (AUTHORS)
| 2026-06-28 |