แนวคิดต่อไปนี้แสดงให้เห็นถึงวิธีที่สะดวกซึ่งผู้ใช้สามารถย้ายหน้าต่างที่ทำเครื่องหมายได้จากพื้นที่ทำงานใด ๆ ไปยังหน้าต่างที่ใช้งานอยู่ในสภาพแวดล้อม XFCE
MOVABLE_WINDOW_IDX ที่ MOVABLE_WINDOW_IDX สามารถเป็นจำนวนเต็มตั้งแต่ 0 ถึง 9Super+Shift+Key_MOVABLE_WINDOW_IDX เพื่อทำเครื่องหมายหน้าต่างที่ใช้งานอยู่และเพื่อกำหนดรหัสหน้าต่างที่เคลื่อนย้ายได้ที่สอดคล้องกันเป็น MOVABLE_WINDOW_IDXSuper+Key_MOVABLE_WINDOW_IDX Key_MOVABLE_WINDOW_IDX ล้วนขึ้นอยู่กับการตั้งค่าคีย์คีย์ของผู้ใช้ วิธีหนึ่งในการใช้แนวคิดนี้คือผ่านคำแนะนำต่อไปนี้ เป็นที่น่าสังเกตว่าวิธีนี้ขึ้นอยู่กับแพ็คเกจ APT xdotool และ wmctrl
.window_summonerget_window_id.py และจะมีเนื้อหาต่อไปนี้ import subprocess
import sys
import re
import os
rm_newline = lambda str_ : re . sub ( ' n ' , '' , str_ )
current_dpath , _ = os . path . split ( sys . argv [ 0 ]); del _
MOVABLE_WINDOW_IDX = int ( sys . argv [ 1 ])
with open ( current_dpath + '/' + 'movable_window_id_list.txt' , 'r' ) as file :
MOVABLE_WINDOWS_ID = rm_newline ( file . read ()). split ( ' ' )
MOVABLE_WINDOWS_ID [ MOVABLE_WINDOW_IDX ] = rm_newline ( subprocess . check_output ([ 'xdotool' , 'getactivewindow' ]). decode ( sys . stdout . encoding ))
with open ( current_dpath + '/' + 'movable_window_id_list.txt' , 'w' ) as file :
MOVABLE_WINDOWS_ID = file . write ( ' ' . join ( MOVABLE_WINDOWS_ID )) ไฟล์อื่นจะเป็น summon_window.py ด้วยเนื้อหาของมัน
import subprocess
import sys
import re
import os
rm_newline = lambda str_ : re . sub ( ' n ' , '' , str_ )
current_dpath , _ = os . path . split ( sys . argv [ 0 ]); del _
MOVABLE_WINDOW_IDX = int ( sys . argv [ 1 ])
with open ( current_dpath + '/' + 'movable_window_id_list.txt' , 'r' ) as file :
MOVABLE_WINDOWS_ID = rm_newline ( file . read ()). split ( ' ' )
os . system ( """wmctrl -ir %s -t $(wmctrl -d | grep "*" | cut -d' ' -f1)""" % ( MOVABLE_WINDOWS_ID [ MOVABLE_WINDOW_IDX ]))
os . system ( 'xdotool windowactivate %s' % ( MOVABLE_WINDOWS_ID [ MOVABLE_WINDOW_IDX ]))เพื่อทำลาย
wmctrl -ir $MOVABLE_WINDOW_ID -t $(wmctrl -d | grep "*" | cut -d' ' -f1) :
wmctrl : ยูทิลิตี้บรรทัดคำสั่งที่สามารถโต้ตอบกับและจัดการกับหน้าต่างระบบหน้าต่าง x
-ir $MOVABLE_WINDOW_ID : ธง -ir บอก wmctrl เพื่อ "โต้ตอบกับหน้าต่างด้วย ID ตัวเลขที่กำหนด" $MOVABLE_WINDOW_ID เป็นตัวแปร bash ที่มี ID ตัวเลขของหน้าต่างที่เราต้องการย้าย
-t $(wmctrl -d | grep "*" | cut -d' ' -f1) : ธง -t บอก wmctrl ให้ "ย้ายหน้าต่างไปยังเดสก์ท็อปด้วยดัชนีที่กำหนด" $(wmctrl -d | grep "*" | cut -d' ' -f1) เป็นคำสั่งทดแทนที่ได้รับดัชนีของเดสก์ท็อป/เวิร์กท็อปที่ใช้งานอยู่ในปัจจุบัน นี่คือสิ่งที่เกิดขึ้นในการทดแทนคำสั่งนั้น:
wmctrl -d : แสดงรายการเดสก์ท็อป/พื้นที่ทำงานทั้งหมดที่มีอยู่grep "*" : ตัวกรองสำหรับเดสก์ท็อป/เวิร์กสเปซที่ใช้งานอยู่ในปัจจุบันซึ่งระบุโดยเครื่องหมายดอกจัน ( * ) ในเอาต์พุตของ wmctrl -dcut -d' ' -f1 : แยกฟิลด์แรก (ซึ่งเป็นดัชนีของเดสก์ท็อป/เวิร์กสเปซ) จากเอาต์พุตของ grep "*" ส่วนที่เหลือสองไฟล์คือ movable_window_id_list.txt และ initial_movable_window_id_list.txt ทั้งสองควรมี
0 0 0 0 0 0 0 0 0 0
ในกรณีที่ไฟล์หลังควรอ่านอย่างเดียวซึ่งทำหน้าที่เป็นต้นแบบค่าเริ่มต้นของไฟล์ txt อื่น ๆ เท่านั้น
ทำสิ่งต่อไปนี้สำหรับทุก ๆ คีย์บอร์ด MOVABLE_WINDOW_IDX ที่คุณต้องการใช้งาน ทางลัด: Super+Shift+Key_MOVABLE_WINDOW_IDX →คำสั่ง: python3 /home/$USER/.window_summoner/get_window_id.py MOVABLE_WINDOW_IDX
ทางลัด: Super+Key_MOVABLE_WINDOW_IDX →คำสั่ง: python3 ~/.window_summoner/summon_window.sh MOVABLE_WINDOW_IDX
เห็นได้ชัดว่าคุณแทนที่ Key_MOVABLE_WINDOW_IDX ด้วยคีย์ที่คุณเลือก
ตัวอย่างคือสิ่งต่อไปนี้
ทางลัด: Super+Shift+1 →คำสั่ง: source ~/.window_summoner/get_window_id.sh 1
และสิ่งนี้ตั้งค่าวิธีการที่กล่าวถึงซึ่งช่วยให้ผู้ใช้สามารถย้ายหน้าต่างที่ทำเครื่องหมายไว้ไปยังพื้นที่ทำงานที่ใช้งานอยู่