xdotool - ออนไลน์ใน Cloud

นี่คือคำสั่ง xdotool ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


xdotool - เครื่องมืออัตโนมัติ X11 บรรทัดคำสั่ง

เรื่องย่อ


xdotool cmd อาร์กิว...

สัญกรณ์: เอกสารบางอย่างใช้ [หน้าต่าง] เพื่อแสดงอาร์กิวเมนต์หน้าต่างเสริม นี้
case หมายความว่าอาร์กิวเมนต์ ถ้าไม่มี จะมีค่าเริ่มต้นเป็น "%1" ดู "WINDOW STACK" สำหรับ
"%1" หมายถึงอะไร

DESCRIPTION


xdotool ให้คุณจำลองการป้อนข้อมูลด้วยแป้นพิมพ์และกิจกรรมของเมาส์โดยทางโปรแกรม (หรือด้วยตนเอง)
ย้ายและปรับขนาดหน้าต่าง ฯลฯ โดยใช้ส่วนขยาย XTEST ของ X11 และ Xlib . อื่นๆ
ฟังก์ชั่น

มีการรองรับ Extended Window Manager Hints (หรือที่เรียกว่า EWMH หรือ NetWM) ดู
ส่วน "คำแนะนำสำหรับผู้จัดการหน้าต่างเพิ่มเติม" สำหรับข้อมูลเพิ่มเติม

แป้นพิมพ์ คำสั่ง


สำคัญ [ตัวเลือก] การกดแป้นพิมพ์ [การกดแป้นพิมพ์ ... ]
ตัวเลือก:

--หน้าต่าง หน้าต่าง
ส่งการกดแป้นพิมพ์ไปยังรหัสหน้าต่างเฉพาะ คุณสามารถใช้การอ้างอิง "WINDOW STACK" ได้
เช่น "%1" และ "%@" ที่นี่ หากมีหน้าต่างสแต็ก ดังนั้น "%1" จะเป็นค่าเริ่มต้น
มิฉะนั้นจะใช้หน้าต่างปัจจุบัน

ดูเพิ่มเติม: "บันทึกย่อส่ง" และ "กองหน้าต่าง"

--ตัวแก้ไขที่ชัดเจน
ล้างตัวแก้ไขก่อนส่งการกดแป้น ดู CLEARMODIFIERS ด้านล่าง

--ล่าช้า มิลลิวินาที
ความล่าช้าระหว่างการกดแป้น ค่าเริ่มต้นคือ 12ms

พิมพ์การกดแป้นพิมพ์ที่กำหนด ตัวอย่าง "alt+r", "Control_L+J", "ctrl+alt+n",
"แบ็คสเปซ".

โดยทั่วไป สตริง X Keysym ที่ถูกต้องจะใช้งานได้ แป้นหลายแป้นคั่นด้วย '+'
มีนามแฝงสำหรับ "alt", "ctrl", "shift", "super" และ "meta" ซึ่งทั้งหมดจับคู่กับ Foo_L
เช่น Alt_L และ Control_L เป็นต้น

ในกรณีที่แป้นพิมพ์ของคุณไม่มีคีย์ที่คุณต้องการพิมพ์ xdotool
จะค้นหารหัสที่ไม่ได้ใช้โดยอัตโนมัติและใช้เพื่อพิมพ์รหัสนั้น

ในส่วนที่เกี่ยวกับ "COMMAND CHAINING" คำสั่งนี้ใช้ส่วนที่เหลือของ
อาร์กิวเมนต์หรือจนกว่าจะเห็นคำสั่ง xdotool ใหม่ เนื่องจากไม่มีคำสั่ง xdotool
การกดแป้นพิมพ์ที่ถูกต้อง

ตัวอย่าง: ส่งการกดแป้น "F2"
คีย์ xdotool F2

ตัวอย่าง: ส่ง 'a' ด้วยเครื่องหมายเน้นเสียง (ไม่ใช่บนแป้นพิมพ์ภาษาอังกฤษ แต่ยังใช้ได้อยู่
ด้วย xdotool)
xdotool คีย์ Aacute

ตัวอย่าง: ส่ง ctrl+l แล้วตามด้วย BackSpace เป็นการกดแป้นแยกกัน:
xdotool คีย์ ctrl+l BackSpace

ตัวอย่าง: ส่ง ctrl+c ไปยังหน้าต่างทั้งหมดที่ตรงกับชื่อ 'gdb' (ดู "COMMAND CHAINING")
ค้นหา xdotool --name gdb คีย์ ctrl+c

คีย์ดาวน์ [ตัวเลือก] การกดแป้นพิมพ์
เช่นเดียวกับด้านบน ยกเว้นเฉพาะเหตุการณ์คีย์ดาวน์ (การกด) เท่านั้นที่จะถูกส่ง

คีย์อัพ การกดแป้นพิมพ์
เช่นเดียวกับด้านบน ยกเว้นเฉพาะเหตุการณ์คีย์อัพ (รีลีส) เท่านั้นที่จะถูกส่ง

ชนิด [ตัวเลือก] บางสิ่งบางอย่าง ไปยัง ชนิด
ตัวเลือก:

--หน้าต่าง รหัสหน้าต่าง
ส่งการกดแป้นพิมพ์ไปยังรหัสหน้าต่างเฉพาะ ดู "บันทึกย่อส่ง" ด้านล่าง ค่าเริ่มต้น
หากไม่มีหน้าต่างให้ไว้ ขึ้นอยู่กับกองหน้าต่าง หากสแต็คหน้าต่างว่างเปล่า
หน้าต่างปัจจุบันถูกพิมพ์โดยใช้ XTEST มิฉะนั้น ค่าเริ่มต้นคือ "%1" (ดู
"กองหน้าต่าง")

--ล่าช้า มิลลิวินาที
ความล่าช้าระหว่างการกดแป้น ค่าเริ่มต้นคือ 12ms

--ตัวแก้ไขที่ชัดเจน
ล้างตัวแก้ไขก่อนส่งการกดแป้น ดู CLEARMODIFIERS ด้านล่าง

พิมพ์ราวกับว่าคุณได้พิมพ์มัน รองรับการขึ้นบรรทัดใหม่และแท็บ (การขึ้นบรรทัดใหม่และแท็บ ASCII) แต่ละ
การกดแป้นพิมพ์คั่นด้วยความล่าช้าที่กำหนดโดย --ล่าช้า ตัวเลือก

ในส่วนที่เกี่ยวกับ "COMMAND CHAINING" คำสั่งนี้ใช้ส่วนที่เหลือของ
ข้อโต้แย้งและพิมพ์ นั่นคือไม่มีคำสั่งใดที่สามารถโยงหลังจาก 'ประเภท'

ตัวอย่าง: พิมพ์ 'Hello world!' คุณจะทำ:
xdotool ประเภท 'สวัสดีชาวโลก!'

MOUSE คำสั่ง


