ฉันจะสลับไปยังโปรแกรมที่รันอยู่โดยใช้เทอร์มินัลได้อย่างไร
สำหรับ examaple:
firefox
เปิดหน้าต่าง firefox ใหม่
มีคำสั่งที่จะโฟกัสหน้าต่าง firefox ที่เปิดไปแล้วหรือไม่?
ฉันจะสลับไปยังโปรแกรมที่รันอยู่โดยใช้เทอร์มินัลได้อย่างไร
สำหรับ examaple:
firefox
เปิดหน้าต่าง firefox ใหม่
มีคำสั่งที่จะโฟกัสหน้าต่าง firefox ที่เปิดไปแล้วหรือไม่?
คำตอบ:
สมมติว่าคุณติดตั้งwmctrlแล้ว (เรียกใช้sudo apt-get install wmctrl
หากไม่ใช่):
คำสั่ง:
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"
จะยกหน้าต่างที่เปิดล่าสุด gedit
แทนที่ด้วยแอปพลิเคชันอื่น
pgrep gedit
รับ pid ของ gedit
wmctrl -lp
แสดงรายการ windows ทั้งหมดและ pid ที่เป็นของ
awk '{ print $1 }'
แยกออกจากหน้าต่าง ID (สตริงแรกในบรรทัด)
$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')
ดังนั้นจะค้นหารหัสหน้าต่างของหน้าต่างที่สร้างขึ้นล่าสุดของgedit
(ผลลัพธ์ของwmctrl -lp
รายการหน้าต่างตามลำดับเวลาของการสร้างหากแอปพลิเคชันมีหลาย windows ให้tail -1
ส่งคืนหน้าต่างสุดท้าย)
wmctrl -ia
ต่อมายกหน้าต่างโดย window-id
... เพื่อให้ทำงานกับแอปพลิเคชันเป็นอาร์กิวเมนต์:
#!/bin/bash
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
switchto.sh
เรียกใช้เป็น (เช่น)
/path/to/switchto.sh firefox
ในทางทฤษฎีคำสั่ง:
xdotool search --class gedit windowactivate
ควรทำแบบเดียวกัน ควรเพิ่มหน้าต่างที่พบครั้งแรกของgedit
ในกรณีนี้
ดูเหมือนว่าแข็งแกร่งน้อยลง ในระบบของฉัน (Unity) ไม่ได้ทำอะไรเลย
หากคุณใช้ firefox runned firefox &
คุณสามารถใช้jobs
เพื่อดูหมายเลข เพื่อนำมาเขียนเบื้องหน้า%n firefox
ซึ่งn
ย่อมาจากจำนวน ตัวอย่าง:
sabrina@ubuntu:~$ jobs
[1]+ Stopped firefox
sabrina@ubuntu:~$ fg %1
นอกจากนี้คุณสามารถ "ฆ่า" โปรแกรม:
sabrina@ubuntu:~$ kill %1