以下想法展示了一种方便的方式,用户可以将标记的窗口从任何工作区移动到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
这设置了上述方法,该方法允许用户将任何标记的窗口移至其活动工作区。