เลื่อนเมาส์ [ตัวเลือก] x y OR 'คืนค่า'
เลื่อนเมาส์ไปที่พิกัด X และ Y บนหน้าจอ

คุณสามารถเลื่อนเมาส์ไปยังตำแหน่งก่อนหน้าหากคุณระบุ 'เรียกคืน' แทน an
พิกัด X และ Y การคืนค่าใช้ได้เฉพาะเมื่อคุณได้ย้ายก่อนหน้านี้ในนี้เดียวกัน
การเรียกใช้คำสั่ง นอกจากนี้ยังใช้ไม่ได้กับตัวเลือก --window

ตัวอย่างเช่น การคลิกที่มุมบนซ้ายของหน้าจอและเลื่อนเมาส์ไปที่
ตำแหน่งเดิมก่อนที่คุณจะย้าย ใช้สิ่งนี้:
xdotool mousemove 0 0 คลิก 1 mousemove คืนค่า

--หน้าต่าง หน้าต่าง
ระบุหน้าต่างที่จะย้ายสัมพันธ์กับ พิกัด 0,0 อยู่ที่ด้านบนซ้ายของ
หน้าต่างที่คุณเลือก

การอ้างอิง "WINDOW STACK" ใช้ได้ที่นี่ เช่น %1 และ %@ แม้ว่าจะใช้ %@
คงไม่มีความหมาย

--หน้าจอ SCREEN
เลื่อนเมาส์ไปที่หน้าจอที่กำหนดเพื่อย้ายไปที่ สิ่งนี้มีประโยชน์ก็ต่อเมื่อคุณมี
หลายหน้าจอและไม่ได้ใช้ Xinerama

ค่าเริ่มต้นคือหน้าจอปัจจุบัน หากคุณระบุ --window --screen flag is
ละเว้น

--ขั้ว
ใช้พิกัดเชิงขั้ว ทำให้ 'x' เป็นมุม (เป็นองศา, 0-360 เป็นต้น) และ 'y'
ระยะทาง.

การหมุนเริ่มต้นที่ 'ขึ้น' (0 องศา) และหมุนตามเข็มนาฬิกา: 90 = ขวา, 180 = ลง,
270 = ซ้าย

ค่าเริ่มต้นเริ่มต้นไปที่กึ่งกลางของหน้าจอปัจจุบัน หากคุณระบุ a
--window จากนั้นจุดเริ่มต้นเป็นศูนย์กลางของหน้าต่างนั้น

--ตัวแก้ไขที่ชัดเจน
ดู CLEARMODIFIERS

--ซิงค์
หลังจากส่งคำขอย้ายเมาส์แล้ว ให้รอจนกว่าเมาส์จะถูกย้ายจริง ถ้า
ไม่จำเป็นต้องเคลื่อนไหวเราจะไม่รอ สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ต้องพึ่งพา
เกี่ยวกับการดำเนินการที่เสร็จสิ้นก่อนที่จะดำเนินการต่อไป

หมายเหตุ: เรารอจนกว่าเมาส์จะเคลื่อนที่เลย ไม่จำเป็นว่าจริงๆ แล้ว
ถึงจุดหมายปลายทางที่คุณตั้งใจไว้ แอปพลิเคชั่นบางตัวล็อคเคอร์เซอร์ของเมาส์ไปที่
บางส่วนของหน้าจอ ดังนั้นการรอการเคลื่อนไหวใด ๆ จะดีกว่าใน
กรณีทั่วไปมากกว่ารอเป้าหมายเฉพาะ

mousemove_relative [ตัวเลือก] x y
เลื่อนเมาส์ x,y พิกเซลที่สัมพันธ์กับตำแหน่งปัจจุบันของเคอร์เซอร์ของเมาส์

--ขั้ว
ใช้พิกัดเชิงขั้ว ทำให้ 'x' เป็นมุม (เป็นองศา, 0-360 เป็นต้น) และ 'y'
ระยะทาง.

การหมุนเริ่มต้นที่ 'ขึ้น' (0 องศา) และหมุนตามเข็มนาฬิกา: 90 = ขวา, 180 = ลง,
270 = ซ้าย

--ซิงค์
หลังจากส่งคำขอย้ายเมาส์แล้ว ให้รอจนกว่าเมาส์จะถูกย้ายจริง ถ้า
ไม่จำเป็นต้องเคลื่อนไหวเราจะไม่รอ สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ต้องพึ่งพา
เกี่ยวกับการดำเนินการที่เสร็จสิ้นก่อนที่จะดำเนินการต่อไป

โปรดทราบว่าเรารอจนกว่าเมาส์จะเคลื่อนที่เลย ไม่จำเป็นว่าจริงๆ แล้ว
ถึงจุดหมายปลายทางที่คุณตั้งใจไว้ แอปพลิเคชั่นบางตัวล็อคเคอร์เซอร์ของเมาส์ไปที่
บางส่วนของหน้าจอ ดังนั้นการรอการเคลื่อนไหวใด ๆ จะดีกว่าใน
กรณีทั่วไปมากกว่ารอเป้าหมายเฉพาะ

--ตัวแก้ไขที่ชัดเจน
ดู CLEARMODIFIERS

คลิก [ตัวเลือก] ปุ่ม
ส่งการคลิก นั่นคือ mousedown ตามด้วย mouseup สำหรับปุ่มที่กำหนดด้วย a
หน่วงเวลาสั้น ๆ ระหว่างทั้งสอง (ปัจจุบันคือ 12ms)

ปุ่มโดยทั่วไปจะแมปด้วยวิธีนี้: เมาส์ซ้ายคือ 1, กลางคือ 2, ขวาคือ 3, เลื่อนขึ้นคือ
4 ล้อลงคือ 5

--ตัวแก้ไขที่ชัดเจน
ล้างตัวแก้ไขก่อนคลิก ดู CLEARMODIFIERS ด้านล่าง

--ทำซ้ำ ซ้ำ
ระบุจำนวนครั้งในการคลิก ค่าเริ่มต้นคือ 1 สำหรับการดับเบิลคลิก ให้ใช้ '--repeat
2'

--ล่าช้า มิลลิวินาที
ระบุระยะเวลาในหน่วยมิลลิวินาทีที่จะหน่วงเวลาระหว่างการคลิก ตัวเลือกนี้ไม่ใช่
ใช้ถ้า --ทำซ้ำ ตั้งค่าสถานะเป็น 1 (ค่าเริ่มต้น)

--หน้าต่าง หน้าต่าง
ระบุหน้าต่างที่จะส่งการคลิกไปที่ ดู "บันทึกย่อส่ง" ด้านล่างสำหรับคำเตือน ใช้
ตำแหน่งเมาส์ปัจจุบันเมื่อสร้างเหตุการณ์

