توضح الفكرة التالية طريقة مريحة حيث يمكن للمستخدم نقل نافذة ملحوظة من أي مساحة عمل إلى تلك النشطة في بيئة XFCE.
MOVABLE_WINDOW_IDX ، حيث يمكن أن يكون MOVABLE_WINDOW_IDX أي عدد صحيح يتراوح من 0 إلى 9 .Super+Shift+Key_MOVABLE_WINDOW_IDX لتحديد تلك النافذة النشطة ، ولتعيين معرف النافذة المنقولة المقابل باسم MOVABLE_WINDOW_IDX .Super+Key_MOVABLE_WINDOW_IDX . Key_MOVABLE_WINDOW_IDX يعتمد بحتة على تفضيل مفتاح لوحة المفاتيح للمستخدم. طريقة واحدة لتنفيذ هذا المفهوم هي من خلال التعليمات التالية. تجدر الإشارة إلى أن هذه الطريقة تعتمد على حزم APT xdotool و wmctrl .
.window_summoner .get_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 : أداة سطر الأوامر التي يمكن أن تتفاعل مع Windows لنظام Window Window ومعالجتها.
-ir $MOVABLE_WINDOW_ID : تروي علامة -ir wmctrl "التفاعل مع النافذة مع المعرف الرقمي المعطى". $MOVABLE_WINDOW_ID هو متغير باش يحتوي على معرف رقمي للنافذة التي نريد نقلها.
-t $(wmctrl -d | grep "*" | cut -d' ' -f1) : تروي علامة -t wmctrl لـ "نقل النافذة إلى سطح المكتب مع الفهرس المحدد". $(wmctrl -d | grep "*" | cut -d' ' -f1) هو استبدال أمر يحصل على فهرس مساحة المكتب/العمل النشط حاليًا. إليك ما يحدث في هذا الاستبدال:
wmctrl -d : يسرد جميع أجهزة سطح المكتب/مساحات العمل المتاحة.grep "*" : مرشحات لسطح المكتب/العمل النشط حاليًا ، والتي يشار إليها بواسطة علامة نجمية ( * ) في إخراج wmctrl -d .cut -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 الآخر.
افعل ما يلي لكل لوحة مفاتيح integer 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
ويقوم هذا بإعداد الطريقة المذكورة التي تسمح للمستخدم بنقل أي نافذة ملحوظة إلى مساحة عمله النشطة.