این دستور xdotool است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
xdotool - ابزار اتوماسیون خط فرمان X11
خلاصه
xdotool CMD ارگ...
نماد: برخی از اسناد استفاده می کند [پنجره] برای نشان دادن آرگومان پنجره اختیاری. این
case به این معنی است که اگر آرگومان موجود نباشد، به طور پیش فرض روی "% 1" خواهد بود. برای مشاهده "WINDOW STACK" مراجعه کنید
"% 1" به چه معناست.
شرح
xdotool به شما امکان می دهد به صورت برنامه ای (یا دستی) ورودی صفحه کلید و فعالیت ماوس را شبیه سازی کنید،
جابجایی و تغییر اندازه ویندوز و غیره. این کار را با استفاده از پسوند XTEST X11 و سایر Xlib انجام می دهد
توابع.
برخی از نکات مدیریت پنجره توسعه یافته (با نام مستعار EWMH یا NetWM) وجود دارد. را ببینید
برای اطلاعات بیشتر، بخش "تذکرات مدیر پنجره گسترده".
KEYBOARD دستورات
کلید [گزینه ها] دستکاری کلید [دستکاری کلید ...]
گزینه های ارسال:
--پنجره پنجره
ضربه های کلید را به یک شناسه پنجره خاص ارسال کنید. می توانید از مراجع "WINDOW STACK" استفاده کنید
مانند "% 1" و "%@" در اینجا. اگر پشته پنجره ای وجود دارد، "% 1" پیش فرض است،
در غیر این صورت از پنجره فعلی استفاده می شود.
همچنین ببینید: "SENDEVENT Notes" و "WINDOW STACK"
- پاک کننده ها
قبل از ارسال کلید، اصلاح کننده ها را پاک کنید. CLEARMODIFIERS را در زیر ببینید.
--تاخیر انداختن میلی ثانیه
تاخیر بین زدن کلید پیش فرض 12 میلی ثانیه است.
یک کلید مشخص را تایپ کنید. به عنوان مثال "alt+r"، "Control_L+J"، "ctrl+alt+n"،
"BackSpace".
به طور کلی، هر رشته معتبر X Keysym کار خواهد کرد. کلیدهای متعدد با "+" از هم جدا می شوند.
نام مستعار برای "alt"، "ctrl"، "shift"، "super" و "meta" وجود دارد که همگی به Foo_L نشان داده می شوند.
مانند Alt_L و Control_L و غیره.
در مواردی که صفحه کلید شما در واقع کلیدی را که می خواهید تایپ کنید ندارد، xdotool
به طور خودکار یک کد کلید استفاده نشده را پیدا می کند و از آن برای تایپ کلید استفاده می کند.
با توجه به "CAMAND CHAINING"، این دستور باقیمانده را مصرف می کند
آرگومان ها یا تا زمانی که یک دستور xdotool جدید دیده شود، زیرا هیچ دستور xdotool وجود ندارد
کلیدهای معتبر
مثال: ارسال کلید "F2"
کلید xdotool F2
مثال: "a" را با لهجه روی آن بفرستید (در صفحه کلیدهای انگلیسی نه، اما همچنان کار می کند
با xdotool)
کلید xdotool Aacute
مثال: ctrl+l و سپس BackSpace را به عنوان کلیدهای جداگانه ارسال کنید:
کلید xdotool ctrl+l BackSpace
مثال: ctrl+c را به همه پنجرههای منطبق با عنوان "gdb" ارسال کنید (به "CAMAND CHAINING" مراجعه کنید)
xdotool search --نام کلید gdb ctrl+c
keydown [گزینه ها] دستکاری کلید
مانند بالا، به جز فقط رویدادهای کلید (فشار) ارسال می شود.
keyup دستکاری کلید
مانند بالا، به جز فقط رویدادهای keyup (انتشار) ارسال می شوند.
نوع [گزینه ها] چیزی به نوع
گزینه های ارسال:
--پنجره پنجره دار
ضربه های کلید را به یک شناسه پنجره خاص ارسال کنید. «یادداشتهای ارسال رویداد» را در زیر ببینید. پیشفرض،
اگر پنجره ای داده نشود، بستگی به پشته پنجره دارد. اگر پشته پنجره خالی باشد
پنجره فعلی با استفاده از XTEST تایپ می شود. در غیر این صورت، پیشفرض «% 1» است (نگاه کنید به
"WINDOW STACK").
--تاخیر انداختن میلی ثانیه
تاخیر بین زدن کلید پیش فرض 12 میلی ثانیه است.
- پاک کننده ها
قبل از ارسال کلید، اصلاح کننده ها را پاک کنید. CLEARMODIFIERS را در زیر ببینید.
طوری تایپ می کند که انگار شما آن را تایپ کرده اید. از خطوط جدید و برگه ها (خط و برگه جدید ASCII) پشتیبانی می کند. هر یک
ضربه زدن به کلید با تاخیری از هم جدا می شود --تاخیر انداختن گزینه.
با توجه به "CAMAND CHAINING"، این دستور باقیمانده را مصرف می کند
استدلال می کند و آنها را تایپ می کند. به این معنا که هیچ فرمانی نمی تواند بعد از «type» زنجیره شود.
به عنوان مثال: برای تایپ "Hello world!" شما انجام می دهید:
xdotool نوع 'سلام دنیا!'
ماوس دستورات
حرکت ماوس [گزینه ها] x y OR 'بازگرداندن'
موس را روی مختصات X و Y روی صفحه حرکت دهید.
اگر به جای علامت "بازیابی" را مشخص کنید، می توانید ماوس را به مکان قبلی ببرید
X و Y با هم هماهنگ می شوند. بازیابی فقط در صورتی کار میکند که قبلاً در آن جابهجا شده باشید
فراخوانی فرمان علاوه بر این، با گزینه --window کار نمی کند.
به عنوان مثال، برای کلیک بر روی گوشه سمت چپ بالای صفحه و حرکت ماوس به سمت
موقعیت اصلی قبل از اینکه آن را جابجا کنید، از این استفاده کنید:
xdotool mousemove 0 0 کلیک کنید 1 mousemove restore
--پنجره پنجره
پنجره ای را برای حرکت نسبت به آن مشخص کنید. مختصات 0,0 در بالا سمت چپ قرار دارند
پنجره ای که شما انتخاب می کنید
مراجع "WINDOW STACK" در اینجا معتبر است، مانند %1 و %@. اگرچه، با استفاده از %@
احتمالا منطقی نیست
--صفحه نمایش صفحه نمایش
ماوس را به صفحه مشخص شده ببرید تا به آن بروید. این فقط در صورتی مفید است که داشته باشید
چندین صفحه نمایش و از Xinerama استفاده نمی کنند.
پیش فرض صفحه فعلی است. اگر پنجره -- را مشخص کنید، پرچم --screen است
نادیده گرفته شد
-- قطبی
از مختصات قطبی استفاده کنید. این باعث می شود 'x' یک زاویه (در درجه، 0-360، و غیره) و 'y'
فاصله.
چرخش از "بالا" (0 درجه) شروع می شود و در جهت عقربه های ساعت می چرخد: 90 = راست، 180 = پایین،
270 = سمت چپ.
مبدا به طور پیش فرض در مرکز صفحه فعلی است. اگر الف را مشخص کنید
--window، سپس مبدا مرکز آن پنجره است.
- پاک کننده ها
به CLEARMODIFIERS مراجعه کنید
-- همگام سازی
پس از ارسال درخواست حرکت ماوس، منتظر بمانید تا ماوس واقعا جابجا شود. اگر
هیچ حرکتی لازم نیست، ما منتظر نخواهیم بود. این برای اسکریپت هایی که وابسته هستند مفید است
در مورد اقداماتی که قبل از حرکت تکمیل می شوند.
توجه: ما منتظر میمانیم تا ماوس اصلاً حرکت کند، نه اینکه واقعاً حرکت کند
به مقصد مورد نظر شما می رسد. برخی از برنامه ها نشانگر ماوس را قفل می کنند
مناطق خاصی از صفحه نمایش، بنابراین انتظار برای هر حرکت بهتر است در
حالت عمومی نسبت به انتظار برای یک هدف خاص.
mousemove_relative [گزینه ها] x y
پیکسل های x,y ماوس را نسبت به موقعیت فعلی نشانگر ماوس حرکت دهید.
-- قطبی
از مختصات قطبی استفاده کنید. این باعث می شود 'x' یک زاویه (در درجه، 0-360، و غیره) و 'y'
فاصله.
چرخش از "بالا" (0 درجه) شروع می شود و در جهت عقربه های ساعت می چرخد: 90 = راست، 180 = پایین،
270 = سمت چپ.
-- همگام سازی
پس از ارسال درخواست حرکت ماوس، منتظر بمانید تا ماوس واقعا جابجا شود. اگر
هیچ حرکتی لازم نیست، ما منتظر نخواهیم بود. این برای اسکریپت هایی که وابسته هستند مفید است
در مورد اقداماتی که قبل از حرکت تکمیل می شوند.
توجه داشته باشید که ما منتظر میمانیم تا ماوس اصلا حرکت کند، نه اینکه واقعاً حرکت کند
به مقصد مورد نظر شما می رسد. برخی از برنامه ها نشانگر ماوس را قفل می کنند
مناطق خاصی از صفحه نمایش، بنابراین انتظار برای هر حرکت بهتر است در
حالت عمومی نسبت به انتظار برای یک هدف خاص.
- پاک کننده ها
به CLEARMODIFIERS مراجعه کنید
کلیک [گزینه ها] دکمه
یک کلیک بفرستید، یعنی یک ماوس به دنبال آن موس برای دکمه داده شده با a
تاخیر کوتاه بین این دو (در حال حاضر 12 میلی ثانیه).
دکمهها معمولاً به این شکل نشان میدهند: سمت چپ ماوس ۱، وسط ۲، سمت راست ۳، چرخ رو به بالا
4، چرخ پایین 5 است.
- پاک کننده ها
قبل از کلیک کردن، اصلاح کننده ها را پاک کنید. CLEARMODIFIERS را در زیر ببینید.
--تکرار تکرار
مشخص کنید چند بار کلیک کنید. پیش فرض 1 است. برای دوبار کلیک کردن، از '--repeat استفاده کنید
2'
--تاخیر انداختن میلی ثانیه
مشخص کنید چه مدت، بر حسب میلی ثانیه، بین کلیک ها تأخیر ایجاد شود. این گزینه نیست
استفاده می شود اگر --تکرار پرچم روی 1 تنظیم شده است (پیش فرض).
--پنجره پنجره
پنجره ای را برای ارسال کلیک مشخص کنید. برای هشدارها، «یادداشتهای ارسال رویداد» را در زیر ببینید. استفاده می کند
موقعیت فعلی ماوس هنگام ایجاد رویداد.
پیش فرض، اگر پنجره ای داده نشود، به پشته پنجره بستگی دارد. اگر پنجره
پشته خالی است پنجره فعلی با استفاده از XTEST تایپ شده است. در غیر این صورت، پیش فرض است
"% 1" است (به "WINDOW STACK" مراجعه کنید.
ماوس پایین [گزینه ها] دکمه
مثل کلیک، به جز اینکه فقط یک ماوس پایین فرستاده می شود.
موس [گزینه ها] دکمه
مثل کلیک، به جز اینکه فقط یک ماوس به بالا ارسال می شود.
مکان یابی [--پوسته]
x، y، صفحه و شناسه پنجره مکان نما ماوس را خروجی می دهد. شماره های صفحه خواهد بود
اگر چندین مانیتور دارید و از Xinerama استفاده نمی کنید، غیر صفر است.
--پوسته
این باعث می شود که داده های پوسته خروجی getmouselocation بتوانید ارزیابی کنید. مثال:
% xdotool getmouselocation --shell
X = 880
Y = 443
SCREEN=0
WINDOW=16777250
% eval $(xdotool getmouselocation --shell)
% echo $X,$Y
714,324
behave_screen_edge [گزینه ها] جایی که فرمان ...
هنگامی که ماوس به لبه یا گوشه صفحه نمایش برخورد می کند، یک عمل را به رویدادها متصل کنید.
گزینه ها عبارتند از:
--تاخیر انداختن میلی ثانیه
قبل از اجرای دستور در میلی ثانیه تاخیر داشته باشید. این به شما امکان می دهد نیاز به یک
لبه یا گوشه داده شده برای مدت کوتاهی قبل از اجرای فرمان شما نگه داشته شود.
اگر لبه یا گوشه را قبل از پایان تاخیر ترک کنید، زمان بازنشانی میشود.
--سکوت کردن میلی ثانیه
تاخیر در میلی ثانیه قبل از اجرای دستور بعدی. این به پیشگیری کمک می کند
به طور تصادفی فرمان خود را در زمان های اضافی اجرا کنید. به خصوص مفید است اگر شما یک
تاخیر بسیار کوتاه (مانند پیش فرض 0).
جدول زمانی رویداد
* ماوس به لبه یا گوشه برخورد می کند.
* اگر تاخیر غیر صفر باشد، ماوس باید در این لبه یا گوشه بماند تا زمان تاخیر تمام شود.
* اگر هنوز در لبه / گوشه است، ماشه را فعال کنید.
* اگر سکون غیر صفر باشد، یک دوره سرد شدن وجود دارد که دوره بعدی است
ماشه نمی تواند رخ دهد
مقادیر معتبر "where" عبارتند از:
ترک کرد
بالا سمت چپ
بالا
بالا سمت راست
راست
پایین سمت چپ
پایین
سمت راست پایین
مثال:
# وقتی ماوس را به گوشه پایین سمت چپ میبرید، google-chrome را فعال کنید:
xdotool behave_screen_edge پایین سمت چپ
جستجو --class google-chrome windowactivate
# به فضای کاری بعدی (سمت راست) بروید. شناخته شده برای کار در GNOME (metacity و compiz)
xdotool behave_screen_edge --delay 500 کلید پایین سمت راست XF86Forward
# فایرفاکس را فعال کنید و در یک تب جدید برای متن در کلیپ بورد خود جستجوی وب انجام دهید
xdotool behave_screen_edge --تاخیر 1000 بالا سمت چپ
جستجو --classname Navigator
windowactivate -- کلید همگام سازی -- تاخیر 250 ctrl+t ctrl+k ctrl+v بازگشت
پنجره دستورات
جستجو کردن [گزینه ها] الگو
پنجره هایی را با عنوان، نام یا کلاس هایی با الگوی عبارت منظم جستجو کنید.
خروجی لیستی از شناسههای پنجره X با خط محدود است. اگر از "COMMAND" استفاده می کنید
CHAINING"، فرمان جستجو فقط در صورتی که آخرین شناسه پنجره باشد، در stdout می نویسد
(یا فقط) فرمان در زنجیره؛ در غیر این صورت ساکت است.
نتیجه در پشته پنجره برای دستورات زنجیره ای آینده ذخیره می شود. "WINDOW" را ببینید
STACK" و "CAMAND CHAINING" برای جزئیات.
گزینه های پیش فرض "--name --class --classname" هستند (مگر اینکه یکی از آنها را مشخص کنید یا
بیشتر از --name --class یا --classname).
گزینه های موجود عبارتند از:
-- کلاس
مطابقت با کلاس پنجره.
--نام کلاس
مطابقت با نام کلاس پنجره.
--بیشترین عمق N
عمق جستجوی بازگشت/کودک را تنظیم کنید. پیش فرض -1 به معنای بی نهایت است. 0 یعنی خیر
عمق، فقط ویندوزهای ریشه جستجو خواهند شد. اگر فقط پنجره های سطح بالا می خواهید، تنظیم کنید
حداکثر عمق 1 (یا 2، بسته به اینکه مدیر پنجره شما چگونه تزئینات را انجام می دهد).
--نام
با نام پنجره مطابقت دهید. این همان رشته ای است که در نمایش داده می شود
نوار عنوان پنجره
--فقط قابل مشاهده
فقط پنجره های قابل مشاهده در نتایج نمایش داده شود. این به معنای آنهایی است که دارای وضعیت نقشه هستند
قابل مشاهده است.
-پید PID
پنجره هایی را که به شناسه فرآیند خاصی تعلق دارند مطابقت دهید. این ممکن است برای برخی از X کار نکند
برنامه هایی که این ابرداده را در ویندوز خود تنظیم نمی کنند.
--صفحه نمایش N
ویندوز را فقط در یک صفحه خاص انتخاب کنید. پیش فرض این است که همه صفحه ها را جستجو کنید. فقط
اگر چندین نمایشگر دارید و از Xinerama استفاده نمی کنید معنی دار است.
--دسکتاپ N
فقط ویندوزهای روی یک دسکتاپ خاص را مطابقت دهید. "N" یک عدد است. پیش فرض جستجو است
تمام دسکتاپ ها
--حد N
پس از یافتن N پنجره منطبق، جستجو را متوقف کنید. تعیین محدودیت کمک خواهد کرد
اگر فقط چند نتیجه می خواهید، جستجوی خود را تسریع کنید.
پیش فرض بدون محدودیت جستجو است (که معادل '--limit 0' است)
--عنوان
منسوخ. - نام را ببینید.
--همه
ایجاب می کند که همه شرایط رعایت شود. مثلا:
xdotool search --all --pid 1424 --name "Hello World"
این فقط با ویندوزهایی مطابقت دارد که "Hello World" را به عنوان نام دارند و متعلق به آنها هستند
pid 1424.
-- هر
پنجره هایی را مطابقت دهید که با هر شرایطی مطابقت دارند (به طور منطقی "یا"). این به طور پیش فرض روشن است.
مثلا:
جستجوی xdotool --any --pid 1424 --نام "Hello World"
این با هر ویندوز متعلق به pid 1424 یا ویندوز با نام "Hello World" مطابقت دارد.
-- همگام سازی
مسدود کردن تا زمانی که نتایج وجود دارد. این زمانی مفید است که شما در حال راه اندازی هستید
برنامه می خواهد صبر کند تا پنجره برنامه قابل مشاهده باشد. برای
مثال:
گوگل کروم &
جستجوی xdotool -- sync --onlyvisible --class "google-chrome"
پنجره انتخاب
با کلیک کردن روی آن، شناسه پنجره (برای مشتری) را دریافت کنید. برای داشتن پرس و جو اسکریپت مفید است
شما انسانها برای چه پنجره ای عمل کنید. به عنوان مثال، کشتن یک پنجره با کلیک کردن بر روی آن:
xdotool selectwindow windowkill
رفتار کردن پنجره اقدام فرمان ...
یک عمل را به یک رویداد در یک پنجره متصل کنید. این به شما امکان می دهد دستورات xdotool اضافی را اجرا کنید
هر زمان که یک رویداد منطبق رخ دهد.
فرمان اجرا شده در نتیجه رفتار با % 1 که پنجره ای بود اجرا می شود
عمل کرد. نمونه هایی بعد از لیست رویداد دنبال می شوند.
رویدادهای زیر معتبر هستند:
ماوس را وارد کنید
هنگامی که ماوس وارد پنجره می شود آتش می گیرد. این شبیه به رویدادهای "موس روی" است
جاوا اسکریپت، اگر کمک کند.
ترک موش
هنگامی که ماوس از پنجره خارج می شود آتش می گیرد. این برعکس "موشواره-ورود" است
کلیک ماوس
هنگامی که ماوس کلیک می شود روشن می شود. به طور خاص، زمانی که دکمه ماوس آزاد می شود.
تمرکز
وقتی پنجره فوکوس ورودی را دریافت می کند روشن می شود.
تیرگی
هنگامی که پنجره تمرکز خود را از دست می دهد، آتش می گیرد.
مثال:
# هر زمان که ماوس وارد یک مکان قابل مشاهده شد، مکان مکان نما را چاپ کنید
#پنجره:
xdotool search --onlyvisible . رفتار %@ ماوس را وارد کنید
# هر زمان که xterm فوکوس کرد، عنوان پنجره و pid را چاپ کنید
xdotool search --class xterm behave %@ focus getwindowname getwindowpid
# Focus-follows-Mouse را شبیه سازی کنید
جستجوی xdotool رفتار %@ mouse-enter windowfocus
getwindowpid [پنجره]
خروجی PID مالک یک پنجره مشخص. این نیاز به تلاش از جانب مالک برنامه دارد
یک پنجره و ممکن است برای همه ویندوزها کار نکند. این از ویژگی _NET_WM_PID استفاده می کند
پنجره برای اطلاعات بیشتر به "نکات مدیریت پنجره توسعه یافته" در زیر مراجعه کنید.
اگر پنجره ای داده نشد، پیش فرض «% 1» است. اگر هیچ پنجره ای در پشته نیست، پس این
یک خطا است برای جزئیات بیشتر به "WINDOW STACK" مراجعه کنید.
مثال: PID را برای همه xterm ها پیدا کنید:
xdotool search --class xterm getwindowpid %@
getwindowname [پنجره]
خروجی نام یک پنجره داده شده، همچنین به عنوان عنوان شناخته شده است. این متن نمایش داده شده است
در نوار عنوان پنجره توسط مدیر پنجره شما.
اگر پنجره ای داده نشد، پیش فرض «% 1» است. اگر هیچ پنجره ای در پشته نیست، پس این
یک خطا است برای جزئیات بیشتر به "WINDOW STACK" مراجعه کنید.
دریافت هندسه پنجره [گزینه ها] [پنجره]
هندسه (موقعیت و موقعیت) یک پنجره را خروجی بگیرید. مقادیر عبارتند از: x، y،
عرض، ارتفاع و شماره صفحه نمایش
--پوسته
مقادیر خروجی مناسب برای 'eval' در یک پوسته.
getwindowfocus [-f]
شناسه پنجره پنجره متمرکز فعلی را چاپ می کند. نتیجه را در پنجره ذخیره می کند
پشته. برای جزئیات بیشتر به "WINDOW STACK" مراجعه کنید.
اگر پنجره فعلی فاقد ویژگی WM_CLASS باشد، فرض میکنیم که یک سطح بالای معمولی نیست
پنجره را باز کنید و از والدین عبور کنید تا زمانی که پنجره ای با مجموعه WM_CLASS و پیدا کنیم
آن id پنجره را برگردانید.
اگر واقعاً میخواهید که پنجره در حال حاضر فوکوس داشته باشد و برای این مهم نیست که فوکوس داشته باشد
تنظیم WM_CLASS، سپس از «getwindowfocus -f» استفاده کنید
اندازه پنجره [گزینه ها] [پنجره] عرض ارتفاع
اندازه پنجره پنجره داده شده را تنظیم کنید. اگر پنجره ای داده نشد، % 1 پیش فرض است.
برای جزئیات بیشتر به "WINDOW STACK" و "COMMAND CHAINING" مراجعه کنید.
درصد برای عرض و ارتفاع معتبر است. آنها نسبت به هندسه هستند
صفحه نمایش پنجره روشن است به عنوان مثال، برای ایجاد یک پنجره به عرض کامل صفحه،
اما نیم قد:
xdotool windowsize I 100% 50%
درصدها با -usehints معتبر هستند و هنوز میانگین عرض پیکسل نسبت به
اندازه صفحه نمایش.
گزینه های موجود عبارتند از:
--usehints
برای تنظیم عرض و ارتفاع از نکات اندازه پنجره (در صورت وجود) استفاده کنید. این مفید است
در پایانه ها برای تنظیم اندازه بر اساس ردیف/ستون متن به جای پیکسل.
-- همگام سازی
پس از ارسال درخواست اندازه پنجره، صبر کنید تا اندازه پنجره واقعاً تغییر کند.
اگر تغییری لازم نباشد، منتظر نخواهیم بود. این برای اسکریپت هایی مفید است که
به اقداماتی بستگی دارد که قبل از حرکت انجام شده است.
توجه: زیرا بسیاری از مدیران پنجره ممکن است تغییر اندازه اصلی را نادیده بگیرند یا تغییر دهند
درخواست، ما صبر می کنیم تا اندازه از اندازه اصلی خود تغییر کند، نه ضروری
به اندازه درخواستی
به عنوان مثال: برای تنظیم یک ترمینال 80x24 کاراکتر، باید از:
xdotool windowsize --usehints some_windowid 80 24
حرکت پنجره [گزینه ها] [پنجره] x y
پنجره را به موقعیت داده شده منتقل کنید. اگر پنجره ای داده نشد، % 1 پیش فرض است. دیدن
"WINDOW STACK" و "COMMAND CHAINING" برای جزئیات بیشتر.
اگر مختصات x داده شده به معنای واقعی کلمه "x" باشد، موقعیت x فعلی پنجره خواهد بود
بدون تغییر باشد همین امر برای 'y' نیز صدق می کند.
مثال:
xdotool getactivewindow windowmove 100 100 # به 100,100 منتقل می شود
xdotool getactivewindow windowmove x 100 # به x,100 منتقل می شود
xdotool getactivewindow windowmove 100 y # به 100,y منتقل می شود
xdotool getactivewindow windowmove 100 y # به 100,y منتقل می شود
-- همگام سازی
پس از ارسال درخواست انتقال پنجره، منتظر بمانید تا پنجره واقعا جابجا شود. اگر
هیچ حرکتی لازم نیست، ما منتظر نخواهیم بود. این برای اسکریپت هایی که وابسته هستند مفید است
در مورد اقداماتی که قبل از حرکت تکمیل می شوند.
--نسبت فامیلی
حرکت را نسبت به موقعیت فعلی پنجره انجام دهید.
پنجره فوکوس [گزینه ها] [پنجره]
یک پنجره را متمرکز کنید اگر پنجره ای داده نشد، % 1 پیش فرض است. به "WINDOW STACK" مراجعه کنید
برای جزئیات بیشتر، "CAMAND CHAINING".
از XSetInputFocus استفاده می کند که ممکن است توسط برخی از مدیران پنجره یا برنامه ها نادیده گرفته شود.
-- همگام سازی
پس از ارسال درخواست فوکوس پنجره، منتظر بمانید تا پنجره واقعاً فوکوس شود.
این برای اسکریپت هایی مفید است که به اقداماتی که قبل از جابجایی انجام می شوند بستگی دارد
بر.
نقشه پنجره [گزینه ها] [پنجره]
نقشه یک پنجره در اصطلاح X11، نگاشت یک پنجره به معنای قابل مشاهده کردن آن بر روی پنجره است
صفحه نمایش اگر پنجره ای داده نشد، % 1 پیش فرض است. به "WINDOW STACK" و "COMMAND" مراجعه کنید
CHAINING" برای جزئیات بیشتر.
-- همگام سازی
پس از درخواست نقشه پنجره، منتظر بمانید تا پنجره واقعاً نقشه برداری شود
(قابل رویت). این برای اسکریپت هایی که به اقدامات در حال تکمیل بستگی دارند مفید است
قبل از حرکت
پنجره را به حداقل برسانید [گزینه ها] [پنجره]
یک پنجره را به حداقل برسانید. در اصطلاح X11، این "iconify" نامیده می شود. اگر پنجره ای وجود ندارد
داده شده، % 1 پیش فرض است. برای جزئیات بیشتر به "WINDOW STACK" و "COMMAND CHAINING" مراجعه کنید.
-- همگام سازی
پس از درخواست حداقل کردن پنجره، منتظر بمانید تا پنجره واقعاً کوچک شود.
این برای اسکریپت هایی مفید است که به اقداماتی که قبل از جابجایی انجام می شوند بستگی دارد
بر.
بالابر پنجره [window_id=%1]
پنجره را تا بالای پشته بالا ببرید. این ممکن است روی همه مدیران پنجره کار نکند. اگر
هیچ پنجره ای داده نمی شود، % 1 پیش فرض است. برای مشاهده "WINDOW STACK" و "COMMAND CHAINING" را ببینید
جزئیات بیشتر.
windowreparent [source_window] مقصد_پنجره
یک پنجره را بازسازی کنید این حرکت می کند منبع_پنجره پنجره کودک بودن
مقصد_پنجره. اگر منبعی داده نشود، % 1 پیش فرض است. پنجره "WINDOW STACK".
مراجع (مانند %1) برای هر دو معتبر است منبع_پنجره و مقصد_پنجره دیدن
"WINDOW STACK" و "COMMAND CHAINING" برای جزئیات بیشتر.
بستن پنجره [پنجره]
یک پنجره ببند این عمل پنجره را از بین می برد، اما سعی در کشتن آن نخواهد داشت
مشتری آن را کنترل می کند اگر پنجره ای داده نشد، % 1 پیش فرض است. به "WINDOW STACK" مراجعه کنید
و "CAMAND CHAINING" برای جزئیات بیشتر.
پنجره کش [پنجره]
یک پنجره را بکش این عمل پنجره را از بین می برد و کلاینت کنترل کننده آن را از بین می برد.
اگر پنجره ای داده نشد، % 1 پیش فرض است. برای مشاهده WINDOW STACK و "COMMAND CHAINING" را ببینید
جزئیات بیشتر.
windowunmap [گزینه ها] [window_id=%1]
نقشه یک پنجره را بردارید تا دیگر روی صفحه نمایش شما ظاهر نشود. اگر پنجره ای داده نشد، % 1
پیش فرض است. برای جزئیات بیشتر به "WINDOW STACK" و "COMMAND CHAINING" مراجعه کنید.
-- همگام سازی
پس از درخواست unmap پنجره، منتظر بمانید تا پنجره واقعاً از نقشه خارج شود
(پنهان). این برای اسکریپت هایی که به اقداماتی که قبلاً تکمیل شده اند، مفید است
ادامه دادن
تنظیم_پنجره [گزینه ها] [windowid=%1]
تنظیمات مربوط به یک پنجره اگر پنجره ای داده نشد، % 1 پیش فرض است. "WINDOW" را ببینید
STACK" و "COMMAND CHAINING" برای جزئیات بیشتر.
گزینه های ارسال:
--نام نام جدید
تنظیم پنجره WM_NAME (عنوان پنجره معمولا)
--نماد-نام نام جدید
پنجره WM_ICON_NAME را تنظیم کنید (عنوان پنجره معمولاً وقتی کوچک می شود)
--نقش newrole
پنجره WM_WINDOW_ROLE را تنظیم کنید
--نام کلاس نام کلاس جدید
نام کلاس پنجره را تنظیم کنید (با کلاس پنجره اشتباه نشود)
-- کلاس کلاس جدید
تنظیم کلاس پنجره (با نام کلاس پنجره اشتباه گرفته نشود)
-- overriderredirect ارزش
مقدار override_redirect پنجره را تنظیم کنید. این مقدار یک اشاره به مدیر پنجره است
برای اینکه آیا باید مدیریت شود یا نه. اگر مقدار تغییر مسیر 0 باشد،
مدیر پنجره مرزها را ترسیم می کند و با این پنجره به طور معمول رفتار می کند. اگر مقدار باشد
1، مدیر پنجره این پنجره را نادیده می گیرد.
اگر این مقدار را تغییر دهید، مدیر پنجره شما ممکن است متوجه این تغییر نشود تا زمانی که
پنجره دوباره نگاشت شده است، بنابراین ممکن است بخواهید "windowunmap" و "windowmap" را به آن صادر کنید
مدیر پنجره را مورد توجه قرار دهید.
دسکتاپ و پنجره دستورات
این دستورات از استاندارد EWMH پیروی می کنند. به بخش "نکات مدیریت پنجره توسعه یافته" مراجعه کنید
برای اطلاعات بیشتر.
windowactivate [گزینه ها] [پنجره]
پنجره را فعال کنید این دستور با windowfocus متفاوت است: اگر پنجره روشن باشد
یک دسکتاپ دیگر، ما به آن دسکتاپ سوئیچ خواهیم کرد. همچنین از روش متفاوتی برای
بالا آوردن پنجره توصیه می کنم قبل از استفاده از windowfocus، این دستور را امتحان کنید
روی مدیران پنجره های بیشتری کار خواهد کرد.
اگر پنجره ای داده نشد، % 1 پیش فرض است. به "WINDOW STACK" و "Command CHAINING" مراجعه کنید
برای جزئیات بیشتر.
-- همگام سازی
پس از ارسال فعال سازی پنجره، منتظر بمانید تا پنجره واقعاً فعال شود.
این برای اسکریپت هایی مفید است که به اقداماتی که قبل از جابجایی انجام می شوند بستگی دارد
بر.
پنجره getactive
خروجی پنجره فعال فعلی. این دستور اغلب قابل اعتمادتر از
getwindowfocus نتیجه در پشته پنجره ذخیره می شود. برای اطلاعات بیشتر به "WINDOW STACK" مراجعه کنید
جزئیات.
set_num_desktops عدد
تعداد دسکتاپ ها یا فضاهای کاری را تغییر می دهد.
get_num_desktops
خروجی تعداد فعلی دسکتاپ.
get_desktop_viewport [--پوسته]
موقعیت نمای فعلی را گزارش دهید. اگر --shell داده شود، خروجی دوستانه است
پوسته ارزیابی
در برخی از مدیران پنجره ها گاهی اوقات به جای «دسکتاپ مجازی» از Viewport ها استفاده می شود. آ
viewport به سادگی یک نمای در یک منطقه دسکتاپ بسیار بزرگ است.
set_desktop_viewport x y
Viewport را به موقعیت داده شده منتقل کنید. همه درخواست ها اطاعت نمی شوند - برخی از آنها
windowmangers فقط از درخواستهایی پیروی میکند که با مرزهای فضای کاری، مانند
اندازه صفحه نمایش.
به عنوان مثال، اگر صفحه نمایش شما 1280x800 است، می توانید با انجام زیر به فضای کاری دوم بروید:
xdotool set_desktop_viewport 1280 0
set_desktop [گزینه ها] دسکتاپ_شماره
نمای فعلی را به دسکتاپ مشخص شده تغییر دهید.
--نسبت فامیلی
از حرکات نسبی به جای مطلق استفاده کنید. این به شما امکان می دهد نسبت به آن حرکت کنید
دسکتاپ فعلی
get_desktop
خروجی دسکتاپ فعلی در نمای.
set_desktop_for_window [پنجره] دسکتاپ_شماره
یک پنجره را به دسکتاپ دیگری منتقل کنید. اگر پنجره ای داده نشد، % 1 پیش فرض است. دیدن
"WINDOW STACK" و "COMMAND CHAINING" برای جزئیات بیشتر.
get_desktop_for_window [پنجره]
خروجی دسکتاپ که در حال حاضر حاوی پنجره داده شده است. یک پنجره را به پنجره دیگری منتقل کنید
دسکتاپ. اگر پنجره ای داده نشد، % 1 پیش فرض است. WINDOW STACK و "COMMAND" را ببینید
CHAINING" برای جزئیات بیشتر.
متفرقه دستورات
exec [گزینه ها] فرمان [...]
یک برنامه را اجرا کنید. این اغلب زمانی مفید است که با behave_screen_edge برای انجام ترکیب شود
مواردی مانند قفل کردن صفحه نمایش
گزینه های ارسال:
-- همگام سازی
مسدود کردن تا زمانی که پردازش فرزند خارج شود. سپس وضعیت خروج از فرآیند فرزند منتقل می شود
به فرآیند والد (xdotool) که آن را کپی می کند.
مثال:
# وقتی ماوس در گوشه سمت راست بالا قرار دارد، صفحه را قفل کنید
xdotool behave_screen_edge --تاخیر 1000 بالا سمت راست
exec gnome-screensaver-command --lock
# اگر از آن برنامه استفاده می کنید، 'xscreensaver-command -lock' را جایگزین کنید.
# موارد زیر نمی توانند ماوس را حرکت دهند زیرا ما از '--sync' و استفاده می کنیم
# /bin/false خروجی غیر صفر:
xdotool exec -- sync /bin/false ماوس 0 0
# با این حال، از آنجایی که ما از --sync در دستور exec استفاده نمی کنیم، این موفقیت آمیز است.
xdotool exec /bin/false ماوس 0 0
خواب ثانیه
مدت زمان مشخصی بخوابید. کسری از ثانیه (مانند 1.3 یا 0.4) در اینجا معتبر است.
اسکریپت ها
xdotool می تواند لیستی از دستورات را از طریق stdin یا یک فایل در صورت تمایل بخواند. یک اسکریپت شکست خواهد خورد
وقتی هر دستوری از کار بیفتد
حقیقتاً، حالت "اسکریپت" به طور کامل انجام نشده است و ممکن است کمتر از انتظارات شما باشد. اگر
شما پیشنهاداتی دارید، لطفاً لیست را ایمیل کنید یا اشکالی را ارسال کنید (به تماس مراجعه کنید).
اسکریپت ها می توانند از آرگومان های موقعیتی (که با $1، $2، ... نشان داده می شوند) و محیط استفاده کنند
متغیرها (مانند $HOME یا $WINDOWID). نقل قول ها باید همانطور که انتظار می رود کار کند.
اسکریپت ها برای بسط پارامترها و متغیرهای محیطی پردازش می شوند و سپس به گونه ای اجرا می شوند که انگار
شما xdotool را با کل اسکریپت در یک خط (با استفاده از COMMAND CHAINING) فراخوانی کرده بودید.
· خواندن دستورات از یک فایل:
نام فایل xdotool
· خواندن دستورات از stdin:
xdotool -
خواندن دستورات از یک فایل تغییر مسیر
xdotool - < myfile
شما همچنین می توانید اسکریپت هایی بنویسید که فقط xdotool را اجرا می کنند. مثال:
#!/usr/local/bin/xdotool
جستجو --onlyvisible --classname $1
اندازه ویندوز %@ 2 دلار 3 دلار
بالا بردن پنجره %@
windowmove % 1 0 0
windowmove % 2 $2 0
windowmove % 3 0 $3
windowmove %4 $2 $3
این اسکریپت تمام پنجره های مطابق با پرس و جوی نام کلاس ارائه شده توسط arg1 ($1) و را می گیرد
اندازهها/آنها را به یک شبکه ۲×۲ با پنجرههایی که با پارامترهای دوم و سوم اندازه میشوند، منتقل میکند.
در اینجا یک مثال استفاده آمده است:
% ./myscript xterm 600 400
اجرای آن به این صورت 4 xterm قابل مشاهده طول می کشد، آنها را بالا می برد و آنها را به یک کاشی 2x2 منتقل می کند.
شبکه با اندازه هر پنجره 600x400 پیکسل.
پاک کننده ها
هر دستوری که - پاک کننده ها پرچم سعی خواهد کرد هر ورودی فعال را پاک کند
اصلاح کننده ها در طول دستور و سپس آنها را بازیابی کنید.
به عنوان مثال، اگر می خواهید این دستور را اجرا کنید:
کلید xdotool a
بسته به اینکه کلید shift را نگه داشته اید یا خیر، نتیجه "a" یا "A" خواهد بود
روی صفحه کلید شما اغلب فعال بودن هر گونه اصلاح کننده ای نامطلوب است، بنابراین می توانید بگویید
xdotool برای پاک کردن هر تغییر دهنده فعال.
ترتیب عملیات اگر در حین اجرای 'xdotool key --clearmodifiers a' shift را نگه دارید
این است:
1. پرس و جو برای همه اصلاح کننده های فعال (در این مورد، shift را پیدا می کند)
2. سعی کنید شیفت را با ارسال "کلید بالا" برای کلید شیفت پاک کنید
3. «xdotool key a» معمولی را اجرا می کند
4. بازیابی کلید shift با ارسال "کلید پایین" برای تغییر
La - پاک کننده ها پرچم در حال حاضر می تواند موارد زیر را پاک کند:
· هر کلیدی در نقشه کلید فعال شما که دارای یک اصلاح کننده مرتبط با آن باشد. (دیدن
نقشه xmodm(1) خروجی 'xmodmap -pm')
· دکمه های ماوس (1، 2، 3، 4، و 5)
· کلید Caps Lock
SENDEVENT NOTES
اگر می خواهید ورودی کلید را به یک پنجره خاص ارسال کنید، اما به نظر نمی رسد
کار می کند، پس به احتمال زیاد برنامه شما رویدادهایی را که xdotool ایجاد می کند نادیده می گیرد.
این نسبتاً رایج است.
ارسال کلید به یک پنجره خاص از API متفاوتی نسبت به تایپ کردن در آن استفاده می کند
پنجره فعال اگر «نوع xdotool --window 12345 hello» را مشخص کنید، xdotool تولید می کند
رویدادهای کلیدی و ارسال مستقیم آنها به پنجره 12345. با این حال، سرورهای X11 یک را تنظیم می کنند
پرچم ویژه در تمام رویدادهای ایجاد شده به این روش (به XEvent.xany.send_event در X11 مراجعه کنید
کتابچه راهنمای). بسیاری از برنامه ها این پرچم را رعایت می کنند و این رویدادها را رد می کنند.
توجه به این نکته ضروری است که برای رویدادهای کلیدی و ماوس، فقط زمانی از XSendEvent استفاده می کنیم که a
پنجره خاصی مورد هدف قرار می گیرد. در غیر این صورت از XTEST استفاده می کنیم.
برخی از برنامه ها را می توان طوری پیکربندی کرد که رویدادها را بپذیرند حتی اگر توسط xdotool تولید شده باشند.
برای کمک به دنبال مستندات درخواست خود باشید.
یادداشت های برنامه خاص (از آزمایش نویسنده): * به نظر می رسد فایرفاکس 3 همه را نادیده می گیرد
ورودی زمانی که فوکوس ندارد. * xterm را می توان در حین اجرا با آن پیکربندی کرد
ctrl+leftclick، «Allow SendEvents» * به نظر می رسد gnome-terminal ورودی تولید شده توسط
به طور پیش فرض
پنجره پشته
دستورات خاصی (جستجو، getactivewindow، getwindowfocus) ویندوز را برای شما پیدا می کنند.
این نتایج معمولاً در stdout چاپ می شوند، اما برای آینده نیز در حافظه ذخیره می شوند
در طول عمر فرآیند xdotool استفاده کنید. برای اطلاعات بیشتر به "CAMAND CHAINING" مراجعه کنید
اطلاعات.
تنها تغییرات پشتیبانی شده برای پشته پنجره، جایگزینی آن است. یعنی دو از دو
جستجوهای متوالی، تنها نتایج آخرین مورد پشته پنجره خواهد بود.
COMMAND زنجیر زدن
xdotool از اجرای چندین دستور در یک فراخوان پشتیبانی می کند. به طور کلی، شما شروع خواهید کرد
با یک فرمان جستجو (به "WINDOW STACK" مراجعه کنید) و سپس مجموعه ای از اقدامات را روی آن ها انجام دهید
نتایج.
برای جستجو در پشته پنجره، می توانید از نماد ویژه "%N" استفاده کنید که در آن N یک عدد یا عدد است
'@' سمبل. اگر %N داده شود، N امین پنجره از پشته پنجره انتخاب می شود.
به طور کلی شما فقط اولین پنجره یا همه پنجره ها را می خواهید. توجه داشته باشید که ترتیب از
پنجرهها در پشته پنجره با ترتیب پشتهبندی پنجرهها، یعنی پایینترین، مطابقت دارد
ابتدا پنجره گزارش می شود (نگاه کنید به XQueryTree(3)). بنابراین ترتیب پنجره ها در
پشته پنجره ممکن است در سراسر فراخوان ها سازگار نباشد.
نماد توضیح داده شده در بالا به عنوان آرگومان "پنجره" برای هر دستور داده شده استفاده می شود.
به عنوان مثال، برای تغییر اندازه تمام xterm ها به 80x24:
xdotool search --class xterm -- windowsize --usehints %@ 80 24
تغییر اندازه پنجره فعلی را جابجا کنید:
xdotool getactivewindow windowmove 0 0
در همه موارد، آرگومان پنجره پیشفرض، اگر حذف شود، بهطور پیشفرض روی «% 1» خواهد بود. این است
بدیهی است که اگر آرگومان پنجره را حذف کنید و پشته پنجره خالی باشد، یک خطا وجود دارد. اگر شما
سعی کنید از پشته پنجره استفاده کنید و خالی است، این نیز یک خطا است.
برای فعال کردن اولین پنجره فایرفاکس پیدا شده:
xdotool search --class firefox windowactivate
اینها خطا می کنند:
xdotool windowactivate
xdotool فعال کردن پنجره % 1
xdotool windowactivate %@
هنگامی که xdotool خارج می شود، پشته پنجره فعلی از بین می رود.
بعلاوه، دستوراتی که "WINDOW STACK" را تغییر می دهند، در صورت وجود نتایج، نتایج را چاپ نمی کنند
آخرین دستور نیستند مثلا:
# خروجی پنجره فعال:
% xdotool getactivwindow
20971533
# خروجی pid پنجره فعال، اما نه شناسه پنجره فعال:
% xdotool getactivewindow getwindowpid
4686
تمدید شده پنجره مدیر نکات
قطعات زیر از استاندارد EWMH پشتیبانی می شوند:
_NET_SUPPORTED
از مدیر پنجره می پرسد چه چیزی پشتیبانی می شود
_NET_CURRENT_DESKTOP
دسکتاپ فعلی را پرس و جو کنید و تنظیم کنید. پشتیبانی از این دستورات زیر را فعال می کند:
"set_desktop"، "get_desktop".
_NET_WM_DESKTOP
پرس و جو کنید و تنظیم کنید که یک پنجره در چه دسکتاپ زندگی می کند. پشتیبانی از این امکان را فراهم می کند
دستورات: "set_desktop_for_window"، "get_desktop_for_window".
_NET_ACTIVE_WINDOW
به شما امکان می دهد پنجره فعال را با درخواست از مدیر پنجره برای آوردن آن جستجو و تنظیم کنید
رو به جلو. پشتیبانی از این دستورات را فعال می کند: "windowactivate"، "getactivewindow".
_NET_WM_PID
این ویژگی وابسته به برنامه است، نه وابسته به مدیر پنجره. PID را پرس و جو کنید
داشتن یک پنجره مشخص پشتیبانی از این دستورات را فعال می کند: "getwindowpid".
پشتیبانی ویژگیها
xdotool (و libxdo) سعی می کنند تحت هر شرایطی کار کنند. با این حال، ممکن است وجود داشته باشد
برخی موارد که عملکرد توسط سرور X یا مدیر پنجره شما ارائه نمی شود.
در این موارد، xdotool سعی می کند تشخیص دهد و به شما بگوید که آیا یک عمل به یک ویژگی نیاز دارد یا خیر
در حال حاضر توسط سیستم شما پشتیبانی نمی شود.
برای ویژگیهای خاص مدیر پنجره، به «توصیههای مدیر پنجره توسعهیافته» مراجعه کنید.
XTEST
اگر سرور X شما از XTEST پشتیبانی نمی کند، برخی از ویژگی های تایپ و حرکت ماوس وجود دارد
ممکن است کار نکند به طور خاص، تایپ و اقدامات ماوس که بر روی "پنجره فعلی" عمل می کنند
(پنجره 0 در libxdo) بعید است کار کند.
در بیشتر موارد، XTEST یک ویژگی است که در صورت فعال نبودن، می توانید آن را در سرور X خود فعال کنید
به صورت پیش فرض.
با تایپ «xdpyinfo» و نگاه کردن به آن، میتوانید فهرست برنامههای افزودنی X را مشاهده کنید
متن "تعداد پسوند: ..."
با استفاده از خدمات onworks.net از xdotool به صورت آنلاین استفاده کنید