ค่าดีฟอลต์ หากไม่มีหน้าต่าง จะขึ้นอยู่กับสแต็กหน้าต่าง ถ้าหน้าต่าง
stack ว่างเปล่า หน้าต่างปัจจุบันถูกพิมพ์โดยใช้ XTEST มิฉะนั้น ค่าเริ่มต้น
คือ "%1" (ดู "WINDOW STACK")

เมาส์ดาวน์ [ตัวเลือก] ปุ่ม
เหมือนกับ คลิกยกเว้นเพียงส่งเมาส์ลงเท่านั้น

เลื่อนเมาส์ [ตัวเลือก] ปุ่ม
เหมือนกับ คลิกยกเว้นเพียงส่งเมาส์ขึ้นเท่านั้น

รับตำแหน่งเมาส์ [--เปลือก]
ส่งออก x, y, หน้าจอ และ ID หน้าต่างของเคอร์เซอร์เมาส์ ตัวเลขหน้าจอจะเป็น
ไม่ใช่ศูนย์ถ้าคุณมีจอภาพหลายจอและไม่ได้ใช้ Xinerama

--เปลือก
สิ่งนี้ทำให้ข้อมูลเชลล์เอาต์พุต getmouselocation ที่คุณสามารถประเมินได้ ตัวอย่าง:

% xdotool getmouselocation -- เชลล์
X = 880
ป=443
หน้าจอ=0
หน้าต่าง=16777250

% eval $ (xdotool getmouselocation -- เชลล์)
% เสียงสะท้อน $X,$Y
714,324

Behavior_screen_edge [ตัวเลือก] ที่ไหน คำสั่ง ...
เชื่อมโยงการกระทำกับเหตุการณ์เมื่อเมาส์ชนกับขอบหรือมุมของหน้าจอ

ตัวเลือกคือ:

--ล่าช้า มิลลิวินาที
หน่วงเวลาเป็นมิลลิวินาทีก่อนรันคำสั่ง สิ่งนี้ทำให้คุณต้องก าหนด a
ให้ยึดขอบหรือมุมไว้ในช่วงเวลาสั้น ๆ ก่อนที่คำสั่งของคุณจะทำงาน
หากคุณออกจากขอบหรือมุมก่อนที่การหน่วงเวลาจะหมดอายุ เวลาจะถูกรีเซ็ต

--เงียบ มิลลิวินาที
หน่วงเวลาเป็นมิลลิวินาทีก่อนที่คำสั่งถัดไปจะทำงาน ซึ่งช่วยป้องกัน
บังเอิญเรียกใช้คำสั่งของคุณพิเศษครั้งพิเศษ มีประโยชน์อย่างยิ่งหากคุณมี
สั้นมาก --delay (เช่นค่าเริ่มต้น 0)

ไทม์ไลน์กิจกรรม

* เมาส์ชนขอบหรือมุม
* หากการหน่วงเวลาไม่ใช่ศูนย์ เมาส์จะต้องอยู่ในขอบหรือมุมนี้จนกว่าเวลาหน่วงจะหมดอายุ
* หากยังคงอยู่ในขอบ/มุม ให้ทริกเกอร์
* หากความสงบไม่ใช่ศูนย์ แสดงว่ามีช่วงคูลดาวน์ที่ถัดไป
ทริกเกอร์ไม่สามารถเกิดขึ้นได้

ค่า 'ที่' ที่ถูกต้องคือ:

ซ้าย
บนซ้าย
ด้านบน
ด้านบนขวา
ขวา
ล่างซ้าย
ก้น
ล่างขวา

ตัวอย่าง:
# เปิดใช้งาน google-chrome เมื่อคุณเลื่อนเมาส์ไปที่มุมล่างซ้าย:
xdotool behave_screen_edge ล่างซ้าย
ค้นหา --class google-chrome windowactivate

# ไปที่พื้นที่ทำงานถัดไป (ขวา) รู้จักการทำงานใน GNOME (metacity และ compiz)
xdotool behave_screen_edge --delay 500 คีย์ล่างขวา XF86Forward

# เปิดใช้งาน firefox และทำการค้นหาเว็บในแท็บใหม่สำหรับข้อความในคลิปบอร์ดของคุณ
xdotool behave_screen_edge --delay 1000 บนซ้าย
ค้นหา --classname Navigator
windowactivate - ปุ่มซิงค์ - หน่วงเวลา 250 ctrl+t ctrl+k ctrl+v Return

หน้าต่าง คำสั่ง


ค้นหา [ตัวเลือก] Belt hold
ค้นหาหน้าต่างที่มีชื่อ ชื่อ หรือคลาสที่มีรูปแบบนิพจน์ทั่วไป
ผลลัพธ์คือรายการตัวระบุหน้าต่าง X ที่คั่นด้วยบรรทัด หากคุณกำลังใช้ "COMMAND
CHAINING" คำสั่งค้นหาจะเขียนรหัสหน้าต่างไปยัง stdout เท่านั้นหากเป็นครั้งสุดท้าย
(หรือเท่านั้น) คำสั่งในสายโซ่; มิฉะนั้นก็จะเงียบ

ผลลัพธ์จะถูกบันทึกไว้ใน window stack สำหรับคำสั่ง chained ในอนาคต ดู "WINDOW
STACK" และ "COMMAND CHAINING" สำหรับรายละเอียด

ตัวเลือกเริ่มต้นคือ "--name --class --classname" (เว้นแต่คุณจะระบุอย่างใดอย่างหนึ่งหรือ
มากกว่า --name --class หรือ --classname)

ตัวเลือกที่ใช้ได้คือ:

--ระดับ
จับคู่กับคลาสหน้าต่าง

--ชื่อคลาส
ตรงกับชื่อคลาสของหน้าต่าง

--ความลึกสูงสุด N
ตั้งค่าความลึกของการค้นหาซ้ำ/ย่อย ค่าเริ่มต้นคือ -1 หมายถึงอนันต์ 0 หมายถึง ไม่
ความลึก จะค้นหาเฉพาะหน้าต่างรูทเท่านั้น หากคุณต้องการเฉพาะหน้าต่างระดับบนสุด ให้ตั้งค่า
ความลึกสูงสุด 1 (หรือ 2 ขึ้นอยู่กับว่าตัวจัดการหน้าต่างของคุณตกแต่งอย่างไร)

--ชื่อ
ตรงกับชื่อหน้าต่าง นี่เป็นสตริงเดียวกับที่แสดงใน
แถบหัวเรื่องหน้าต่าง

--มองเห็นได้เท่านั้น
แสดงเฉพาะหน้าต่างที่มองเห็นได้ในผลลัพธ์ หมายถึงรายการที่มีสถานะแผนที่
สามารถดูได้

--ปิด PID
จับคู่หน้าต่างที่เป็นของรหัสกระบวนการเฉพาะ อาจใช้ไม่ได้กับ X . บางตัว
แอปพลิเคชันที่ไม่ได้ตั้งค่าข้อมูลเมตานี้บนหน้าต่าง

