ขอบคุณเนท. ฉันใช้ความคิดที่คุณให้ฉันและคิดสคริปต์นั้นขึ้นมาเพื่อแก้ปัญหาของฉัน เป็นสคริปต์หลามที่ออกแบบมาโดยเฉพาะสำหรับความละเอียดของฉันซึ่งก็คือ 1920x1080 นอกจากนี้ยังขึ้นอยู่กับเครื่องมือที่เรียกว่า wmctrl นี่คือสคริปต์:
#!/usr/bin/python3
นำเข้าระบบปฏิบัติการ
def กำจัด (iter):
ความละเอียด = []
สำหรับฉันใน iter:
ถ้าฉัน:
res.append(i)
คืนความละเอียด
พื้นที่ทำงาน = "wmctrl -d | grep '*' | ตัด -d ' ' -f1 > /tmp/curr_ws"
os.system (พื้นที่ทำงาน)
out_workspace = ""
ด้วย open("/tmp/curr_ws","r") เป็น f:
out_workspace = f.read()
out_workspace = int (พื้นที่ทำงานนอก)
พิมพ์ ("DEBUG: พื้นที่ทำงานปัจจุบัน:", out_workspace)
ตำแหน่ง = 'wmctrl -lG | grep "กาลี:" | grep "^........... {0}" | tr -s " " | ตัด -d " " -f 3,4 > /tmp/positions'.format(out_workspace)
ขนาด = 'wmctrl -lG | grep "กาลี:" | grep "^........... {0}" | tr -s " " | ตัด -d " " -f 5,6 > /tmp/sizes'.format(out_workspace)
os.system(ตำแหน่ง)
out_positions = ""
ด้วย open("/tmp/positions","r") เป็น f:
out_positions = f.read()
out_positions = กำจัด (out_positions.split ("\n"))
os.system (ขนาด)
out_sizes = ""
ด้วย open("/tmp/sizes","r") เป็น f:
out_sizes = f.read()
out_sizes = กำจัด (out_sizes.split ("\n"))
terminal_positions = [[110, 101, 854, 479], [973, 101, 854, 479], [110, 611, 854, 479], [973, 611, 854, 479]]
terminal_strings = ["gnome-terminal --geometry 105x25+100+45", "gnome-terminal --geometry 105x25+963+45",
"gnome-terminal --geometry 105x25+100+555", "gnome-terminal --geometry 105x25+963+555"]
parsed_positions = []
สำหรับผมในช่วง (0,len (out_positions)):
parsed_positions.append([ int(out_positions[i].split(" ")[0]),int(out_positions[i].split(" ")[1]),int(out_sizes[i].split(" " )[0]),int(out_sizes[i].split(" ")[1]) ])
พิมพ์ ("DEBUG: ตำแหน่ง:", parsed_positions)
ตรวจสอบ def (term_pos, parsed_pos):
ดัชนี = 0
เหลื่อมกัน = เท็จ
สำหรับฉันใน terminal_positions:
เหลื่อมกัน = เท็จ
สำหรับ j ใน parsed_positions:
ax0 = term_left_start = ฉัน[0]
ay0 = term_up_start = ฉัน[1]
ax1 = term_left_end = ฉัน[0] + ฉัน[2]
ay1 = term_up_end = ฉัน[1] + ฉัน[3]
bx0 = pars_left_start = j[0]
by0 = pars_up_start = j[1]
bx1 = pars_left_end = j[0] + j[2]
by1 = pars_up_end = j[1] + j[3]
# ถ้า term_left_start >= pars_left_end หรือ term_left_end <= pars_left_start หรือ term_up_end <= pars_up_start หรือ term_up_start >= pars_up_end:
#ซ้อน = จริง
ถ้า ((bx0 <= ax0) และ (ax1 <= bx1)) หรือ ((ax0 <= bx0 <= ax1) และ (ax1 <= bx1)) หรือ ((ax0 >= bx0) และ (ax1 >= bx1 > = ax0)) หรือ ((ax0 <= bx0 <= ax1) และ (ax1 >= bx1 >= ax0)):
ถ้า ((by0 <= ay0) และ (ay1 <= by1)) หรือ ((ay0 <= by0 <= ay1) และ (ay1 <= by1)) หรือ ((ay0 >= by0) และ (ay1 >= by1 > = ay0)) หรือ ((ay0 <= by0 <= ay1) และ (ay1 >= by1 >= ay0)):
เหลื่อม = จริง
หากทับซ้อนกัน:
ดัชนี += 1
อื่น:
ดัชนีผลตอบแทน
กลับ -1
สถานที่ = ตรวจสอบ (terminal_positions, parsed_positions)
ถ้าสถานที่ == -1:
os.system ("คำพังเพยเทอร์มินัล")
อื่น:
os.system (terminal_strings[สถานที่])
คุณต้องรวมตำแหน่งของสคริปต์ในตัวแปร PATH ของคุณ จากนั้นกำหนดทางลัดให้กับคำสั่งที่เรียกใช้สคริปต์