นี่คือคำสั่ง 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