--หน้าจอ N
เลือกหน้าต่างบนหน้าจอเฉพาะเท่านั้น ค่าเริ่มต้นคือการค้นหาหน้าจอทั้งหมด เท่านั้น
มีความหมายถ้าคุณมีจอแสดงผลหลายจอและไม่ได้ใช้ Xinerama

--เดสก์ทอป N
จับคู่หน้าต่างบนเดสก์ท็อปบางเครื่องเท่านั้น 'N' คือตัวเลข ค่าเริ่มต้นคือการค้นหา
เดสก์ท็อปทั้งหมด

--จำกัด N
หยุดการค้นหาหลังจากพบ N หน้าต่างที่ตรงกัน การระบุขีดจำกัดจะช่วยได้
เร่งการค้นหาของคุณหากคุณต้องการผลลัพธ์เพียงเล็กน้อย

ค่าเริ่มต้นคือไม่จำกัดการค้นหา (ซึ่งเทียบเท่ากับ '--limit 0')

--ชื่อ
เลิกใช้แล้ว ดู --ชื่อ.

--ทั้งหมด
กำหนดให้เป็นไปตามเงื่อนไขทั้งหมด ตัวอย่างเช่น:

xdotool ค้นหา --all --pid 1424 --name "สวัสดีชาวโลก"

ซึ่งจะจับคู่เฉพาะหน้าต่างที่มี "Hello World" เป็นชื่อและเป็นของ
พิด 1424

--ใด ๆ
จับคู่หน้าต่างที่ตรงกับเงื่อนไขใดๆ (ตามหลักเหตุผล 'หรือ') นี่เป็นค่าเริ่มต้น
ตัวอย่างเช่น:

ค้นหา xdotool --any --pid 1424 --name "สวัสดีชาวโลก"

ซึ่งจะตรงกับหน้าต่างใด ๆ ที่เป็นของ pid 1424 หรือ windows ที่มีชื่อว่า "Hello World"

--ซิงค์
บล็อกจนกว่าจะมีผล สิ่งนี้มีประโยชน์เมื่อคุณเปิดตัว an
แอปพลิเคชันต้องการรอจนกว่าหน้าต่างแอปพลิเคชันจะปรากฏขึ้น สำหรับ
ตัวอย่าง:

Google Chrome &
การค้นหา xdotool --sync --onlyvisible --class "google-chrome"

เลือกหน้าต่าง
รับรหัสหน้าต่าง (สำหรับลูกค้า) โดยคลิกที่มัน มีประโยชน์สำหรับการสืบค้นสคริปต์
คุณเป็นมนุษย์สำหรับหน้าต่างใดที่จะดำเนินการ ตัวอย่างเช่น การฆ่าหน้าต่างโดยคลิกที่มัน:

xdotool เลือกหน้าต่าง windowkill

ประพฤติ หน้าต่าง การกระทำ คำสั่ง ...
ผูกการดำเนินการกับเหตุการณ์บนหน้าต่าง สิ่งนี้ช่วยให้คุณเรียกใช้คำสั่ง xdotool เพิ่มเติม
เมื่อใดก็ตามที่มีเหตุการณ์ที่ตรงกันเกิดขึ้น

คำสั่งรันอันเป็นผลมาจากพฤติกรรมถูกรันโดย %1 เป็นหน้าต่างที่เคยเป็น
ดำเนินการเมื่อ ตัวอย่างจะตามมาหลังรายการเหตุการณ์

ต่อไปนี้คือเหตุการณ์ที่ถูกต้อง:

เมาส์ป้อน
เริ่มทำงานเมื่อเมาส์เข้าสู่หน้าต่าง คล้ายกับเหตุการณ์ 'วางเมาส์เหนือ' ใน
javascript ถ้ามันช่วยได้

เมาส์ออก
เริ่มทำงานเมื่อเมาส์ออกจากหน้าต่าง นี่คือสิ่งที่ตรงกันข้ามกับ 'mouse-enter'

คลิกเมาส์
เริ่มทำงานเมื่อคลิกเมาส์ โดยเฉพาะเมื่อปล่อยปุ่มเมาส์

โฟกัส
เริ่มทำงานเมื่อหน้าต่างได้รับโฟกัสอินพุต

เบลอ
เริ่มทำงานเมื่อหน้าต่างสูญเสียโฟกัส

ตัวอย่าง:

# พิมพ์ตำแหน่งเคอร์เซอร์ทุกครั้งที่เมาส์เข้าสู่ตำแหน่งที่มองเห็นได้ในปัจจุบัน
# หน้าต่าง:
xdotool search --onlyvisible เท่านั้น ประพฤติ %@ mouse- enter getmouselocation

# พิมพ์ชื่อหน้าต่างและ pid ทุกครั้งที่ xterm ได้รับการโฟกัส
การค้นหา xdotool --class xterm ทำงาน %@ focus getwindowname getwindowpid

# เลียนแบบโฟกัสติดตามเมาส์
การค้นหา xdotool ประพฤติ %@ เมาส์- เข้าสู่ windowfocus

รับ windowpid [หน้าต่าง]
ส่งออก PID ที่เป็นเจ้าของหน้าต่างที่กำหนด ต้องใช้ความพยายามจากการเป็นเจ้าของแอปพลิเคชัน
หน้าต่างและอาจใช้ไม่ได้กับทุกหน้าต่าง สิ่งนี้ใช้คุณสมบัติ _NET_WM_PID ของ
หน้าต่าง. ดู "คำแนะนำตัวจัดการหน้าต่างเพิ่มเติม" ด้านล่างสำหรับข้อมูลเพิ่มเติม

หากไม่มีหน้าต่าง ค่าเริ่มต้นคือ '%1' หากไม่มีหน้าต่างอยู่ในสแต็กแสดงว่าสิ่งนี้
เป็นข้อผิดพลาด ดู "WINDOW STACK" สำหรับรายละเอียดเพิ่มเติม

ตัวอย่าง: ค้นหา PID สำหรับ xterms ทั้งหมด:
การค้นหา xdotool --class xterm getwindowpid %@

รับชื่อหน้าต่าง [หน้าต่าง]
ส่งออกชื่อของหน้าต่างที่กำหนด หรือที่เรียกว่าชื่อ นี่คือข้อความที่แสดง
ในแถบหัวเรื่องของหน้าต่างโดยตัวจัดการหน้าต่างของคุณ

หากไม่มีหน้าต่าง ค่าเริ่มต้นคือ '%1' หากไม่มีหน้าต่างอยู่ในสแต็กแสดงว่าสิ่งนี้
เป็นข้อผิดพลาด ดู "WINDOW STACK" สำหรับรายละเอียดเพิ่มเติม

รับหน้าต่างเรขาคณิต [ตัวเลือก] [หน้าต่าง]
ส่งออกรูปทรงเรขาคณิต (ตำแหน่งและตำแหน่ง) ของหน้าต่าง ค่าต่างๆ ได้แก่ x, y,
ความกว้าง ความสูง และจำนวนหน้าจอ

