Следующая идея демонстрирует удобный способ, которым пользователь может переместить отмеченное окно из любого рабочего пространства в активное в среде 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 Packages 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 Windows Windows.
-ir $MOVABLE_WINDOW_ID : флаг -ir показывает wmctrl «взаимодействовать с окном с данным числовым идентификатором». $MOVABLE_WINDOW_ID - это переменная BASH, которая содержит числовое идентификатор окна, которое мы хотим переместить.
-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 Вы хотите быть активным. SORTCUT: Super+Shift+Key_MOVABLE_WINDOW_IDX → Команда: python3 /home/$USER/.window_summoner/get_window_id.py MOVABLE_WINDOW_IDX
SORTCUT: 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
И это устанавливает упомянутый метод, который позволяет пользователю перемещать любое помеченное окно в свое активное рабочее пространство.