J'ai deux fenêtres, A et B. Est-il possible de lier en quelque sorte deux fenêtres ensemble, de sorte que le passage à A déclenche également B, ou le passage à B soulève également A?
Je comprends que l'utilisation de plusieurs espaces de travail est une option alternative, mais je me demandais si cela était également possible?
command-line
scripts
shortcut-keys
window-manager
window
Simon Tong
la source
la source
Réponses:
introduction
Le script suivant permet de sélectionner deux fenêtres, et bien que les deux fenêtres soient ouvertes, il soulèvera les deux fenêtres lorsque l'utilisateur se concentrera sur l'une d'entre elles. Par exemple, si l'on relie les veuves A et B, le fait de passer à A ou B les fera s'élever au-dessus des autres veuves.
Pour arrêter le script, vous pouvez utiliser
killall link_windows.py
dans le terminal, ou fermer et rouvrir l'une des fenêtres. Vous pouvez également annuler l'exécution en appuyant sur Xle bouton de fermeture dans l'une des boîtes de dialogue contextuelles de sélection de fenêtre.Ajustements potentiels:
Usage
Exécutez le script en tant que:
Le script est compatible avec Python 3, il peut donc également s'exécuter en tant que
Il existe deux options de ligne de commande:
--quiet
ou-q
, permet de faire taire les fenêtres de l'interface graphique. Avec cette option, vous pouvez simplement cliquer avec la souris sur deux fenêtres et le script commencera à les lier.--help
ou-h
imprime les informations d'utilisation et de description.L'
-h
option produit les informations suivantes:Des informations techniques supplémentaires peuvent être consultées via
pydoc ./link_windows.py
, où./
signifie que vous devez être dans le même répertoire que le script.Processus d'utilisation simple pour deux fenêtres:
Une fenêtre apparaîtra vous demandant de sélectionner une fenêtre # 1, appuyez OKou appuyez sur Enter. Le pointeur de la souris se transforme en croix. Cliquez sur l'une des fenêtres que vous souhaitez lier.
Une deuxième fenêtre apparaîtra vous demandant de sélectionner la fenêtre # 2, appuyez OKou appuyez sur Enter. Encore une fois, le pointeur de la souris se transforme en croix. Cliquez sur l'autre fenêtre que vous souhaitez lier. Après cette exécution commencera.
Chaque fois que vous concentrez l'une des fenêtres, le script fait monter l'autre fenêtre, mais ramène le focus à celle initialement sélectionnée (note - avec un quart de seconde de retard pour de meilleures performances), créant ainsi l'impression que les fenêtres sont liées entre elles.
Si vous sélectionnez la même fenêtre les deux fois, le script se fermera. Si à tout moment vous cliquez sur le bouton Fermer de la boîte de dialogue contextuelle, le script se fermera.
Source de script
Également disponible en GitHub Gist
Remarques:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Celles - ci peuvent être ignorées.la source
time.sleep
peu entre la commutation, est-ce que je peux mettre ça à zéro? y a-t-il une raison au retard?# time.sleep(0.25)
et elle ne s'exécutera pas. La raison en est que chaque fenêtre est correctement relevée. D'après mon expérience dans le passé, j'avais besoin d'avoir des retards pour fonctionner sur Windows. Je pense que le retard d'un quart de seconde n'est pas tant que ça. En fait, permettez-moi d'ajouter une seule ligne de plus au script, ce qui pourrait l'accélérer. D'ACCORD ?Augmenter un nombre arbitraire de fenêtres comme une seule
La solution ci-dessous vous permettra de choisir n'importe quelle combinaison de deux, trois ou plusieurs fenêtres à combiner et à soulever comme une seule avec un raccourci clavier.
Le script fait son travail avec trois arguments:
pour ajouter la fenêtre active au groupe
pour élever le groupe défini
pour effacer le groupe, prêt à définir un nouveau groupe
Le scénario
Comment utiliser
Le script a besoin
wmctrl
etxdotool
:groupwindows.py
Testez-exécutez le script: ouvrez deux fenêtres de terminal, exécutez la commande:
dans les deux. Couvrez-les avec d'autres fenêtres (ou minimisez-les). Ouvrez une troisième fenêtre de terminal, exécutez la commande:
Les deux premières fenêtres seront levées comme une seule.
Si tout fonctionne correctement, créez trois touches de raccourci personnalisées: Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez les commandes ci-dessous à trois raccourcis distincts:
sur mon système, j'ai utilisé:
Alt+ A, en exécutant la commande:
... pour ajouter une fenêtre au groupe.
Alt+ R, en exécutant la commande:
... pour élever le groupe.
Alt+ C, en exécutant la commande:
... pour effacer le groupe
Explication
Le script fonctionne tout simplement:
add
, le script stocke / ajoute l'identifiant de fenêtre de la fenêtre active dans un fichier caché~/.windowlist
Lorsqu'il est exécuté avec l'argument
raise
, le script lit le fichier, ouvre les fenêtres de la liste avec la commande:clear
, le script supprime le fichier masqué~/.windowlist
.Remarques
Plus de flexibilité?
Comme mentionné, le script ci-dessus permet d'ajouter des fenêtres à tout moment aux fenêtres groupées. La version ci-dessous permet également de supprimer n'importe quelle fenêtre (à tout moment) de la liste groupée:
L'argument supplémentaire pour exécuter le script est
delete
le suivant:supprime la fenêtre active des fenêtres groupées. Pour exécuter cette commande, sur mon système, j'ai défini Alt+ Dcomme raccourci.
la source