.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "XDOTOOL 1" .TH XDOTOOL 1 2026-03-15 "" "" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" xdotool \- ابزار خط فرمانی خودکارسازی X11 .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBxdotool\fR \fIcmd\fR \fIargs...\fR .PP نشانه‌گذاری: در برخی بخش‌های این مستندات از \fI[window]\fR برای مشخص کردن یک آرگومان اختیاری پنجره استفاده شده است. این حالت بدان معناست که در صورت مشخص نشدن آرگومان، مقدار پیش‌فرض آن "%1" خواهد بود. برای آشنایی با مفهوم "%1"، بخش "WINDOW STACK" را ببینید. .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBxdotool\fR به شما امکان می‌دهد ورودی صفحه‌کلید و فعالیت‌های موشواره را به‌صورت برنامه‌ریزی‌شده (یا دستی) شبیه‌سازی کنید، پنجره‌ها را جابه‌جا کرده و اندازه آن‌ها را تغییر دهید و موارد دیگر. این برنامه این کارها را با استفاده از افزونه XTEST در X11 و سایر توابع Xlib انجام می‌دهد. .PP پشتیبانی اولیه‌ای از Extended Window Manager Hints (که با نام‌های EWMH یا NetWM نیز شناخته می‌شود) وجود دارد. برای اطلاعات بیشتر بخش "EXTENDED WINDOW MANAGER HINTS" را ببینید..SH "دستورهای صفحه‌کلید (KEYBOARD COMMANDS)" .IX Header "KEYBOARD COMMANDS" .IP "\fBkey\fR \fI[options]\fR \fIkeystroke\fR [\fIkeystroke\fR ...]" 4 .IX Item "key [options] keystroke [keystroke ...]" گزینه‌ها: .RS 4 .IP "\fB\-\-window window\fR" 4 .IX Item "--window window" ارسال فشردن کلیدها به یک شناسه پنجره خاص. می‌توانید در اینجا از ارجاع‌های «WINDOW STACK» مانند «%1» و «%@» استفاده کنید. اگر پشته پنجره وجود داشته باشد، «%1» پیش‌فرض است، در غیر این صورت از پنجره فعلی استفاده می‌شود. .Sp همچنین ببینید: «SENDEVENT NOTES» و «WINDOW STACK» .IP \fB\-\-clearmodifiers\fR 4 .IX Item "--clearmodifiers" پاک‌سازی کلیدهای تبدیل (modifiers) پیش از ارسال کلیدها. بخش CLEARMODIFIERS را در زیر ببینید. .IP "\fB\-\-delay milliseconds\fR" 4 .IX Item "--delay milliseconds" تأخیر بین فشردن کلیدها. پیش‌فرض 12ms است. .RE .RS 4 .Sp تایپ یک کلید مشخص. نمونه‌ها شامل «alt+r»، «Control_L+J»، «ctrl+alt+n»، «BackSpace». .Sp به‌طور کلی، هر رشته معتبر X Keysym کار خواهد کرد. کلیدهای چندگانه با \*(Aq+\*(Aq از هم جدا می‌شوند. نام‌های مستعاری برای «alt»، «ctrl»، «shift»، «super» و «meta» وجود دارند که همگی به Foo_L نگاشت می‌شوند، مانند Alt_L و Control_L و غیره. .Sp در مواردی که صفحه‌کلید شما در عمل کلیدی را که می‌خواهید تایپ کنید ندارد، xdotool به‌طور خودکار یک کد کلید (keycode) استفاده‌نشده پیدا کرده و از آن برای تایپ کلید استفاده می‌کند. .Sp با توجه به «COMMAND CHAINING»، این دستور باقی‌مانده آرگومان‌ها را تا زمان مشاهده یک دستور جدید xdotool مصرف می‌کند، زیرا هیچ‌یک از دستورهای xdotool کلیدهای معتبری نیستند. .Sp مثال: ارسال کلید «F2» xdotool key F2 .Sp مثال: ارسال \*(Aqa\*(Aq با یک اکسنت روی آن (روی صفحه‌کلیدهای انگلیسی وجود ندارد، اما همچنان با xdotool کار می‌کند) xdotool key Aacute .Sp مثال: ارسال ctrl+l و سپس BackSpace به عنوان کلیدهای جداگانه: xdotool key ctrl+l BackSpace .Sp مثال: ارسال ctrl+c به تمام پنجره‌های منطبق با عنوان \*(Aqgdb\*(Aq (بخش «COMMAND CHAINING» را ببینید) xdotool search \-\-name gdb key ctrl+c .RE .IP "\fBkeydown\fR \fI[options]\fR \fIkeystroke\fR" 4 .IX Item "keydown [options] keystroke" مشابه بالا، با این تفاوت که تنها رویدادهای فشردن کلید (keydown / press) ارسال می‌شوند. .IP "\fBkeyup\fR \fIkeystroke\fR" 4 .IX Item "keyup keystroke" مشابه بالا، با این تفاوت که تنها رویدادهای رها کردن کلید (keyup / release) ارسال می‌شوند. .IP "\fBtype\fR \fI[options]\fR \fIsomething to type\fR" 4 .IX Item "type [options] something to type" گزینه‌ها: .RS 4 .IP "\fB\-\-window windowid\fR" 4 .IX Item "--window windowid" ارسال فشردن کلیدها به یک شناسه پنجره خاص. بخش «SENDEVENT NOTES» را در زیر ببینید. در صورت تعیین نشدن پنجره، مقدار پیش‌فرض به پشته پنجره بستگی دارد. اگر پشته پنجره خالی باشد، تایپ با استفاده از XTEST در پنجره فعلی انجام می‌شود. در غیر این صورت، پیش‌فرض «%1» است (بخش «WINDOW STACK» را ببینید). .IP "\fB\-\-delay milliseconds\fR" 4 .IX Item "--delay milliseconds" تأخیر بین فشردن کلیدها. پیش‌فرض 12ms است. .IP \fB\-\-clearmodifiers\fR 4 .IX Item "--clearmodifiers" پاک‌سازی کلیدهای تبدیل (modifiers) پیش از ارسال کلیدها. بخش CLEARMODIFIERS را در زیر ببینید. .RE .RS 4 .Sp به گونه‌ای تایپ می‌کند که گویی خودتان آن را تایپ کرده‌اید. از خطوط جدید و تب‌ها (ASCII newline و tab) پشتیبانی می‌کند. هر کلید با یک تأخیر تعیین‌شده توسط گزینه \fB\-\-delay\fR جدا می‌شود. .Sp با توجه به «COMMAND CHAINING»، این دستور باقی‌مانده آرگومان‌ها را مصرف کرده و آن‌ها را تایپ می‌کند؛ به این معنی که هیچ دستوری پس از \*(Aqtype\*(Aq نمی‌تواند زنجیره شود. .Sp مثال: برای تایپ \*(AqHello world!\*(Aq این‌گونه عمل کنید: xdotool type \*(AqHello world!\*(Aq .RE.SH "دستورهای ماوس (MOUSE COMMANDS)" .IX Header "MOUSE COMMANDS" .IP "\fBmousemove\fR \fI[options]\fR \fIx y OR \*(Aqrestore\*(Aq\fR" 4 .IX Item "mousemove [options] x y OR 'restore'" ماوس را به مختصات مشخص X و Y در صفحه حرکت می‌دهد. .Sp اگر به‌جای مختصات X و Y مقدار \*(Aqrestore\*(Aq را مشخص کنید، می‌توانید ماوس را به مکان قبلی ببرید. بازیابی مکان تنها در صورتی کار می‌کند که پیش‌تر در همین فراخوانی دستور، ماوس را جابه‌جا کرده باشید. علاوه بر این، با گزینهٔ \&\-\-window کار نمی‌کند. .Sp برای مثال، جهت کلیک روی گوشهٔ بالا\-چپ صفحه و سپس بازگرداندن ماوس به مکان اولیه پیش از جابه‌جا کردن آن، از این دستور استفاده کنید: xdotool mousemove 0 0 click 1 mousemove restore .RS 4 .IP "\fB\-\-window WINDOW\fR" 4 .IX Item "--window WINDOW" پنجره‌ای را برای جابه‌جایی نسبت به آن مشخص می‌کند. مختصات 0,0 در بالا سمت چپ پنجرهٔ انتخابی شما قرار دارد. .Sp ارجاعات "WINDOW STACK" مانند \f(CW%1\fR و %@ در اینجا معتبر هستند؛ هرچند استفاده از %@ احتمالاً منطقی نیست. .IP "\fB\-\-screen SCREEN\fR" 4 .IX Item "--screen SCREEN" ماوس را به صفحهٔ نمایش مشخص‌شده منتقل می‌کند. این گزینه تنها زمانی کاربرد دارد که چندین صفحهٔ نمایش داشته باشید و از Xinerama استفاده نکنید. .Sp پیش‌فرض، صفحهٔ فعلی است. در صورت مشخص کردن \-\-window، پرچم \-\-screen نادیده گرفته می‌شود. .IP \fB\-\-polar\fR 4 .IX Item "--polar" استفاده از مختصات قطبی. این گزینه \*(Aqx\*(Aq را به زاویه (بر حسب درجه، ۰\-۳۶۰ و غیره) و \*(Aqy\*(Aq را به فاصله تبدیل می‌کند. .Sp چرخش از \*(Aqup\*(Aq (۰ درجه) آغاز شده و در جهت عقربه‌های ساعت می‌چرخد: ۹۰ = راست، ۱۸۰ = پایین، ۲۷۰ = چپ. .Sp مبدأ به‌طور پیش‌فرض مرکز صفحهٔ فعلی است. اگر یک \&\-\-window مشخص کنید، مبدأ مرکز آن پنجره خواهد بود. .IP \fB\-\-clearmodifiers\fR 4 .IX Item "--clearmodifiers" بخش CLEARMODIFIERS را ببینید. .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست جابه‌جایی ماوس، تا زمان جابه‌جایی واقعی ماوس منتظر می‌ماند. اگر هیچ حرکتی لازم نباشد، منتظر نخواهد ماند. این گزینه برای اسکریپت‌هایی مفید است که به کامل شدن کنش‌ها پیش از ادامهٔ کار وابسته‌اند. .Sp نکته: برنامه صرفاً تا زمان انجام هرگونه حرکتی از ماوس منتظر می‌ماند، نه لزوماً رسیدن واقعی آن به مقصد مورد نظر شما. برخی از برنامه‌ها مکان‌نمای ماوس را در نواحی خاصی از صفحه قفل می‌کنند، بنابراین در حالت کلی، انتظار برای هرگونه حرکت بهتر از انتظار برای یک هدف مشخص است. .RE .RS 4 .RE .IP "\fBmousemove_relative\fR [options] \fIx\fR \fIy\fR" 4 .IX Item "mousemove_relative [options] x y" ماوس را به اندازهٔ x,y پیکسل نسبت به موقعیت فعلی مکان‌نمای ماوس حرکت می‌دهد. .RS 4 .IP \fB\-\-polar\fR 4 .IX Item "--polar" استفاده از مختصات قطبی. این گزینه \*(Aqx\*(Aq را به زاویه (بر حسب درجه، ۰\-۳۶۰ و غیره) و \*(Aqy\*(Aq را به فاصله تبدیل می‌کند. .Sp چرخش از \*(Aqup\*(Aq (۰ درجه) آغاز شده و در جهت عقربه‌های ساعت می‌چرخد: ۹۰ = راست، ۱۸۰ = پایین، ۲۷۰ = چپ. .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست جابه‌جایی ماوس، تا زمان جابه‌جایی واقعی ماوس منتظر می‌ماند. اگر هیچ حرکتی لازم نباشد، منتظر نخواهد ماند. این گزینه برای اسکریپت‌هایی مفید است که به کامل شدن کنش‌ها پیش از ادامهٔ کار وابسته‌اند. .Sp توجه داشته باشید که برنامه صرفاً تا زمان انجام هرگونه حرکتی از ماوس منتظر می‌ماند، نه لزوماً رسیدن واقعی آن به مقصد مورد نظر شما. برخی از برنامه‌ها مکان‌نمای ماوس را در نواحی خاصی از صفحه قفل می‌کنند، بنابراین در حالت کلی، انتظار برای هرگونه حرکت بهتر از انتظار برای یک هدف مشخص است. .IP \fB\-\-clearmodifiers\fR 4 .IX Item "--clearmodifiers" بخش CLEARMODIFIERS را ببینید. .RE .RS 4 .RE .IP "\fBclick\fR \fI[options]\fR \fIbutton\fR" 4 .IX Item "click [options] button" یک کلیک ارسال می‌کند، یعنی یک mousedown و در ادامه یک mouseup برای دکمهٔ داده‌شده با تأخیری کوتاه میان این دو (در حال حاضر ۱۲ میلی‌ثانیه). .Sp دکمه‌ها عموماً بدین شکل نگاشت می‌شوند: کلیک چپ ۱، کلیک وسط ۲، کلیک راست ۳، اسکرول به بالا ۴، اسکرول به پایین ۵. .RS 4 .IP \fB\-\-clearmodifiers\fR 4 .IX Item "--clearmodifiers" پاک‌سازی کلیدهای تبدیل (modifiers) پیش از کلیک کردن. بخش CLEARMODIFIERS را در زیر ببینید. .IP "\fB\-\-repeat\fR REPEAT" 4 .IX Item "--repeat REPEAT" تعداد دفعات کلیک را مشخص می‌کند. پیش‌فرض ۱ است. برای دابل‌کلیک، از \&\*(Aq\-\-repeat 2\*(Aq استفاده کنید. .IP "\fB\-\-delay\fR MILLISECONDS" 4 .IX Item "--delay MILLISECONDS" میزان تأخیر بین کلیک‌ها را به میلی‌ثانیه مشخص می‌کند. در صورتی که پرچم \fI\-\-repeat\fR روی ۱ (پیش‌فرض) تنظیم شده باشد، این گزینه استفاده نمی‌شود. .IP "\fB\-\-window\fR WINDOW" 4 .IX Item "--window WINDOW" پنجره‌ای را برای ارسال کلیک به آن مشخص می‌کند. برای نکات و هشدارها بخش "SENDEVENT NOTES" را در زیر ببینید. هنگام تولید رویداد، از موقعیت فعلی ماوس استفاده می‌کند. .Sp اگر پنجره‌ای مشخص نشود، مقدار پیش‌فرض به پشتهٔ پنجره‌ها بستگی دارد. اگر پشتهٔ پنجره‌ها خالی باشد، با استفاده از XTEST در پنجرهٔ فعلی اعمال می‌شود. در غیر این صورت، پیش‌فرض "%1" خواهد بود (بخش "WINDOW STACK" را ببینید). .RE .RS 4 .RE .IP "\fBmousedown\fR \fI[options]\fR \fIbutton\fR" 4 .IX Item "mousedown [options] button" مشابه \fBclick\fR، با این تفاوت که تنها فشردن کلید ماوس (mousedown) ارسال می‌شود. .IP "\fBmouseup\fR \fI[options]\fR \fIbutton\fR" 4 .IX Item "mouseup [options] button" مشابه \fBclick\fR، با این تفاوت که تنها رها کردن کلید ماوس (mouseup) ارسال می‌شود. .IP "\fBgetmouselocation\fR \fI[\-\-shell]\fR" 4 .IX Item "getmouselocation [--shell]" مقادیر x، y، screen و شناسهٔ پنجرهٔ (window id) مکان‌نمای ماوس را در خروجی چاپ می‌کند. در صورتی که چندین نمایشگر داشته باشید و از Xinerama استفاده نکنید، شماره‌های screen غیرصفر خواهند بود. .Sp این دستور پشتهٔ پنجره‌ها را با شناسهٔ پنجره‌ای که مستقیماً زیر ماوس قرار دارد به‌روزرسانی می‌کند. .RS 4 .IP \fB\-\-shell\fR 4 .IX Item "--shell" باعث می‌شود getmouselocation داده‌های شل را به قالبی که با eval قابل اجرا باشد در خروجی چاپ کند. مثال: .Sp .Vb 5 \& % xdotool getmouselocation \-\-shell \& X=880 \& Y=443 \& SCREEN=0 \& WINDOW=16777250 \& \& % eval $(xdotool getmouselocation \-\-shell) \& % echo $X,$Y \& 714,324 .Ve .RE .RS 4 .RE .IP "\fBbehave_screen_edge\fR \fI[options]\fR \fIwhere\fR \fIcommand ...\fR" 4 .IX Item "behave_screen_edge [options] where command ..." پیوند دادن یک کنش به رویدادهایی که در آن‌ها ماوس به لبه یا گوشهٔ صفحه برخورد می‌کند. .Sp گزینه‌ها عبارت‌اند از: .RS 4 .IP "\fI\-\-delay MILLISECONDS\fR" 4 .IX Item "--delay MILLISECONDS" تأخیر به میلی‌ثانیه پیش از اجرای دستور. این گزینه به شما امکان می‌دهد تعیین کنید که ماوس باید پیش از اجرای دستور، برای مدت کوتاهی در لبه یا گوشه نگه داشته شود. اگر پیش از سپری شدن این زمان تأخیر از لبه یا گوشه خارج شوید، زمان بازنشانی خواهد شد. .IP "\fI\-\-quiesce MILLISECONDS\fR" 4 .IX Item "--quiesce MILLISECONDS" تأخیر به میلی‌ثانیه پیش از اینکه دستور بعدی بتواند اجرا شود. این گزینه به جلوگیری از اجرای ناخواسته و مکرر دستور شما کمک می‌کند؛ به‌ویژه زمانی که یک \-\-delay بسیار کوتاه دارید (مانند مقدار پیش‌فرض ۰) بسیار مفید است. .RE .RS 4 .Sp گاه‌شمار رویداد .Sp .Vb 5 \& * ماوس به یک لبه یا گوشه برخورد می‌کند. \& * اگر delay غیرصفر باشد، ماوس باید تا پایان زمان delay در این لبه یا گوشه بماند. \& * اگر همچنان در لبه/گوشه باشد، فعال‌سازی رخ می‌دهد. \& * اگر quiesce غیرصفر باشد، یک دورهٔ سردسازی (cool\-down) وجود دارد که در آن \& فعال‌سازی بعدی نمی‌تواند رخ دهد .Ve .Sp مقادیر معتبر \*(Aqwhere\*(Aq عبارت‌اند از: .IP left 4 .IX Item "left" .PD 0 .IP top\-left 4 .IX Item "top-left" .IP top 4 .IX Item "top".IP top\-right 4 .IX Item "top-right" .IP right 4 .IX Item "right" .IP bottom\-left 4 .IX Item "bottom-left" .IP bottom 4 .IX Item "bottom" .IP bottom\-right 4 .IX Item "bottom-right" .PD .RE .RS 4 .Sp مثال‌ها: # فعال‌سازی google\-chrome هنگام حرکت دادن موشواره به گوشه پایین\-چپ: xdotool behave_screen_edge bottom\-left \e search \-\-class google\-chrome windowactivate .Sp .Vb 2 \& # رفتن به فضای کاری بعدی (راست). عملکرد صحیح در GNOME (metacity و compiz) شناخته شده است \& xdotool behave_screen_edge \-\-delay 500 bottom\-right key XF86Forward \& \& # فعال‌سازی firefox و جستجوی وب در زبانه‌ای تازه برای متن درون کلیپ‌بورد \& xdotool behave_screen_edge \-\-delay 1000 top\-left \e \& search \-\-classname Navigator \e \& windowactivate \-\-sync key \-\-delay 250 ctrl+t ctrl+k ctrl+v Return .Ve .RE .SH "دستورهای پنجره (WINDOW COMMANDS)" .IX Header "WINDOW COMMANDS" .IP "\fBsearch\fR \fI[options]\fR \fIpattern\fR" 4 .IX Item "search [options] pattern" جستجوی پنجره‌هایی با عنوان‌ها، نام‌ها، یا کلاس‌ها با استفاده از یک الگوی عبارت باقاعده (regular expression). خروجی، فهرستی خط‌به‌خط از شناسه‌های پنجره X است. اگر از «زنجیره‌سازی دستورها» (COMMAND CHAINING) استفاده می‌کنید، دستور search تنها در صورتی شناسه‌های پنجره را در stdout می‌نویسد که آخرین (یا تنها) دستور در زنجیره باشد؛ در غیر این صورت، خروجی تولید نخواهد کرد (ساکت می‌ماند). .Sp نتیجه برای دستورهای زنجیره‌ای بعدی در پشته پنجره (window stack) ذخیره می‌شود. برای جزئیات، بخش‌های «پشته پنجره (WINDOW STACK)» و «زنجیره‌سازی دستورها (COMMAND CHAINING)» را ببینید. .Sp الگوها عبارات باقاعده تعمیم‌یافته پازیکس (POSIX ERE) هستند؛ به عنوان مثال "Chrom(e|ium)$" برای پنجره‌هایی که به "Chrome" یا "Chromium" ختم می‌شوند. برای جزئیات نحو، \fBregex\fR\|(7) را ببینید. تطبیق‌ها به بزرگی و کوچکی حروف حساس نیستند (case\-insensitive). .Sp گزینه‌های پیش‌فرض عبارتند از \f(CW\*(C`\-\-name \-\-class \-\-classname \-\-role\*(C'\fR (مگر اینکه یک یا چند مورد از \-\-name، \-\-class، \-\-classname یا \-\-role را مشخص کنید). .Sp گزینه‌های موجود عبارتند از: .RS 4 .IP \fB\-\-class\fR 4 .IX Item "--class" تطبیق با کلاس پنجره (window class). .IP \fB\-\-classname\fR 4 .IX Item "--classname" تطبیق با نام‌کلاس پنجره (window classname). .IP \fB\-\-role\fR 4 .IX Item "--role" تطبیق با نقش پنجره (window role). .IP "\fB\-\-maxdepth\fR N" 4 .IX Item "--maxdepth N" تنظیم عمق جستجوی بازگشتی/فرزند. مقدار پیش‌فرض \-1 است، به این معنی که نامحدود است. مقدار 0 یعنی بدون عمق، و تنها پنجره‌های ریشه (root windows) جستجو خواهند شد. اگر فقط پنجره‌های بالاترین سطح (toplevel) را می‌خواهید، maxdepth را روی 1 (یا بسته به اینکه مدیر پنجره شما چگونه پنجره‌ها را تزئین و کادربندی می‌کند، روی 2) تنظیم کنید. .IP \fB\-\-name\fR 4 .IX Item "--name" تطبیق با نام پنجره. این همان رشته‌ای است که در نوار عنوان پنجره نمایش داده می‌شود. .IP \fB\-\-onlyvisible\fR 4 .IX Item "--onlyvisible" نمایش تنها پنجره‌های مرئی در نتایج. این به معنای پنجره‌هایی با وضعیت نگاشت IsViewable است. .IP "\fB\-\-pid PID\fR" 4 .IX Item "--pid PID" تطبیق پنجره‌هایی که متعلق به یک شناسه فرایند (PID) مشخص هستند. این گزینه ممکن است برای برخی برنامه‌های X که این فراداده را روی پنجره‌هایشان تنظیم نمی‌کنند، کار نکند. .IP "\fB\-\-screen N\fR" 4 .IX Item "--screen N" انتخاب پنجره‌ها تنها روی یک صفحه نمایش خاص. پیش‌فرض، جستجو در تمام صفحه‌ها است. تنها زمانی معنادار است که چند نمایشگر داشته باشید و از Xinerama استفاده نکنید. .IP "\fB\-\-desktop N\fR" 4 .IX Item "--desktop N" تنها تطبیق پنجره‌ها روی یک میزکار (desktop) مشخص. \*(AqN\*(Aq یک عدد است. پیش‌فرض جستجو در تمام میزکارها است. .IP "\fB\-\-limit N\fR" 4 .IX Item "--limit N" توقف جستجو پس از یافتن N پنجره منطبق. مشخص کردن یک حد، در صورتی که فقط چند نتیجه بخواهید، به افزایش سرعت جستجوی شما کمک خواهد کرد. .Sp حالت پیش‌فرض بدون محدودیت جستجو است (که معادل \*(Aq\-\-limit 0\*(Aq می‌باشد). .IP \fB\-\-title\fR 4 .IX Item "--title" منسوخ شده (DEPRECATED). به \-\-name مراجعه کنید. .IP \fB\-\-all\fR 4 .IX Item "--all" الزام به برآورده شدن تمامی شرایط. برای مثال: .Sp .Vb 1 \& xdotool search \-\-all \-\-pid 1424 \-\-name "Hello World" .Ve .Sp این دستور تنها پنجره‌هایی را منطبق می‌کند که نام آن‌ها "Hello World" بوده و متعلق به pid 1424 باشند. .IP \fB\-\-any\fR 4 .IX Item "--any" تطبیق پنجره‌هایی که با هر یک از شرایط مطابقت دارند (از نظر منطقی، \*(Aqor\*(Aq یا «یا»). این حالت به صورت پیش‌فرض فعال است. برای مثال: .Sp .Vb 1 \& xdotool search \-\-any \-\-pid 1424 \-\-name "Hello World" .Ve .Sp این دستور هر پنجره متعلق به pid 1424 یا پنجره‌هایی با نام "Hello World" را تطبیق می‌دهد. .IP "\fB\-\-sync \fR" 4 .IX Item "--sync " مسدود کردن تا زمانی که نتیجه‌ای حاصل شود. این گزینه هنگامی مفید است که برنامه‌ای را راه‌اندازی می‌کنید و می‌خواهید تا زمان نمایان شدن پنجره برنامه منتظر بمانید. برای مثال: .Sp .Vb 2 \& google\-chrome & \& xdotool search \-\-sync \-\-onlyvisible \-\-class "google\-chrome" .Ve .RE .RS 4 .RE .IP \fBselectwindow\fR 4 .IX Item "selectwindow" دریافت شناسه پنجره (برای یک کلاینت) با کلیک کردن روی آن. برای اسکریپت‌هایی که می‌خواهند از شما انسان‌ها بپرسند روی کدام پنجره باید عملیات انجام شود، کاربردی است. برای مثال، بستن اجباری (kill) یک پنجره با کلیک روی آن: .Sp .Vb 1 \& xdotool selectwindow windowkill .Ve .IP "\fBbehave\fR \fIwindow\fR \fIaction\fR \fIcommand ...\fR" 4 .IX Item "behave window action command ..." پیوند دادن یک کنش (action) به یک رویداد روی یک پنجره. این کار به شما امکان می‌دهد تا هر زمان که یک رویداد منطبق رخ داد، دستورهای اضافی xdotool را اجرا کنید. .Sp دستوری که در نتیجه این رفتار اجرا می‌شود، با متغیر \f(CW%1\fR به عنوان پنجره‌ای که روی آن کنش انجام شده اجرا خواهد شد. مثال‌ها در ادامه پس از فهرست رویدادها آورده شده‌اند. .Sp رویدادهای معتبر عبارتند از: .RS 4 .IP \fBmouse\-enter\fR 4 .IX Item "mouse-enter" هنگام ورود موشواره به پنجره برانگیخته می‌شود. برای مقایسه، این مشابه رویدادهای \*(Aqmouse over\*(Aq در جاوااسکریپت (javascript) است. .IP \fBmouse\-leave\fR 4 .IX Item "mouse-leave" هنگام خروج موشواره از پنجره برانگیخته می‌شود. این رویداد برعکس \*(Aqmouse\-enter\*(Aq است. .IP \fBmouse\-click\fR 4 .IX Item "mouse-click" هنگام کلیک موشواره برانگیخته می‌شود؛ به طور مشخص، زمانی که کلید موشواره رها می‌شود. .IP \fBfocus\fR 4 .IX Item "focus" هنگامی که پنجره فوکوس ورودی (input focus) را به دست می‌آورد برانگیخته می‌شود. .IP \fBblur\fR 4 .IX Item "blur" هنگامی که پنجره فوکوس را از دست می‌دهد برانگیخته می‌شود. .RE .RS 4 .Sp مثال‌ها: .Sp .Vb 3 \& # چاپ موقعیت مکان‌نما هر زمان که موشواره وارد پنجره‌ای شود که هم‌اکنون مرئی است: \& xdotool search \-\-onlyvisible . behave %@ mouse\-enter getmouselocation \& \& # چاپ عنوان و pid پنجره هر زمان که یک xterm فوکوس دریافت می‌کند \& xdotool search \-\-class xterm behave %@ focus getwindowname getwindowpid \& \& # شبیه‌سازی قابلیت focus\-follows\-mouse (فوکوس به دنبال موشواره) \& xdotool search . behave %@ mouse\-enter windowfocus .Ve .RE.IP "\fBgetwindowpid\fR \fI[window]\fR" 4 .IX Item "getwindowpid [window]" چاپ PID مالک پنجره مشخص‌شده. این کار نیازمند همکاری برنامه‌ای است که مالک پنجره است و ممکن است برای همه پنجره‌ها کار نکند. این دستور از ویژگی _NET_WM_PID پنجره استفاده می‌کند. برای اطلاعات بیشتر، بخش "EXTENDED WINDOW MANAGER HINTS" را در ادامه ببینید. .Sp اگر پنجره‌ای مشخص نشود، مقدار پیش‌فرض \*(Aq%1\*(Aq است. اگر هیچ پنجره‌ای در پشته موجود نباشد، این دستور با خطا مواجه می‌شود. برای جزئیات بیشتر "WINDOW STACK" را ببینید. .Sp مثال: یافتن PID برای تمام پنجره‌های xterm: xdotool search \-\-class xterm getwindowpid %@ .IP "\fBgetwindowname\fR \fI[window]\fR" 4 .IX Item "getwindowname [window]" چاپ نام پنجره مشخص‌شده، که به عنوان عنوان (title) نیز شناخته می‌شود. این متنی است که توسط مدیر پنجره شما در نوار عنوان پنجره نمایش داده می‌شود. .Sp اگر پنجره‌ای مشخص نشود، مقدار پیش‌فرض \*(Aq%1\*(Aq است. اگر هیچ پنجره‌ای در پشته موجود نباشد، این یک خطا خواهد بود. برای جزئیات بیشتر "WINDOW STACK" را ببینید. .IP "\fBgetwindowgeometry\fR [options] \fI[window]\fR" 4 .IX Item "getwindowgeometry [options] [window]" چاپ ابعاد و موقعیت (geometry) یک پنجره. این مقادیر شامل x، y، عرض، ارتفاع، و شماره صفحه نمایش هستند. .RS 4 .IP \fB\-\-shell\fR 4 .IX Item "--shell" چاپ مقادیر با قالبی مناسب برای استفاده در دستور \*(Aqeval\*(Aq پوسته. .RE .RS 4 .RE .IP "\fBgetwindowfocus\fR [\-f]" 4 .IX Item "getwindowfocus [-f]" شناسه پنجره‌ای (window id) که در حال حاضر فوکوس دارد را چاپ می‌کند. نتیجه در پشته پنجره ذخیره می‌شود. برای جزئیات بیشتر "WINDOW STACK" را ببینید. .Sp اگر پنجره فعلی فاقد ویژگی WM_CLASS باشد، فرض می‌کنیم که یک پنجره سطح‌بالای (top\-level) معمولی نیست و والدها را به سمت بالا پیمایش می‌کنیم تا پنجره‌ای با ویژگی WM_CLASS پیدا کرده و شناسه آن پنجره را بازگردانیم. .Sp اگر واقعاً پنجره‌ای را می‌خواهید که اکنون فوکوس دارد و اهمیتی نمی‌دهید که ویژگی WM_CLASS را داشته باشد یا نه، از \*(Aqgetwindowfocus \-f\*(Aq استفاده کنید. .IP "\fBwindowsize\fR [options] [window] width height" 4 .IX Item "windowsize [options] [window] width height" تنظیم اندازه پنجره داده‌شده. اگر پنجره‌ای مشخص نشود، \f(CW%1\fR پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .Sp استفاده از درصد برای عرض و ارتفاع معتبر است. درصدها نسبت به ابعاد صفحه‌ای که پنجره در آن قرار دارد محاسبه می‌شوند. به عنوان مثال، برای این‌که عرض پنجره برابر با تمام عرض صفحه اما ارتفاع آن نصف باشد: .Sp .Vb 1 \& xdotool windowsize 100% 50% .Ve .Sp درصدها همراه با گزینه \-\-usehints نیز معتبر هستند و کماکان به معنای عرض پیکسلی بر حسب اندازه صفحه می‌باشند. .Sp گزینه‌های موجود عبارتند از: .RS 4 .IP \fB\-\-usehints\fR 4 .IX Item "--usehints" استفاده از مشخصه‌های راهنمای اندازه پنجره (در صورت موجود بودن) برای تعیین عرض و ارتفاع. این گزینه در ترمینال‌ها برای تنظیم اندازه بر اساس سطر/ستون متن به جای پیکسل کاربرد دارد. .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست تغییر اندازه پنجره، منتظر می‌ماند تا اندازه پنجره واقعاً تغییر کند. اگر تغییری لازم نباشد، معطل نمی‌ماند. این گزینه برای اسکریپت‌هایی مفید است که به پایان عملیات قبل از رفتن به مرحله بعد وابستگی دارند. .Sp نکته: از آنجا که بسیاری از مدیران پنجره ممکن است درخواست اصلی تغییر اندازه را نادیده بگیرند یا تغییر دهند، این دستور منتظر می‌ماند تا اندازه پنجره نسبت به اندازه اولیه‌اش تغییر یابد، نه لزوماً دقیقاً به اندازه درخواست‌شده. .RE .RS 4 .Sp مثال: برای تنظیم یک ترمینال به اندازه 80x24 نویسه، می‌توانید از این دستور استفاده کنید: xdotool windowsize \-\-usehints 80 24 .RE .IP "\fBwindowmove\fR \fI[options]\fR \fI[window]\fR \fIx\fR \fIy\fR" 4 .IX Item "windowmove [options] [window] x y" انتقال پنجره به موقعیت داده‌شده. اگر پنجره‌ای مشخص نشود، \f(CW%1\fR مقدار پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .Sp اگر مختصات x ارائه‌شده دقیقاً نویسه \*(Aqx\*(Aq باشد، موقعیت فعلی x پنجره دست‌نخورده باقی می‌ماند. همین موضوع برای \*(Aqy\*(Aq نیز صدق می‌کند. .Sp مثال‌ها: .Sp .Vb 4 \& xdotool getactivewindow windowmove 100 100 # Moves to 100,100 \& xdotool getactivewindow windowmove x 100 # Moves to x,100 \& xdotool getactivewindow windowmove 100 y # Moves to 100,y \& xdotool getactivewindow windowmove 100 y # Moves to 100,y .Ve .Sp استفاده از درصد برای عرض و ارتفاع معتبر است. آن‌ها نسبت به ابعاد صفحه‌ای که پنجره در آن قرار دارد سنجیده می‌شوند. برای مثال، برای قرار دادن پنجره در کل عرض صفحه اما نصف ارتفاع: .Sp .Vb 1 \& xdotool windowmove 100% 50% .Ve .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست انتقال پنجره، منتظر می‌ماند تا پنجره واقعاً منتقل شود. اگر جابجایی لازم نباشد، معطل نمی‌ماند. این گزینه برای اسکریپت‌هایی مفید است که به پایان عملیات قبل از رفتن به دستور بعدی وابسته هستند. .IP \fB\-\-relative\fR 4 .IX Item "--relative" انجام جابجایی به صورت نسبی و با توجه به موقعیت فعلی پنجره. .RE .RS 4 .RE .IP "\fBwindowfocus\fR \fI[options]\fR \fI[window]\fR" 4 .IX Item "windowfocus [options] [window]" فوکوس کردن روی یک پنجره. اگر پنجره‌ای مشخص نشود، \f(CW%1\fR پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .Sp از تابع XSetInputFocus استفاده می‌کند که ممکن است توسط برخی برنامه‌ها یا مدیران پنجره نادیده گرفته شود. .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست فوکوس پنجره، منتظر می‌ماند تا پنجره واقعاً فوکوس را دریافت کند. این گزینه برای اسکریپت‌هایی که نیاز دارند قبل از ادامه کار عملیات به طور کامل اعمال شود مفید است. .RE .RS 4 .RE .IP "\fBwindowmap\fR \fI[options]\fR \fI[window]\fR" 4 .IX Item "windowmap [options] [window]" نگاشت (Map) یک پنجره. در اصطلاحات X11، نگاشت پنجره به معنای نمایان و مرئی ساختن آن بر روی صفحه نمایش است. اگر پنجره‌ای مشخص نشود، \f(CW%1\fR پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از درخواست نگاشت پنجره، منتظر می‌ماند تا پنجره واقعاً نگاشت (مرئی) شود. این گزینه برای اسکریپت‌هایی که به اتمام عملیات قبل از ادامه کار نیاز دارند مفید است. .RE .RS 4 .RE .IP "\fBwindowminimize\fR \fI[options]\fR \fI[window]\fR" 4 .IX Item "windowminimize [options] [window]" کمینه‌سازی یک پنجره. در اصطلاحات X11، به این کار \*(Aqiconify\*(Aq گفته می‌شود. اگر پنجره‌ای مشخص نشود، \f(CW%1\fR مقدار پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از درخواست کمینه‌سازی پنجره، منتظر می‌ماند تا پنجره واقعاً کمینه شود. این گزینه برای اسکریپت‌هایی که به پایان عملیات قبل از رفتن به مرحله بعد وابسته هستند کاربرد دارد. .RE .RS 4 .RE .IP "\fBwindowraise\fR \fI[window_id=%1]\fR" 4 .IX Item "windowraise [window_id=%1]" بالا آوردن پنجره به بالای پشته (رو آمدن پنجره). این قابلیت ممکن است در همه مدیران پنجره کار نکند. اگر پنجره‌ای داده نشود، \f(CW%1\fR مقدار پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .IP "\fBwindowlower\fR \fI[window_id=%1]\fR" 4 .IX Item "windowlower [window_id=%1]" پایین بردن پنجره به انتهای پشته (زیر رفتن پنجره). این قابلیت ممکن است در همه مدیران پنجره کار نکند. اگر پنجره‌ای داده نشود، \f(CW%1\fR مقدار پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .IP "\fBwindowreparent\fR \fI[source_window]\fR \fIdestination_window\fR" 4 .IX Item "windowreparent [source_window] destination_window" تغییر والد یک پنجره (Reparent). این دستور پنجره \fIsource_window\fR را منتقل می‌کند تا به عنوان فرزند پنجره \&\fIdestination_window\fR قرار گیرد. اگر مبدأ مشخص نشود، \f(CW%1\fR پیش‌فرض است. ارجاعات پنجره در "WINDOW STACK" (مانند \f(CW%1\fR) برای هر دو پنجره \fIsource_window\fR و \fIdestination_window\fR معتبر هستند. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید. .IP "\fBwindowclose\fR \fI[window]\fR" 4 .IX Item "windowclose [window]" بستن یک پنجره. این اقدام پنجره را از بین می‌برد (destroy می‌کند)، اما تلاشی برای متوقف ساختن و بستن (kill کردن) کلاینت کنترل‌کننده آن انجام نمی‌دهد. اگر پنجره‌ای مشخص نشود، \f(CW%1\fR پیش‌فرض است. برای جزئیات بیشتر "WINDOW STACK" و "COMMAND CHAINING" را ببینید..IP "\fBwindowquit\fR \fI[window]\fR" 4 .IX Item "windowquit [window]" بستن آرام و با قاعده پنجره (gracefully). این عمل درخواستی می‌فرستد که به برنامه اجازه می‌دهد سازوکارهای تأیید بستن را اعمال کند. اگر پنجره‌ای مشخص نشود، پیش‌فرض \f(CW%1\fR است. برای جزئیات بیشتر به بخش‌های «WINDOW STACK» و «COMMAND CHAINING» مراجعه کنید. .IP "\fBwindowkill\fR \fI[window]\fR" 4 .IX Item "windowkill [window]" کشتن (kill) یک پنجره. این عمل پنجره را نابود کرده و کلاینت کنترل‌کننده آن را از بین می‌برد (kill می‌کند). اگر پنجره‌ای مشخص نشود، پیش‌فرض \f(CW%1\fR است. برای جزئیات بیشتر به بخش‌های «WINDOW STACK» و «COMMAND CHAINING» مراجعه کنید. .IP "\fBwindowunmap\fR \fI[options]\fR \fI[window_id=%1]\fR" 4 .IX Item "windowunmap [options] [window_id=%1]" برداشتن نگاشت پنجره (unmap)، به طوری که دیگر روی صفحه نمایش ظاهر نشود. اگر پنجره‌ای مشخص نشود، پیش‌فرض \f(CW%1\fR است. برای جزئیات بیشتر به بخش‌های «WINDOW STACK» و «COMMAND CHAINING» مراجعه کنید. .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست unmap شدن پنجره، منتظر می‌ماند تا پنجره واقعاً unmap (پنهان) شود. این گزینه برای اسکریپت‌هایی که برای رفتن به مرحله بعد به تکمیل عملیات وابسته‌اند، مفید است. .RE .RS 4 .RE .IP "\fBset_window\fR \fI[options]\fR \fI[windowid=%1]\fR" 4 .IX Item "set_window [options] [windowid=%1]" تنظیم مشخصه‌های یک پنجره. اگر پنجره‌ای مشخص نشود، پیش‌فرض \f(CW%1\fR است. برای جزئیات بیشتر به بخش‌های «WINDOW STACK» و «COMMAND CHAINING» مراجعه کنید. .Sp گزینه‌ها: .RS 4 .IP "\fB\-\-name newname\fR" 4 .IX Item "--name newname" تنظیم WM_NAME پنجره (معمولاً همان عنوان پنجره). .IP "\fB\-\-icon\-name newiconname\fR" 4 .IX Item "--icon-name newiconname" تنظیم WM_ICON_NAME پنجره (معمولاً عنوان پنجره هنگام کمینه‌شدن). .IP "\fB\-\-role newrole\fR" 4 .IX Item "--role newrole" تنظیم WM_WINDOW_ROLE پنجره. .IP "\fB\-\-classname newclassname\fR" 4 .IX Item "--classname newclassname" تنظیم نام کلاس (class name) پنجره (با کلاس پنجره اشتباه گرفته نشود). .IP "\fB\-\-class newclass\fR" 4 .IX Item "--class newclass" تنظیم کلاس پنجره (با نام کلاس پنجره اشتباه گرفته نشود). .IP "\fB\-\-urgency value\fR" 4 .IX Item "--urgency value" تنظیم نشان اضطرار (urgency hint) پنجره. اگر مقدار 1 باشد، پنجره به عنوان اضطراری علامت‌گذاری می‌شود و مدیر پنجره به نحوی آن را برای جلب توجه کاربر برجسته می‌کند. اگر مقدار 0 باشد، پنجره به عنوان غیر اضطراری علامت‌گذاری می‌شود. .IP "\fB\-\-overrideredirect value\fR" 4 .IX Item "--overrideredirect value" تنظیم مقدار override_redirect پنجره. این مقدار نشانه‌ای برای مدیر پنجره است که آیا باید آن را مدیریت کند یا خیر. اگر مقدار هدایت 0 باشد، مدیر پنجره حاشیه‌ها را ترسیم کرده و با پنجره به طور عادی رفتار می‌کند. اگر مقدار 1 باشد، مدیر پنجره این پنجره را نادیده می‌گیرد. .Sp اگر این مقدار را تغییر دهید، ممکن است مدیر پنجره شما متوجه تغییر نشود تا زمانی که پنجره دوباره نگاشت (map) شود؛ بنابراین ممکن است بخواهید \*(Aqwindowunmap\*(Aq و \&\*(Aqwindowmap\*(Aq را اجرا کنید تا مدیر پنجره متوجه تغییرات شود. .RE .RS 4 .RE .SH "دستورهای میزکار و پنجره (DESKTOP AND WINDOW COMMANDS)" .IX Header "DESKTOP AND WINDOW COMMANDS" این دستورها از استاندارد EWMH پیروی می‌کنند. برای اطلاعات بیشتر بخش «EXTENDED WINDOW MANAGER HINTS» را ببینید. .IP "\fBwindowactivate\fR \fI[options]\fR \fI[window]\fR" 4 .IX Item "windowactivate [options] [window]" فعال‌سازی پنجره. این دستور با windowfocus متفاوت است: اگر پنجره روی میزکار دیگری باشد، به آن میزکار جابه‌جا خواهد شد. همچنین از روش متفاوتی برای بالا آوردن پنجره استفاده می‌کند. توصیه می‌شود قبل از استفاده از windowfocus این دستور را امتحان کنید، زیرا روی مدیرهای پنجره بیشتری کار می‌کند. .Sp اگر پنجره‌ای مشخص نشود، پیش‌فرض \f(CW%1\fR است. برای جزئیات بیشتر به بخش‌های «WINDOW STACK» و «COMMAND CHAINING» مراجعه کنید. .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" پس از ارسال درخواست فعال‌سازی پنجره، منتظر می‌ماند تا پنجره واقعاً فعال شود. این گزینه برای اسکریپت‌هایی که برای ادامه کار به تکمیل عملیات وابسته‌اند، مفید است. .RE .RS 4 .RE .IP \fBgetactivewindow\fR 4 .IX Item "getactivewindow" چاپ شناسه پنجره فعال فعلی در خروجی. این دستور معمولاً قابل‌اعتمادتر از getwindowfocus است. نتیجه در پشته پنجره (window stack) ذخیره می‌شود. برای جزئیات بیشتر «WINDOW STACK» را ببینید. .IP "\fBwindowstate\fR \fI[\-\-add PROPERTY]\fR \fI[\-\-remove PROPERTY]\fR \fI[\-\-toggle PROPERTY]\fR \fI[window]\fR" 4 .IX Item "windowstate [--add PROPERTY] [--remove PROPERTY] [--toggle PROPERTY] [window]" تغییر یک مشخصه روی پنجره. .Sp برخی مشخصه‌ها ممکن است روی بعضی پنجره‌ها یا در بعضی مدیرهای پنجره اثری نداشته باشند. .Sp مشخصه‌ها می‌توانند هر یک از موارد زیر باشند: .RS 4 .IP "MODAL \- پنجره را به یک پنجره مودال (modal) تبدیل می‌کند" 4 .IX Item "MODAL - makes the window into a modal" .PD 0 .IP "STICKY \- پنجره را روی تمام فضاهای کاری نمایش می‌دهد" 4 .IX Item "STICKY - makes the window appear on all workspaces" .IP "MAXIMIZED_VERT \- اندازه پنجره را به صورت عمودی بیشینه می‌کند" 4 .IX Item "MAXIMIZED_VERT - sizes the window maximized vertically" .IP "MAXIMIZED_HORZ \- اندازه پنجره را به صورت افقی بیشینه می‌کند" 4 .IX Item "MAXIMIZED_HORZ - sizes the window maximized horizontally" .IP "ABOVE \- پنجره را بالاتر از سایرین نشان می‌دهد (همیشه رو)" 4 .IX Item "ABOVE - Show window above all others (always on top)" .IP "BELOW \- پنجره را پایین‌تر از تمام پنجره‌ها نشان می‌دهد" 4 .IX Item "BELOW - Show window below all others" .IP "SKIP_TASKBAR \- پنجره را از نوار وظیفه مخفی می‌کند" 4 .IX Item "SKIP_TASKBAR - hides the window from the taskbar" .IP "SKIP_PAGER \- پنجره را از پیجر پنجره‌ها (pager) مخفی می‌کند" 4 .IX Item "SKIP_PAGER - hides the window from the window pager" .IP "FULLSCREEN \- پنجره را تمام‌صفحه می‌کند" 4 .IX Item "FULLSCREEN - makes window fullscreen" .IP "HIDDEN \- نگاشت پنجره را برمی‌دارد (unmap)" 4 .IX Item "HIDDEN - unmaps the window" .IP "SHADED \- پنجره را به بالا جمع (رول) می‌کند" 4 .IX Item "SHADED - rolls the window up" .IP "DEMANDS_ATTENTION \- پنجره را به عنوان فوری یا نیازمند توجه علامت‌گذاری می‌کند" 4 .IX Item "DEMANDS_ATTENTION - marks window urgent or needing attention" .PD .RE .RS 4 .Sp این قابلیت نیازمند یک مدیر پنجره است که از EWMH پشتیبانی کند. احتمالاً بیشتر مدیرهای پنجره از آن پشتیبانی می‌کنند :) .RE .IP "\fBgetwindowclassname\fR \fI[window]\fR" 4 .IX Item "getwindowclassname [window]" چاپ نام کلاس (class name) پنجره. .IP "\fBset_num_desktops\fR \fInumber\fR" 4 .IX Item "set_num_desktops number" تغییر تعداد میزکارها یا فضاهای کاری. .IP \fBget_num_desktops\fR 4 .IX Item "get_num_desktops" چاپ تعداد فعلی میزکارها در خروجی. .IP "\fBget_desktop_viewport\fR \fI[\-\-shell]\fR" 4 .IX Item "get_desktop_viewport [--shell]" گزارش موقعیت نمای دید (viewport) فعلی. اگر \-\-shell مشخص شود، خروجی برای ارزیابی شل (shell eval) سازگار و مناسب خواهد بود. .Sp در بعضی مدیرهای پنجره، گاهی به جای «میزکارهای مجازی» از viewportها استفاده می‌شود. یک viewport صرفاً یک نما از یک ناحیه بسیار بزرگ میزکار است. .IP "\fBset_desktop_viewport\fR \fIx\fR \fIy\fR" 4 .IX Item "set_desktop_viewport x y" انتقال نمای دید (viewport) به موقعیت مشخص‌شده. همه درخواست‌ها پذیرفته نمی‌شوند \- برخی از مدیرهای پنجره فقط از درخواست‌هایی پیروی می‌کنند که با مرزهای فضای کاری، مانند اندازه صفحه نمایش، هم‌تراز باشند. .Sp برای مثال، اگر صفحه نمایش شما 1280x800 باشد، می‌توانید با دستور زیر به فضای کاری دوم بروید: xdotool set_desktop_viewport 1280 0 .IP "\fBset_desktop\fR \fI[options]\fR \fIdesktop_number\fR" 4 .IX Item "set_desktop [options] desktop_number" تغییر نمای فعلی به میزکار مشخص‌شده. .RS 4 .IP \fB\-\-relative\fR 4 .IX Item "--relative" استفاده از جابه‌جایی‌های نسبی به جای مطلق. این امکان را می‌دهد تا نسبت به میزکار فعلی جابه‌جا شوید. .RE .RS 4 .Sp مثال‌ها: # جابه‌جایی به میزکار شماره ۵ xdotool set_desktop 5 .Sp .Vb 2 \& # جابه‌جایی به میزکار قبلی. (به استفاده از "\-\-" دقت کنید) \& xdotool set_desktop \-\-relative \-\- \-1 .Ve .RE .IP \fBget_desktop\fR 4 .IX Item "get_desktop" چاپ میزکار در حال نمایش در خروجی. .IP "\fBset_desktop_for_window\fR \fI[window]\fR \fIdesktop_number\fR" 4 .IX Item "set_desktop_for_window [window] desktop_number" انتقال یک پنجره به میزکاری دیگر. اگر پنجره‌ای مشخص نشود، پیش‌فرض \f(CW%1\fR است. برای جزئیات بیشتر به بخش‌های «WINDOW STACK» و «COMMAND CHAINING» مراجعه کنید..IP "\fBget_desktop_for_window\fR \fI[window]\fR" 4 .IX Item "get_desktop_for_window [window]" میزکاری که در حال حاضر پنجرهٔ داده‌شده را در بر دارد در خروجی نمایش می‌دهد. انتقال یک پنجره به یک میزکار دیگر. اگر هیچ پنجره‌ای داده نشود، \f(CW%1\fR پیش‌فرض است. برای جزئیات بیشتر بخش‌های WINDOW STACK و "COMMAND CHAINING" را ببینید. .SH "دستورهای متفرقه (MISCELLANEOUS COMMANDS)" .IX Header "MISCELLANEOUS COMMANDS" .IP "\fBexec\fR \fI[options]\fR \fIcommand\fR \fI[...]\fR" 4 .IX Item "exec [options] command [...]" اجرای یک برنامه. این دستور اغلب هنگام ترکیب با behave_screen_edge برای انجام کارهایی مانند قفل کردن صفحه نمایش مفید است. .Sp گزینه‌ها: .RS 4 .IP \fB\-\-sync\fR 4 .IX Item "--sync" مسدودسازی تا زمانی که فرایند فرزند خارج شود. وضعیت خروج فرایند فرزند سپس به فرایند والد (xdotool) که آن را کپی می‌کند، منتقل می‌شود. .RE .RS 4 .Sp مثال‌ها: # قفل کردن صفحه هنگام قرار گرفتن موشواره در گوشهٔ top\-right xdotool behave_screen_edge \-\-delay 1000 top\-right \e exec gnome\-screensaver\-command \-\-lock # در صورت استفاده از آن برنامه، \*(Aqxscreensaver\-command \-lock\*(Aq را جایگزین کنید. .Sp .Vb 3 \& # مورد زیر در جابه‌جایی موشواره شکست می‌خورد زیرا از \*(Aq\-\-sync\*(Aq استفاده کرده‌ایم و \& # /bin/false با وضعیتی غیرصفر خارج می‌شود: \& xdotool exec \-\-sync /bin/false mousemove 0 0 \& \& # با این حال این مورد موفق می‌شود، زیرا از \-\-sync در دستور exec استفاده نکرده‌ایم. \& xdotool exec /bin/false mousemove 0 0 .Ve .RE .IP "\fBsleep\fR \fIseconds\fR" 4 .IX Item "sleep seconds" توقف (خواب) برای یک بازهٔ زمانی مشخص. کسرهایی از ثانیه (مانند 1.3 یا 0.4) در اینجا مجاز هستند. .SH "اسکریپت‌ها (SCRIPTS)" .IX Header "SCRIPTS" در صورت تمایل، xdotool می‌تواند فهرستی از دستورها را از طریق stdin یا یک فایل بخواند. در صورتی که هر دستوری شکست بخورد، اسکریپت با خطا مواجه خواهد شد. .PP صادقانه بگوییم، حالت \*(Aqscript\*(Aq هنوز به‌طور کامل توسعه نیافته است و ممکن است فراتر از انتظارات شما نباشد. اگر پیشنهادی دارید، لطفاً به فهرست ایمیل بفرستید یا یک باگ گزارش دهید (بخش CONTACT را ببینید). .PP اسکریپت‌ها می‌توانند از آرگومان‌های مکانی (که با \f(CW$1\fR، \f(CW$2\fR و... نشان داده می‌شوند) و متغیرهای محیطی (مانند \f(CW$HOME\fR یا \f(CW$WINDOWID\fR) استفاده کنند. نقل‌قول کردن آرگومان‌ها باید همان‌طور که انتظار می‌رود عمل کند. .PP اسکریپت‌ها برای بسط پارامترها و متغیرهای محیطی پردازش می‌شوند و سپس به‌گونه‌ای اجرا می‌گردند که گویی xdotool را با تمام اسکریپت در یک خط (با استفاده از COMMAND CHAINING) فراخوانی کرده‌اید. .IP \(bu 4 خواندن دستورها از یک فایل: .Sp .Vb 1 \& xdotool filename .Ve .IP \(bu 4 خواندن دستورها از stdin: .Sp .Vb 1 \& xdotool \- .Ve .IP \(bu 4 خواندن دستورها از یک فایل تغییرمسیریافته (redirected): .Sp .Vb 1 \& xdotool \- < myfile .Ve .PP شما همچنین می‌توانید اسکریپت‌هایی بنویسید که تنها xdotool را اجرا می‌کنند. مثال: .PP .Vb 2 \& #!/usr/local/bin/xdotool \& search \-\-onlyvisible \-\-classname $1 \& \& windowsize %@ $2 $3 \& windowraise %@ \& \& windowmove %1 0 0 \& windowmove %2 $2 0 \& windowmove %3 0 $3 \& windowmove %4 $2 $3 .Ve .PP این اسکریپت تمام پنجره‌های منطبق بر پرس‌وجوی classname داده‌شده توسط آرگومان اول ($1) را گرفته و اندازه و مکان آن‌ها را در یک شبکهٔ 2x2 با پنجره‌هایی به ابعاد پارامترهای دوم و سوم مرتب می‌کند. .PP در اینجا یک نمونه از نحوهٔ استفاده آمده است: .PP .Vb 1 \& % ./myscript xterm 600 400 .Ve .PP اجرای آن بدین صورت، ۴ ترمینال مرئی xterm را گرفته، بالا می‌آورد و آن‌ها را در یک شبکه کاشی‌کاری‌شدهٔ 2x2 که اندازهٔ هر پنجره 600x400 پیکسل است قرار می‌دهد..SH "پاک‌سازی کلیدهای تبدیل (CLEARMODIFIERS)" .IX Header "CLEARMODIFIERS" هر دستوری که پرچم \fI\-\-clearmodifiers\fR را بپذیرد، تلاش خواهد کرد هرگونه کلید تبدیل (modifier) ورودی فعال را در حین اجرای دستور پاک کرده و پس از آن بازیابی کند. .PP برای مثال، اگر بخواهید این دستور را اجرا کنید: xdotool key a .PP نتیجه بسته به اینکه کلید shift را روی صفحه‌کلید خود نگه داشته‌اید یا نه، \*(Aqa\*(Aq یا \*(AqA\*(Aq خواهد بود. اغلب نامطلوب است که هیچ کلید تبدیلی فعال باشد، بنابراین می‌توانید به xdotool بگویید تا هرگونه کلید تبدیل فعال را پاک کند. .PP اگر هنگام اجرای \*(Aqxdotool key \-\-clearmodifiers a\*(Aq کلید shift را نگه داشته باشید، ترتیب عملیات به این صورت خواهد بود: .IP "1. پرس‌وجو برای تمام کلیدهای تبدیل فعال (در این مورد shift را پیدا می‌کند)" 4 .IX Item "1. Query for all active modifiers (finds shift, in this case)" .PD 0 .IP "2. تلاش برای پاک کردن shift با ارسال \*(Aqkey up\*(Aq برای کلید shift" 4 .IX Item "2. Try to clear shift by sending 'key up' for the shift key" .IP "3. اجرای عادی \*(Aqxdotool key a\*(Aq" 4 .IX Item "3. Runs normal 'xdotool key a'" .IP "4. بازیابی کلید shift با ارسال \*(Aqkey down\*(Aq برای shift" 4 .IX Item "4. Restore shift key by sending 'key down' for shift" .PD .PP پرچم \fI\-\-clearmodifiers\fR در حال حاضر می‌تواند موارد زیر را پاک کند: .IP \(bu 4 هر کلیدی در نگاشت کلید (keymap) فعال شما که یک کلید تبدیل به آن مرتبط باشد. (خروجی \*(Aqxmodmap \-pm\*(Aq در \fBxmodmap\fR\|(1) را ببینید) .IP \(bu 4 دکمه‌های ماوس (1، 2، 3، 4، و 5) .IP \(bu 4 کلید caps lock .SH "نکات SENDEVENT (SENDEVENT NOTES)" .IX Header "SENDEVENT NOTES" اگر سعی دارید ورودی کلید را به یک پنجره خاص ارسال کنید و به نظر می‌رسد کار نمی‌کند، به احتمال زیاد برنامه شما رویدادهایی را که xdotool تولید می‌کند نادیده می‌گیرد. این موضوع نسبتاً رایج است. .PP ارسال رویدادهای فشرده‌شدن کلید به یک پنجره خاص در مقایسه با تایپ ساده در پنجره فعال، از یک API متفاوت استفاده می‌کند. اگر \*(Aqxdotool type \-\-window 12345 hello\*(Aq را مشخص کنید، xdotool رویدادهای کلید را تولید کرده و آن‌ها را مستقیماً به پنجره 12345 ارسال می‌کند. با این حال، کارگزارهای X11 روی تمام رویدادهایی که به این روش تولید می‌شوند، یک پرچم ویژه تنظیم می‌کنند (مدخل XEvent.xany.send_event را در راهنمای X11 ببینید). بسیاری از برنامه‌ها این پرچم را بررسی کرده و این رویدادها را رد می‌کنند. .PP توجه به این نکته مهم است که برای رویدادهای کلید و ماوس، ما تنها زمانی از XSendEvent استفاده می‌کنیم که یک پنجره خاص هدف قرار گرفته باشد. در غیر این صورت، از XTEST استفاده می‌کنیم. .PP برخی از برنامه‌ها را می‌توان به گونه‌ای پیکربندی کرد که رویدادها را حتی اگر توسط xdotool تولید شده باشند نیز بپذیرند. برای راهنمایی به مستندات برنامه خود مراجعه کنید. .PP نکات مربوط به برنامه‌های خاص (بر اساس آزمایش‌های نویسنده): * به نظر می‌رسد Firefox 3 زمانی که فوکوس ندارد، تمام ورودی‌ها را نادیده می‌گیرد. * برنامه xterm را می‌توان در حین اجرا با فشردن ctrl+leftclick و انتخاب \*(AqAllow SendEvents\*(Aq پیکربندی کرد. * به نظر می‌رسد gnome\-terminal به طور پیش‌فرض ورودی‌های تولیدشده را می‌پذیرد. .SH "پشته پنجره‌ها (WINDOW STACK)" .IX Header "WINDOW STACK" دستورهای خاصی (search،‏ getactivewindow،‏ getwindowfocus) پنجره‌ها را برای شما پیدا می‌کنند. این نتایج به طور کلی در stdout چاپ می‌شوند، اما در حافظه نیز ذخیره می‌شوند تا در طول عمر فرایند xdotool در آینده استفاده شوند. برای اطلاعات بیشتر بخش «زنجیره‌سازی دستورها (COMMAND CHAINING)» را ببینید. .PP تنها تغییر پشتیبانی‌شده برای پشته پنجره‌ها، جایگزینی آن است. به این معنا که از دو جست‌وجوی متوالی، تنها نتایج آخرین جست‌وجو در پشته پنجره‌ها قرار خواهد گرفت. .SH "زنجیره‌سازی دستورها (COMMAND CHAINING)" .IX Header "COMMAND CHAINING" برنامه xdotool از اجرای چندین دستور در یک فراخوانی واحد پشتیبانی می‌کند. به طور کلی، کار را با یک دستور جست‌وجو آغاز خواهید کرد (بخش «پشته پنجره‌ها (WINDOW STACK)» را ببینید) و سپس مجموعه‌ای از کنش‌ها را روی آن نتایج انجام می‌دهید. .PP برای پرس‌وجو از پشته پنجره‌ها، می‌توانید از نشانه‌گذاری ویژه "%N" استفاده کنید که در آن N یک عدد یا نماد \*(Aq@\*(Aq است. اگر \f(CW%N\fR مشخص شود، Nامین پنجره از پشته پنجره‌ها انتخاب خواهد شد. عموماً شما فقط پنجره اول یا همه پنجره‌ها را می‌خواهید. توجه داشته باشید که ترتیب پنجره‌ها در پشته پنجره‌ها با ترتیب قرارگیری عمودی پنجره‌ها (stacking order) مطابقت دارد؛ یعنی پنجره‌ای که در پایین‌ترین سطح قرار دارد ابتدا گزارش می‌شود (\&\fBXQueryTree\fR\|(3) را ببینید). بنابراین، ترتیب پنجره‌ها در پشته پنجره‌ها ممکن است در فراخوانی‌های مختلف یکسان نباشد. .PP نشانه‌گذاری توضیح‌داده‌شده در بالا به عنوان آرگومان "window" برای هر دستور معین استفاده می‌شود. .PP برای مثال، برای تغییر اندازه تمام پنجره‌های xterm به 80x24: .PP .Vb 1 \& xdotool search \-\-class xterm \-\- windowsize \-\-usehints %@ 80 24 .Ve .PP تغییر اندازه و جابه‌جایی پنجره جاری: .PP .Vb 1 \& xdotool getactivewindow windowmove 0 0 .Ve .PP در تمام موارد، اگر آرگومان پنجره حذف شود، مقدار پیش‌فرض آن "%1" خواهد بود. واضح است که اگر آرگومان پنجره را حذف کنید و پشته پنجره‌ها خالی باشد، این یک خطا است. اگر تلاش کنید از پشته پنجره‌ها استفاده کنید در حالی که خالی است نیز یک خطا خواهد بود. .PP برای فعال‌سازی اولین پنجره firefox یافت‌شده: .PP .Vb 1 \& xdotool search \-\-class firefox windowactivate .Ve .PP موارد زیر با خطا مواجه می‌شوند: .PP .Vb 3 \& xdotool windowactivate \& xdotool windowactivate %1 \& xdotool windowactivate %@ .Ve .PP هنگامی که xdotool خاتمه می‌یابد، پشته پنجره‌های فعلی از بین می‌رود. .PP علاوه بر این، دستورهایی که «پشته پنجره‌ها (WINDOW STACK)» را تغییر می‌دهند، اگر آخرین دستور نباشند، نتایج را چاپ نخواهند کرد. برای مثال: .PP .Vb 3 \& # Output the active window: \& % xdotool getactivewindow \& 20971533 \& \& # Output the pid of the active window, but not the active window id: \& % xdotool getactivewindow getwindowpid \& 4686 .Ve.SH "نشانه‌های گسترش‌یافته مدیر پنجره (EXTENDED WINDOW MANAGER HINTS)" .IX Header "EXTENDED WINDOW MANAGER HINTS" بخش‌های زیر از استاندارد EWMH پشتیبانی می‌شوند: .IP _NET_SUPPORTED 4 .IX Item "_NET_SUPPORTED" از مدیر پنجره می‌پرسد چه مواردی پشتیبانی می‌شوند. .IP _NET_CURRENT_DESKTOP 4 .IX Item "_NET_CURRENT_DESKTOP" میزکار فعلی را پرس‌وجو و تنظیم می‌کند. پشتیبانی از این ویژگی دستورهای زیر را فعال می‌کند: \&\f(CW\*(C`set_desktop\*(C'\fR، \f(CW\*(C`get_desktop\*(C'\fR. .IP _NET_WM_DESKTOP 4 .IX Item "_NET_WM_DESKTOP" میزکاری که پنجره در آن قرار دارد را پرس‌وجو و تنظیم می‌کند. پشتیبانی از این ویژگی دستورهای زیر را فعال می‌کند: \f(CW\*(C`set_desktop_for_window\*(C'\fR، \f(CW\*(C`get_desktop_for_window\*(C'\fR. .IP _NET_ACTIVE_WINDOW 4 .IX Item "_NET_ACTIVE_WINDOW" به شما امکان می‌دهد با درخواست از مدیر پنجره برای جلو آوردن پنجره، پنجره فعال را پرس‌وجو و تنظیم کنید. پشتیبانی از این ویژگی دستورهای زیر را فعال می‌کند: \f(CW\*(C`windowactivate\*(C'\fR، \f(CW\*(C`getactivewindow\*(C'\fR. .IP _NET_WM_PID 4 .IX Item "_NET_WM_PID" این ویژگی وابسته به برنامه کاربردی است، نه وابسته به مدیر پنجره. پرس‌وجوی PID مالک یک پنجره مشخص. پشتیبانی از این ویژگی دستورهای زیر را فعال می‌کند: \&\f(CW\*(C`getwindowpid\*(C'\fR. .SH "ویژگی‌های پشتیبانی‌شده (SUPPORTED FEATURES)" .IX Header "SUPPORTED FEATURES" ابزار xdotool (و libxdo) تلاش خواهند کرد در تمامی شرایط کار کنند. با این حال، ممکن است مواردی وجود داشته باشد که کارکرد مورد نظر توسط کارساز X یا مدیر پنجره شما ارائه نشود. در این موارد، xdotool تلاش می‌کند تشخیص دهد و به شما اعلام کند که آیا یک کنش نیازمند ویژگی‌ای است که در حال حاضر توسط سیستم شما پشتیبانی نمی‌شود یا خیر. .PP برای ویژگی‌های مختص مدیر پنجره، بخش «نشانه‌های گسترش‌یافته مدیر پنجره (EXTENDED WINDOW MANAGER HINTS)» را ببینید. .IP XTEST 4 .IX Item "XTEST" اگر کارساز X شما از XTEST پشتیبانی نکند، ممکن است برخی از عملکردهای تایپ و حرکت ماوس کار نکنند. به‌ویژه، اقدامات تایپ و ماوس که روی «پنجره فعلی» (پنجره ۰ در libxdo) اعمال می‌شوند، بعید است کار کنند. .Sp در بیشتر موارد، XTEST قابلیتی است که اگر به صورت پیش‌فرض فعال نباشد، می‌توانید آن را در کارساز X خود فعال کنید. .Sp می‌توانید فهرست افزونه‌های پشتیبانی‌شده X را با تایپ \*(Aqxdpyinfo\*(Aq و جستجوی متن \*(Aqnumber of extensions: ...\*(Aq مشاهده کنید. .SH "گزارش باگ‌ها (BUGS)" .IX Header "BUGS" شناخته شده است که تایپ نمادهای غیرمعمول با نگاشت‌های کلید غیر us گاهی اوقات نویسه نادرست ارسال می‌کند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBxprop\fR\|(1)، \fBxwininfo\fR\|(1) .PP تارنمای پروژه: .PP کد منبع و گزارش اشکالات: .PP مشخصات EWMH: .SH "تماس (CONTACT)" .IX Header "CONTACT" لطفاً پرسش‌ها را به xdotool\-users@googlegroups.com ارسال کنید. اشکالات و درخواست‌های قابلیت‌های جدید را در نشانی اینترنتی زیر ثبت کنید: .PP .PP همچنین، در صورت ترجیح ایمیل، با خیالی آسوده با ارسال پیام به فهرست پستی اشکالات را مطرح نمایید؛ هر طور که برای شما راحت‌تر است :) .SH "نویسندگان (AUTHORS)" .IX Header "AUTHOR" ابزار xdotool توسط Jordan Sissel نوشته شده است. .PP این صفحه راهنما در ابتدا توسط Daniel Kahn Gillmor برای پروژه دبیان نوشته شده است (اما می‌تواند توسط دیگران نیز استفاده شود). نگه‌داری آن بر عهده Jordan Sissel است. .PP وصله‌ها، ایده‌ها و دیگر مشارکت‌ها توسط افراد خوب و متعددی ارائه شده است. برای دیدن اینکه چه کسی چه چیزی را فراهم کرده است، فایل CHANGELIST را بررسی کنید.