La siguiente idea demuestra una forma conveniente en la que el usuario puede mover una ventana marcada desde cualquier espacio de trabajo al activo en un entorno XFCE.
MOVABLE_WINDOW_IDX , donde MOVABLE_WINDOW_IDX puede ser un entero que varíe de 0 a 9 .Super+Shift+Key_MOVABLE_WINDOW_IDX para marcar esa ventana activa y para asignar su ID de ventana móvil correspondiente como MOVABLE_WINDOW_IDX .Super+Key_MOVABLE_WINDOW_IDX . Key_MOVABLE_WINDOW_IDX depende puramente de la preferencia de teclado de teclado del usuario. Una forma de implementar este concepto es a través de las siguientes instrucciones. Vale la pena señalar que este método depende de los paquetes APT xdotool y wmctrl .
.window_summoner .get_window_id.py y contendrá el siguiente contenido 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 )) El otro archivo será summon_window.py con su contenido
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 ]))Desglosar
wmctrl -ir $MOVABLE_WINDOW_ID -t $(wmctrl -d | grep "*" | cut -d' ' -f1) :
wmctrl : una utilidad de línea de comandos que puede interactuar y manipular ventanas del sistema de ventana X.
-ir $MOVABLE_WINDOW_ID : la bandera -ir le dice wmctrl que "interactúe con la ventana con la ID numérica dada". $MOVABLE_WINDOW_ID es una variable bash que contiene la ID numérica de la ventana que queremos mover.
-t $(wmctrl -d | grep "*" | cut -d' ' -f1) : el indicador -t le dice wmctrl que "mueva la ventana al escritorio con el índice dado". $(wmctrl -d | grep "*" | cut -d' ' -f1) es una sustitución de comandos que obtiene el índice del escritorio/espacio de trabajo actualmente activo. Esto es lo que está sucediendo en ese comando de sustitución:
wmctrl -d : enumera todos los escritorios/espacios de trabajo disponibles.grep "*" : Filtros para el escritorio/espacio de trabajo actualmente activo, que se indica mediante un asterisco ( * ) en la salida de wmctrl -d .cut -d' ' -f1 : extrae el primer campo (que es el índice del escritorio/espacio de trabajo) de la salida de grep "*" . Los dos archivos restantes son movable_window_id_list.txt e initial_movable_window_id_list.txt . Ambos deben contener
0 0 0 0 0 0 0 0 0 0
donde este último archivo debe ser de solo lectura, sirviendo únicamente como un prototipo de valor inicial del otro archivo txt .
Haga lo siguiente para cada entero de teclado MOVABLE_WINDOW_IDX que desea estar activo. Actualizado: Super+Shift+Key_MOVABLE_WINDOW_IDX → comando: python3 /home/$USER/.window_summoner/get_window_id.py MOVABLE_WINDOW_IDX
Atajo: Super+Key_MOVABLE_WINDOW_IDX → comando: python3 ~/.window_summoner/summon_window.sh MOVABLE_WINDOW_IDX
donde obviamente reemplaza Key_MOVABLE_WINDOW_IDX con su clave de elección.
Un ejemplo es el siguiente
Atendas: Super+Shift+1 → Comando: source ~/.window_summoner/get_window_id.sh 1
Y esto establece el método mencionado que permite al usuario mover cualquier ventana marcada a su espacio de trabajo activo.