--เปลือก
ค่าเอาต์พุตที่เหมาะสมกับ 'eval' ในเชลล์

รับ windowfocus [-NS]
พิมพ์รหัสหน้าต่างของหน้าต่างที่โฟกัสอยู่ในปัจจุบัน บันทึกผลลัพธ์ไปที่หน้าต่าง
ซ้อนกัน. ดู "WINDOW STACK" สำหรับรายละเอียดเพิ่มเติม

หากหน้าต่างปัจจุบันไม่มีคุณสมบัติ WM_CLASS เราถือว่าไม่ใช่ระดับบนสุดปกติ
หน้าต่างและสำรวจขึ้นผู้ปกครองจนกว่าเราจะพบหน้าต่างที่มีชุด WM_CLASS และ
ส่งคืนรหัสหน้าต่างนั้น

หากคุณต้องการให้หน้าต่างมีโฟกัสอยู่ตอนนี้จริงๆ และไม่สนใจว่าหน้าต่างนั้นมี a
การตั้งค่า WM_CLASS จากนั้นใช้ 'getwindowfocus -f'

ขนาดหน้าต่าง [ตัวเลือก] [หน้าต่าง] ความกว้าง ความสูง
กำหนดขนาดหน้าต่างของหน้าต่างที่กำหนด หากไม่ได้กำหนดหน้าต่างไว้ %1 จะเป็นค่าเริ่มต้น
ดู "WINDOW STACK" และ "COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

เปอร์เซ็นต์ใช้ได้กับความกว้างและความสูง สัมพันธ์กับเรขาคณิตของ
หน้าจอหน้าต่างที่เปิดอยู่ ตัวอย่างเช่น ในการทำให้หน้าต่างเต็มความกว้างของหน้าจอ
แต่ความสูงครึ่งหนึ่ง:

xdotool ขนาดหน้าต่างฉัน 100% 50%

เปอร์เซ็นต์ใช้ได้กับ --usehints และยังหมายถึงความกว้างของพิกเซลที่สัมพันธ์กับ
ขนาดหน้าจอ.

ตัวเลือกที่ใช้ได้คือ:

--คำแนะนำ
ใช้คำแนะนำขนาดหน้าต่าง (ถ้ามี) เพื่อกำหนดความกว้างและความสูง มีประโยชน์
บนเทอร์มินัลสำหรับกำหนดขนาดตามแถว/คอลัมน์ของข้อความแทนที่จะเป็นพิกเซล

--ซิงค์
หลังจากส่งคำขอขนาดหน้าต่าง ให้รอจนกว่าหน้าต่างจะถูกปรับขนาดจริง
หากไม่จำเป็นต้องเปลี่ยนแปลง เราจะไม่รอ สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่
ขึ้นอยู่กับการกระทำที่เสร็จสิ้นก่อนที่จะดำเนินการต่อไป

หมายเหตุ: เนื่องจากตัวจัดการหน้าต่างจำนวนมากอาจละเว้นหรือแก้ไขการปรับขนาดเดิม
ขอเราจะรอจนกว่าขนาดจะเปลี่ยนจากขนาดเดิมโดยไม่จำเป็น
ตามขนาดที่ต้องการ

ตัวอย่าง: ในการตั้งค่าเทอร์มินัลให้มีอักขระ 80x24 คุณจะใช้:
ขนาดหน้าต่าง xdotool --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" และ
"COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

ใช้ XSetInputFocus ซึ่งตัวจัดการหน้าต่างหรือโปรแกรมบางโปรแกรมอาจละเว้น

--ซิงค์
หลังจากส่งคำขอโฟกัสหน้าต่างแล้ว ให้รอจนกว่าหน้าต่างจะถูกโฟกัสจริง
สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ขึ้นอยู่กับการดำเนินการที่เสร็จสิ้นก่อนที่จะย้าย
บน

แผนที่หน้าต่าง [ตัวเลือก] [หน้าต่าง]
แมปหน้าต่าง ในคำศัพท์ X11 การทำแผนที่หน้าต่างหมายถึงการทำให้มองเห็นได้บน
หน้าจอ. หากไม่ได้กำหนดหน้าต่างไว้ %1 จะเป็นค่าเริ่มต้น ดู "WINDOW STACK" และ "COMMAND
CHAINING" สำหรับรายละเอียดเพิ่มเติม

--ซิงค์
หลังจากขอแผนที่หน้าต่างแล้ว ให้รอจนกว่าหน้าต่างจะถูกจับคู่จริง
(มองเห็นได้). สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ขึ้นอยู่กับการดำเนินการที่เสร็จสิ้น
ก่อนที่จะย้าย

ลดขนาดหน้าต่าง [ตัวเลือก] [หน้าต่าง]
ย่อหน้าต่างให้เล็กสุด ในคำศัพท์ X11 สิ่งนี้เรียกว่า 'iconify' หากไม่มีหน้าต่างคือ
กำหนด %1 เป็นค่าเริ่มต้น ดู "WINDOW STACK" และ "COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

--ซิงค์
หลังจากขอย่อหน้าต่างแล้ว ให้รอจนกว่าหน้าต่างจะถูกย่อขนาดจริง
สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ขึ้นอยู่กับการดำเนินการที่เสร็จสิ้นก่อนที่จะย้าย
บน

ยกหน้าต่าง [window_id=%1]
ยกหน้าต่างไปที่ด้านบนของสแต็ก สิ่งนี้อาจใช้ไม่ได้กับตัวจัดการหน้าต่างทั้งหมด ถ้า
ไม่มีหน้าต่างให้ %1 เป็นค่าเริ่มต้น ดู "WINDOW STACK" และ "COMMAND CHAINING" สำหรับ
รายละเอียดเพิ่มเติม.

หน้าต่างผู้ปกครอง [แหล่งที่มา_หน้าต่าง] ปลายทาง_window
สร้างหน้าต่างใหม่ สิ่งนี้ทำให้ source_window เป็นหน้าต่างลูกของ
ปลายทาง_window. หากไม่มีการระบุแหล่งที่มา %1 จะเป็นค่าเริ่มต้น "WINDOW STACK" หน้าต่าง
ข้อมูลอ้างอิง (เช่น %1) ใช้ได้กับทั้งคู่ source_window และ ปลายทาง_window ดู
"WINDOW STACK" และ "COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

ปิดหน้าต่าง [หน้าต่าง]
ปิดหน้าต่าง การกระทำนี้จะทำลายหน้าต่าง แต่จะไม่พยายามฆ่า
ลูกค้าควบคุมมัน หากไม่ได้กำหนดหน้าต่างไว้ %1 จะเป็นค่าเริ่มต้น ดู "กองหน้าต่าง"
และ "COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

