以下想法展示了一種方便的方式,用戶可以將標記的窗口從任何工作區移動到XFCE環境中的活動空間。
MOVABLE_WINDOW_IDX ,其中MOVABLE_WINDOW_IDX可以是0到9的整數。Super+Shift+Key_MOVABLE_WINDOW_IDX標記該活動窗口,並將其相應的移動窗口ID分配為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 :可以與X Window System Windows交互並操縱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 -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文件的初始值原型。
為您希望活躍的每個鍵盤整數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
這設置了上述方法,該方法允許用戶將任何標記的窗口移至其活動工作區。