ฉันค่อนข้างแน่ใจว่าเป็นไปไม่ได้ที่จะทำ เหตุผลที่เป็นเช่นนั้นคือสภาพแวดล้อมแบบวินโดว์อย่าง GNOME คาดว่าซอฟต์แวร์จะจัดการสิ่งนี้และผู้ผลิตซอฟต์แวร์คาดว่าสภาพแวดล้อมแบบวินโดวส์จะจัดการสิ่งนี้
Devilspie เป็นแนวคิดที่ดี แต่ใช้รูปแบบการจับคู่ (เช่นถ้าชื่อ == 'google-chrome') แล้วจะเกิดอะไรขึ้นถ้าฉันเปิดเบราว์เซอร์สองตัว พวกเขาทั้งสองถูกย้ายไปยังพื้นที่ทำงานเดียวกันหรือไม่ ฉันมีพื้นที่ทำงาน 6x3 = 18 แต่ละอันมีตัวอย่างของโครเมียมเป็นพิเศษ มันจะช่วยถ้าฉันสามารถเปลี่ยนชื่อโปรแกรมเหล่านี้ (เช่น 'google-chrome1', 'google-chrome2' ... ) แต่ฉันหาวิธีทำไม่ได้ ดังนั้นเราต้องใช้ wmctrl
wmctrl นั้นดีกว่า b / c เล็กน้อยนอกเหนือจากการใช้หัวเรื่องหน้าต่างคุณยังสามารถใช้ ID หน้าต่างหรือเพียงแค่ใช้หน้าต่างที่ไฮไลต์อยู่ในปัจจุบัน รหัสหน้าต่างเป็นความเจ็บปวดที่จะได้รับ B / C พวกเขาจะไม่สร้างขึ้นทันที ดูด้านล่าง
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
แต่การควบคุมจะไม่ถูกส่งกลับไปที่บรรทัดคำสั่งจนกว่า AFED จะออกจากระบบ สิ่งที่เราต้องทำเพื่อให้ได้สิ่งนี้คือการใส่&
เครื่องหมาย
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
แต่ตอนนี้การควบคุมคือ 99.999% ของเวลากลับไปที่บรรทัดคำสั่งก่อนที่ตัวจัดการหน้าต่างจะเปิดหน้าต่างและไม่มีวิธีหา id หน้าต่าง เราต้องตั้งค่าเทคนิคการวนลูปที่ซับซ้อนมากเพื่อทดสอบว่ามีการสร้างหน้าต่างใหม่หรือไม่และต้องเดาว่าเป็นหน้าต่างที่เรากำลังมองหาหรือไม่
การตรวจสอบหน้าต่างที่ใช้งานผ่านการตั้งค่าสถานะ:ACTIVE:
มีปัญหาเดียวกันไม่รอให้โปรแกรมทำงานเสร็จ
wmctrl
นัดฉันเป็นโปรแกรมที่แปลกมาก ดูเหมือนว่ามันถูกออกแบบมาสำหรับผู้ที่ไม่มีเม้าส์หรือไม่สามารถลากโปรแกรมของพวกเขาข้ามพื้นที่ทำงานได้