AppleScript ตั้งโฟกัสที่หน้าต่างเทอร์มินัล


2

ฉันมี AppleScript ซึ่งเปลี่ยนตำแหน่งและขนาดของเทอร์มินัลแอปพลิเคชัน:

ชอบที่นี่:

tell application "Terminal"
   set position of front window to {1, 1}
   set size of front window to {1, 1}
end tell

เมื่อฉันตั้งค่าขนาดของหน้าต่าง{1, 1}เป็นขนาดเล็กมากจนมองไม่เห็น

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

วิธีที่ดีที่สุดจะอยู่กับ AppleScript แต่วิธีแก้ปัญหาทางโปรแกรมด้วย python จะดีมาก


คุณช่วยให้แม่นยำว่าอะไรจะเป็นกรณีการใช้งานทั่วไปของสิ่งที่คุณขอ? จากคำถามของคุณยังไม่ชัดเจนว่าคุณพยายามทำอะไร
Jozef Legény

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

คุณสามารถบอกผู้ใช้ไม่ให้พิมพ์ / ทำอะไร
user14492

ไม่สามารถทำได้ทุกการกระทำของผู้ใช้ควรถูกละเว้นในระหว่างที่เทอร์มินัลถูกเปิดและโฟกัส
Oni1

มีเหตุผลใดบ้างที่คุณไม่สามารถใช้เชลล์สคริปต์เพื่อทำสิ่งนี้? ดูเหมือนว่าไม่จำเป็นที่จะต้องใช้การเขียนสคริปต์ UI เพื่อเรียกใช้คำสั่งผ่านเทอร์มินัล
Stan Hutcheon

คำตอบ:


1
activate application "Terminal"
tell application "Terminal"
   set position of front window to {1, 1}
   set size of front window to {1, 1}
end tell
tell application "System Events" to keystroke "your message here\rexit\r"

นอกจากนี้คุณสามารถรับความช่วยเหลือจาก AppleScript รับแอปพลิเคชันที่ใช้งานอยู่

เพื่อทำการโฟกัสกลับไปที่แอปพลิเคชันดั้งเดิม


คำตอบของคุณไม่ถูกต้อง แต่คำแนะนำของคุณสำหรับคำถามที่ AppleScript ได้รับแอปพลิเคชันที่ใช้งานช่วยฉันได้มาก!
Oni1

"คำตอบของคุณไม่ถูกต้อง" ไม่ช่วยชุมชน โปรดแชร์รายละเอียดและหากคุณคิดว่าจะมีวิธีแก้ปัญหาที่ดีกว่านั้นด้วย
javadevg

ดูคำตอบของฉัน
Oni1

0

ด้วยความช่วยเหลือของjavadevgและคำตอบของAppleScript ที่ได้รับแอปพลิเคชันที่ใช้งานอยู่ฉันได้สร้างโซลูชันต่อไปนี้:

tell application "Terminal"
  activate
  set position of front window to {1, 1}
  set size of front window to {111, 111}
end tell

tell application "System Events"
  set frontmostProcess to first process where it is frontmost
  set visible of frontmostProcess to false
  repeat while (frontmostProcess is frontmost)
    delay 0.1
  end repeat
  set secondFrontmost to name of first process where it is frontmost
  set frontmost of frontmostProcess to true
end tell

tell application "System Events"
  set activeApp to name of first application process whose frontmost is true
  repeat while (get name of every application process) contains "Terminal"
    try
        activate application "Terminal"
    end try
  end repeat
end tell

ฉันไม่ได้ทำงานกับ AppleScript มากนักดังนั้นโปรดแก้ตัวแบบการเข้ารหัสของฉันและอื่น ๆ

ด้วยสคริปต์นี้เทอร์มินัลจะเปิดขึ้นและจะไม่ทำให้โฟกัสหายไปจนกว่าเทอร์มินัลจะปิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.