วินโดว์คิล [หน้าต่าง]
ฆ่าหน้าต่าง การกระทำนี้จะทำลายหน้าต่างและฆ่าไคลเอนต์ที่ควบคุมหน้าต่างนั้น
หากไม่ได้กำหนดหน้าต่างไว้ %1 จะเป็นค่าเริ่มต้น ดู WINDOW STACK และ "COMMAND CHAINING" สำหรับ
รายละเอียดเพิ่มเติม.

หน้าต่างunmap [ตัวเลือก] [window_id=%1]
ยกเลิกการแมปหน้าต่าง ทำให้ไม่ปรากฏบนหน้าจอของคุณอีกต่อไป หากไม่มีหน้าต่างให้ %1
เป็นค่าเริ่มต้น ดู "WINDOW STACK" และ "COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

--ซิงค์
หลังจากขอยกเลิกการแมปหน้าต่างแล้ว ให้รอจนกว่าหน้าต่างจะยกเลิกการแมปจริงๆ
(ที่ซ่อนอยู่). สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ขึ้นอยู่กับการดำเนินการที่เสร็จสิ้นก่อน
กำลังเดินทางไป.

set_window [ตัวเลือก] [หน้าต่าง=%1]
ตั้งค่าคุณสมบัติเกี่ยวกับหน้าต่าง หากไม่ได้กำหนดหน้าต่างไว้ %1 จะเป็นค่าเริ่มต้น ดู "WINDOW
STACK" และ "COMMAND CHAINING" สำหรับรายละเอียดเพิ่มเติม

ตัวเลือก:

--ชื่อ ชื่อใหม่
ตั้งค่าหน้าต่าง WM_NAME (ชื่อหน้าต่างโดยปกติ)

--icon-ชื่อ ชื่อไอคอนใหม่
ตั้งค่าหน้าต่าง WM_ICON_NAME (มักจะย่อชื่อหน้าต่าง)

--บทบาท บทบาทใหม่
ตั้งค่าหน้าต่าง WM_WINDOW_ROLE

--ชื่อคลาส ชื่อคลาสใหม่
ตั้งชื่อคลาสของหน้าต่าง (เพื่อไม่ให้สับสนกับคลาสของหน้าต่าง)

--ระดับ คลาสใหม่
ตั้งค่าคลาสของหน้าต่าง (เพื่อไม่ให้สับสนกับชื่อคลาสของหน้าต่าง)

--แทนที่การเปลี่ยนเส้นทาง ความคุ้มค่า
ตั้งค่า override_redirect ของหน้าต่าง ค่านี้เป็นคำใบ้สำหรับตัวจัดการหน้าต่าง
ว่าควรจะจัดการหรือไม่ หากค่าการเปลี่ยนเส้นทางเป็น 0 แสดงว่า
ตัวจัดการหน้าต่างจะวาดเส้นขอบและจัดการหน้าต่างนี้ตามปกติ ถ้าค่าเป็น
1 ตัวจัดการหน้าต่างจะละเว้นหน้าต่างนี้

หากคุณเปลี่ยนค่านี้ ตัวจัดการหน้าต่างของคุณอาจไม่สังเกตเห็นการเปลี่ยนแปลงจนกว่า
หน้าต่างถูกแมปอีกครั้ง ดังนั้นคุณอาจต้องการออก 'windowunmap' และ 'windowmap' เป็น
ทำให้ตัวจัดการหน้าต่างจดบันทึก

เดสก์ทอป AND หน้าต่าง คำสั่ง


คำสั่งเหล่านี้เป็นไปตามมาตรฐาน EWMH ดูส่วน "คำแนะนำตัวจัดการหน้าต่างเพิ่มเติม"
เพื่อสอบถามรายละเอียดเพิ่มเติมได้ค่ะ

เปิดใช้งานหน้าต่าง [ตัวเลือก] [หน้าต่าง]
เปิดใช้งานหน้าต่าง คำสั่งนี้แตกต่างจาก windowfocus: ถ้าหน้าต่างเปิดอยู่
เดสก์ท็อปอื่น เราจะเปลี่ยนไปใช้เดสก์ท็อปนั้น นอกจากนี้ยังใช้วิธีการที่แตกต่างกันสำหรับ
ยกหน้าต่างขึ้น ฉันแนะนำให้ลองใช้คำสั่งนี้ก่อนใช้ windowfocus เช่น
มันจะทำงานกับตัวจัดการหน้าต่างเพิ่มเติม

หากไม่ได้กำหนดหน้าต่างไว้ %1 จะเป็นค่าเริ่มต้น ดู "WINDOW STACK" และ "COMMAND CHAINING"
.

--ซิงค์
หลังจากส่งการเปิดใช้งานหน้าต่าง ให้รอจนกว่าหน้าต่างจะเปิดใช้งานจริง
สิ่งนี้มีประโยชน์สำหรับสคริปต์ที่ขึ้นอยู่กับการดำเนินการที่เสร็จสิ้นก่อนที่จะย้าย
บน

หน้าต่าง getactive
ส่งออกหน้าต่างที่ใช้งานอยู่ในปัจจุบัน คำสั่งนี้มักจะเชื่อถือได้มากกว่า
รับหน้าต่างโฟกัส ผลลัพธ์จะถูกบันทึกลงในสแต็กหน้าต่าง ดู "WINDOW STACK" สำหรับข้อมูลเพิ่มเติม
รายละเอียด

set_num_desktops จำนวน
เปลี่ยนจำนวนเดสก์ท็อปหรือพื้นที่ทำงาน

get_num_desktops
ส่งออกจำนวนเดสก์ท็อปปัจจุบัน

get_desktop_viewport [--เปลือก]
รายงานตำแหน่งของวิวพอร์ตปัจจุบัน ถ้า --shell ได้รับ ผลลัพธ์จะเป็นมิตรกับ
เชลล์ eval

บางครั้งใช้วิวพอร์ตแทน 'เดสก์ท็อปเสมือน' ในตัวจัดการหน้าต่างบางตัว อา
วิวพอร์ตเป็นเพียงมุมมองบนพื้นที่เดสก์ท็อปขนาดใหญ่มาก

set_desktop_viewport x y
ย้ายวิวพอร์ตไปยังตำแหน่งที่กำหนด คำขอทั้งหมดจะไม่ถูกปฏิบัติตาม - บางอย่าง
ผู้ดูแลหน้าต่างปฏิบัติตามคำขอที่สอดคล้องกับขอบเขตของพื้นที่ทำงานเท่านั้น เช่น
ขนาดหน้าจอ.

ตัวอย่างเช่น หากหน้าจอของคุณมีขนาด 1280x800 คุณสามารถย้ายไปยังพื้นที่ทำงานที่ 2 ได้โดยทำดังนี้
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 to do
เช่น การล็อกหน้าจอ

ตัวเลือก:

--ซิงค์
บล็อกจนกว่ากระบวนการลูกจะออก สถานะการออกจากกระบวนการลูกจะถูกส่งต่อ
ไปยังกระบวนการหลัก (xdotool) ที่คัดลอก

