Die folgende Idee zeigt einen bequemen Weg, bei dem der Benutzer ein markiertes Fenster von einem beliebigen Arbeitsbereich in den aktiven in einer XFCE -Umgebung verschieben kann.
MOVABLE_WINDOW_IDX gekennzeichnet sein möchten, wobei MOVABLE_WINDOW_IDX jeder ganze Ganzzahl von 0 bis 9 sein kann.Super+Shift+Key_MOVABLE_WINDOW_IDX um dieses aktive Fenster zu markieren und seine entsprechende bewegliche Fenster -ID als MOVABLE_WINDOW_IDX zuzuweisen.Super+Key_MOVABLE_WINDOW_IDX drücken. Key_MOVABLE_WINDOW_IDX hängt nur von der Tastatur-Key-Präferenz des Benutzers ab. Eine Möglichkeit, dieses Konzept zu implementieren, besteht in den folgenden Anweisungen. Es ist erwähnenswert, dass diese Methode von den APT -Paketen xdotool und wmctrl abhängt.
.window_summoner .get_window_id.py benannt und enthält den folgenden Inhalt 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 )) Die andere Datei wird summon_window.py mit ihrem Inhalt sein
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 ]))Zusammenbrechen
wmctrl -ir $MOVABLE_WINDOW_ID -t $(wmctrl -d | grep "*" | cut -d' ' -f1) :
wmctrl : Ein Befehlszeilen-Dienstprogramm, das mit Fenstern des X-Fenstersystems interagieren und manipulieren kann.
-ir $MOVABLE_WINDOW_ID : Das -ir -Flag fordert wmctrl an, "mit dem Fenster mit der angegebenen numerischen ID zu interagieren". $MOVABLE_WINDOW_ID ist eine Bash -Variable, die die numerische ID des Fensters enthält, die wir verschieben möchten.
-t $(wmctrl -d | grep "*" | cut -d' ' -f1) : Das -t -Flag sagt wmctrl , das Fenster mit dem angegebenen Index auf den Desktop zu verschieben ". $(wmctrl -d | grep "*" | cut -d' ' -f1) ist eine Befehlssubstitution, die den Index des aktuell aktiven Desktops/Arbeitsbereichs erhält. Hier ist, was in dieser Befehlssubstitution passiert:
wmctrl -d : Listet alle verfügbaren Desktops/Arbeitsbereiche auf.grep "*" : Filter für den aktuell aktiven Desktop/Arbeitsbereich, der durch ein Stern ( * ) in der Ausgabe von wmctrl -d angezeigt wird.cut -d' ' -f1 : Extrahiert das erste Feld (das Index des Desktops/Arbeitsbereichs) aus der Ausgabe von grep "*" . Die verbleibenden zwei Dateien sind movable_window_id_list.txt und initial_movable_window_id_list.txt . Beide sollten enthalten
0 0 0 0 0 0 0 0 0 0
wobei die letztere Datei schreibgeschützt sein sollte und ausschließlich als Anfangswertprototyp der anderen txt Datei dient.
Führen Sie das Folgende für jede Tastatur Integer MOVABLE_WINDOW_IDX durch, die Sie aktiv sein möchten. Verknüpfung: Super+Shift+Key_MOVABLE_WINDOW_IDX → Befehl: python3 /home/$USER/.window_summoner/get_window_id.py MOVABLE_WINDOW_IDX
Verknüpfung: Super+Key_MOVABLE_WINDOW_IDX → Befehl: python3 ~/.window_summoner/summon_window.sh MOVABLE_WINDOW_IDX
Wo Sie offensichtlich Key_MOVABLE_WINDOW_IDX durch Ihren Schlüssel der Wahl ersetzen.
Ein Beispiel ist das folgende
Verknüpfung: Super+Shift+1 → Befehl: source ~/.window_summoner/get_window_id.sh 1
Dies legt die genannte Methode ein, mit der der Benutzer ein markiertes Fenster in den aktiven Arbeitsbereich verschieben kann.