ตัวอย่าง:
#ล็อกหน้าจอเมื่อเมาส์อยู่มุมบนขวา
xdotool behave_screen_edge --delay 1000 บนขวา
exec gnome-สกรีนเซฟเวอร์-คำสั่ง --lock
# แทนที่ 'xscreensaver-command -lock' หากคุณใช้โปรแกรมนั้น

# ต่อไปนี้จะล้มเหลวในการเลื่อนเมาส์เพราะเราใช้ '--sync' และ
# /bin/เท็จ ออกจากศูนย์:
xdotool exec --ซิงค์ /bin/เท็จ เม้าส์มูฟ 0 0

# สิ่งนี้ประสบความสำเร็จเนื่องจากเราไม่ได้ใช้ --sync กับคำสั่ง exec
xdotool ผู้บริหาร /bin/เท็จ เม้าส์มูฟ 0 0

นอนหลับ วินาที
นอนในช่วงเวลาที่กำหนด เศษส่วนของวินาที (เช่น 1.3 หรือ 0.4) ถูกต้องที่นี่

สคริปต์


xdotool สามารถอ่านรายการคำสั่งผ่าน stdin หรือไฟล์ได้หากต้องการ สคริปต์จะล้มเหลว
เมื่อคำสั่งใดล้มเหลว

อันที่จริง โหมด 'สคริปต์' นั้นยังไม่สมบูรณ์และอาจต่ำกว่าที่คุณคาดไว้ ถ้า
คุณมีข้อเสนอแนะ โปรดส่งอีเมลถึงรายการหรือแจ้งข้อบกพร่อง (ดูการติดต่อ)

สคริปต์สามารถใช้อาร์กิวเมนต์ตำแหน่ง (แสดงโดย $1, $2, ...) และสภาพแวดล้อม
ตัวแปร (เช่น $HOME หรือ $WINDOWID) การอ้างอิงอาร์กิวเมนต์ควรทำงานตามที่คาดไว้

สคริปต์ได้รับการประมวลผลสำหรับการขยายตัวแปรพารามิเตอร์และสภาพแวดล้อม จากนั้นรันเสมือน
คุณได้เรียกใช้ xdotool ด้วยสคริปต์ทั้งหมดในบรรทัดเดียว (โดยใช้ COMMAND CHAINING)

· อ่านคำสั่งจากไฟล์:

xdotool ชื่อไฟล์

· อ่านคำสั่งจาก stdin:

เอ็กซ์โดทูล -

· อ่านคำสั่งจากไฟล์ที่เปลี่ยนเส้นทาง

xdotool - < myfile

คุณยังสามารถเขียนสคริปต์ที่รัน xdotool เท่านั้น ตัวอย่าง:

#!/usr/local/bin/xdotool
ค้นหา --onlyvisible --classname $1

ขนาดหน้าต่าง %@ $2 $3
เพิ่มหน้าต่าง %@

วินโดว์มูฟ %1 0 0
วินโดว์มูฟ %2 $2 0
วินโดว์มูฟ %3 0 $3
วินโดว์มูฟ %4 $2 $3

สคริปต์นี้จะนำหน้าต่างทั้งหมดที่จับคู่โดยแบบสอบถามชื่อคลาสที่กำหนดโดย arg1 ($ 1) และ
ขนาด/ย้ายลงในตาราง 2x2 โดยมีขนาดหน้าต่างตามพารามิเตอร์ที่ 2 และ 3

นี่คือตัวอย่างการใช้งาน:

% ./myscript xterm 600 400

การเรียกใช้แบบนี้จะใช้ xterms ที่มองเห็นได้ 4 ตัว ยกขึ้น และย้ายไปยังไทล์ 2x2
ตารางโดยแต่ละหน้าต่างมีขนาด 600x400 พิกเซล

ตัวแก้ไขที่ชัดเจน


คำสั่งใด ๆ ที่ใช้ --ตัวแก้ไขที่ชัดเจน ธงจะพยายามล้างอินพุตที่ใช้งานอยู่
ตัวแก้ไขระหว่างคำสั่งและเรียกคืนในภายหลัง

ตัวอย่างเช่น หากคุณต้องการรันคำสั่งนี้:
คีย์ xdotool a

ผลลัพธ์จะเป็น 'a' หรือ 'A' ขึ้นอยู่กับว่าคุณกดปุ่ม shift ค้างไว้หรือไม่
บนแป้นพิมพ์ของคุณ มักจะไม่พึงปรารถนาที่จะมีตัวปรับแต่งใด ๆ ที่ทำงานอยู่ ดังนั้นคุณสามารถบอกได้
xdotool เพื่อล้างตัวดัดแปลงที่ใช้งานอยู่

ลำดับของการดำเนินการหากคุณกด shift ค้างไว้ขณะเรียกใช้ 'xdotool key --clearmodifiers a'
นี่คือ:

1. แบบสอบถามสำหรับตัวปรับแต่งที่ใช้งานอยู่ทั้งหมด (ค้นหา shift ในกรณีนี้)
2. พยายามล้างกะโดยส่ง 'key up' สำหรับปุ่ม shift
3. เรียกใช้ 'xdotool คีย์ a' ปกติ
4. กู้คืนปุ่ม shift โดยส่ง 'key down' สำหรับ shift

เค้ก --ตัวแก้ไขที่ชัดเจน ขณะนี้แฟล็กสามารถล้างสิ่งต่อไปนี้:

· คีย์ใดๆ ในคีย์แมปที่ใช้งานอยู่ซึ่งมีตัวปรับแต่งที่เกี่ยวข้อง (ดู
xmodmap(1) เอาต์พุต 'xmodmap -pm')

· ปุ่มเมาส์ (1, 2, 3, 4 และ 5)

· แคปล็อค

ส่ง หมายเหตุ


หากคุณกำลังพยายามส่งการป้อนข้อมูลที่สำคัญไปยังหน้าต่างใดหน้าต่างหนึ่ง แต่ดูเหมือนว่าจะไม่
ใช้งานได้ เป็นไปได้ว่าแอปพลิเคชันของคุณไม่สนใจเหตุการณ์ที่ xdotool กำลังสร้างขึ้น
นี่เป็นเรื่องปกติธรรมดา

การส่งการกดแป้นไปยังหน้าต่างเฉพาะใช้ API ที่แตกต่างจากการพิมพ์ไปที่
หน้าต่างที่ใช้งานอยู่ หากคุณระบุ 'xdotool type --window 12345 hello' xdotool จะสร้าง
เหตุการณ์สำคัญและส่งไปที่หน้าต่าง 12345 โดยตรง อย่างไรก็ตามเซิร์ฟเวอร์ X11 จะตั้งค่า a
แฟล็กพิเศษในทุกเหตุการณ์ที่สร้างขึ้นในลักษณะนี้ (ดู XEvent.xany.send_event ใน X11
คู่มือ). หลายโปรแกรมสังเกตแฟล็กนี้และปฏิเสธเหตุการณ์เหล่านี้

สิ่งสำคัญที่ควรทราบสำหรับเหตุการณ์คีย์และเมาส์ เราใช้ XSendEvent ต่อเมื่อ a
กำหนดเป้าหมายหน้าต่างเฉพาะ มิฉะนั้น เราใช้ XTEST

บางโปรแกรมสามารถกำหนดค่าให้ยอมรับเหตุการณ์ได้แม้ว่าจะสร้างโดย xdotool
ขอเอกสารประกอบการสมัครของคุณเพื่อขอความช่วยเหลือ

หมายเหตุการใช้งานเฉพาะ (จากการทดสอบของผู้เขียน): * Firefox 3 ดูเหมือนจะไม่สนใจทั้งหมด
อินพุตเมื่อไม่มีโฟกัส * xterm สามารถกำหนดค่าได้ในขณะที่ทำงานด้วย
ctrl+leftclick, 'Allow SendEvents' * gnome-terminal ดูเหมือนจะยอมรับอินพุตที่สร้างขึ้นโดย
ค่าเริ่มต้น.

หน้าต่าง ซ้อนกัน


คำสั่งบางอย่าง (ค้นหา, getactivewindow, getwindowfocus) จะค้นหาหน้าต่างให้คุณ
ผลลัพธ์เหล่านี้โดยทั่วไปจะพิมพ์เป็น stdout แต่จะถูกบันทึกไว้ในหน่วยความจำสำหรับอนาคตด้วย
ใช้ตลอดอายุการใช้งานของกระบวนการ xdotool ดู "COMMAND CHAINING" สำหรับข้อมูลเพิ่มเติม
ข้อมูล

การสนับสนุนการปรับเปลี่ยนเพียงอย่างเดียวสำหรับหน้าต่างสแต็กคือการแทนที่ นั่นคือสองในสอง
การค้นหาตามลำดับ เฉพาะผลลัพธ์สุดท้ายเท่านั้นที่จะเป็น window stack

คำสั่ง ล่ามโซ่


xdotool รองรับการเรียกใช้หลายคำสั่งในการเรียกใช้ครั้งเดียว โดยทั่วไป คุณจะเริ่ม
ด้วยคำสั่งค้นหา (ดู "WINDOW STACK") จากนั้นดำเนินการชุดของการกระทำเหล่านั้น
ผล.

ในการสอบถามกลุ่มหน้าต่าง คุณสามารถใช้สัญลักษณ์พิเศษ "%N" โดยที่ N คือตัวเลขหรือ
'@' สัญลักษณ์. หากระบุ %N หน้าต่างที่ N จะถูกเลือกจากสแต็กหน้าต่าง
โดยทั่วไปคุณจะต้องการเฉพาะหน้าต่างแรกหรือทุกหน้าต่าง โปรดทราบว่าคำสั่งของ
หน้าต่างในสแตกหน้าต่างสอดคล้องกับลำดับการซ้อนหน้าต่าง เช่น ด้านล่างสุด
หน้าต่างจะถูกรายงานก่อน (ดู XQueryTree(3)). ดังนั้นลำดับของหน้าต่างใน
สแต็กหน้าต่างอาจไม่สอดคล้องกันในการเรียกใช้

สัญกรณ์ที่อธิบายข้างต้นถูกใช้เป็นอาร์กิวเมนต์ "window" สำหรับคำสั่งใดๆ ที่ระบุ

ตัวอย่างเช่น ในการปรับขนาด xterms ทั้งหมดเป็น 80x24:

การค้นหา xdotool --class xterm -- ขนาดหน้าต่าง --usehints %@ 80 24

ปรับขนาดย้ายหน้าต่างปัจจุบัน:

xdotool getactivewindow หน้าต่างย้าย 0 0

ในทุกกรณี อาร์กิวเมนต์หน้าต่างเริ่มต้น หากไม่ระบุ จะมีค่าเริ่มต้นเป็น "%1" มันคือ
เห็นได้ชัดว่าเกิดข้อผิดพลาดหากคุณละเว้นอาร์กิวเมนต์ของหน้าต่างและสแต็กหน้าต่างว่างเปล่า ถ้าคุณ
ลองใช้ window stack แล้วว่างเปล่าก็เกิดข้อผิดพลาดเช่นกัน

วิธีเปิดใช้งานหน้าต่าง firefox แรกที่พบ:

การค้นหา xdotool --class firefox windowactivate

สิ่งเหล่านี้จะเกิดข้อผิดพลาด:

หน้าต่าง xdotool เปิดใช้งาน
หน้าต่าง xdotool เปิดใช้งาน %1
xdotool window เปิดใช้งาน %@

เมื่อ xdotool ออก สแต็กหน้าต่างปัจจุบันจะหายไป

นอกจากนี้ คำสั่งที่แก้ไข "WINDOW STACK" จะไม่พิมพ์ผลลัพธ์หาก
ไม่ใช่คำสั่งสุดท้าย ตัวอย่างเช่น:

# ส่งออกหน้าต่างที่ใช้งานอยู่:
% xdotool หน้าต่าง getactive
20971533

# ส่งออก pid ของหน้าต่างที่ใช้งานอยู่ แต่ไม่ใช่รหัสหน้าต่างที่ใช้งานอยู่:
% xdotool getactivewindow getwindowpid
4686

ขยาย หน้าต่าง MANAGER ข้อเสนอแนะ


รองรับมาตรฐาน 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 จะพยายามตรวจจับและบอกคุณว่าการดำเนินการนั้นต้องการฟีเจอร์หรือไม่
ระบบของคุณไม่รองรับในขณะนี้

สำหรับคุณสมบัติเฉพาะตัวจัดการหน้าต่าง โปรดดูที่ "คำแนะนำตัวจัดการหน้าต่างเพิ่มเติม"

เอ็กซ์เทสต์
หากเซิร์ฟเวอร์ X ของคุณไม่รองรับ XTEST แสดงว่าคุณสมบัติการพิมพ์และการเคลื่อนเมาส์บางอย่าง
อาจไม่ทำงาน โดยเฉพาะการพิมพ์และการกระทำของเมาส์ที่ดำเนินการกับ "หน้าต่างปัจจุบัน"
(หน้าต่าง 0 ใน libxdo) ไม่น่าจะทำงาน

ในกรณีส่วนใหญ่ XTEST เป็นคุณสมบัติที่คุณสามารถเปิดใช้งานบนเซิร์ฟเวอร์ X ของคุณหากไม่ได้เปิดใช้งานอยู่
โดยค่าเริ่มต้น

คุณสามารถดูรายการส่วนขยาย X ที่รองรับได้โดยพิมพ์ 'xdpyinfo' แล้วมองหา
ข้อความ 'จำนวนนามสกุล: ...'

ใช้ xdotool ออนไลน์โดยใช้บริการ onworks.net



โปรแกรมออนไลน์ Linux และ Windows ล่าสุด