web-dev-qa-db-fra.com

Autoriser les événements de souris à passer par le terminal

Je travaille sur un ordinateur portable avec un petit écran et je n’ai pas accès à plusieurs moniteurs sur cette machine comme au travail. J'ai configuré mon terminal de manière transparente pour pouvoir voir tout ce que je développe sur le navigateur situé derrière le terminal, mais j'aimerais pouvoir cliquer sur le terminal et interagir directement avec le navigateur.

Je n'ai rien essayé en dehors de la recherche sur Google car je n'ai aucune expérience de ce type.

EDIT: La question "possible en double" ne répond pas à ma question car elle crée simplement un script permettant de faire un changement de fenêtre alt + tab plus rapide. Je n'ai aucun problème à utiliser alt + tab pour changer de fenêtre, je préférerais simplement ne pas avoir à changer de fenêtre du tout. Je souhaite que ma souris interagisse avec le navigateur pendant que mon clavier interagit avec le terminal.

2
CaldwellYSR

Pourquoi ce n'est pas possible

Ce que vous demandez est essentiellement impossible. Pour simplifier l'explication, il existe deux types de bureaux graphiques: empilement et mosaïque. Unity est un exemple de bureau empilable, dans lequel vous avez une pile de fenêtres (un peu comme une pile de bacs de cafétéria), où la fenêtre actuellement active est la plus haute.

Le comportement de la souris a été défini dans X11 de telle sorte qu'un clic sur une fenêtre la place en haut de la pile. Bien qu'il existe des moyens de garder la fenêtre inférieure aux autres (notamment avec wmctrl), il n'y a aucun moyen de cliquer sur une fenêtre sans la faire ressortir . Malheureusement, cela n’a pas encore été modifié - à moins que vous ne souhaitiez créer vous-même une nouvelle couche pour l’interface utilisateur graphique, et je n’ai pas encore entendu parler d’un tel projet.

Si vous le souhaitez, je peux même placer une prime sur cette question, mais je peux parier qu'il n'y aura pas de réponse à vos besoins.

Un peu d'une solution de contournement

Pour ce faire, définissez la taille minimale de la fenêtre du terminal transparent, définissez-la comme "toujours au premier plan" et cliquez sur tout ce qui se trouve autour de la fenêtre.

enter image description here Dans cette capture d'écran, vous pouvez voir deux approches: une via un clic droit par défaut sur la bordure de la fenêtre et via la commande wmctrl. Le dernier peut permettre une approche de script à ce sujet, mais le principe de base est le même: vous devez cliquer sur n'importe quoi autour du terminal lui-même.

Alternatives possibles

  • Il existe des terminaux déroulants tels que Guake. Vous pouvez avoir un terminal déroulant lié à la touche F12, avec une fenêtre qui conserve la position en haut, et vous pouvez cliquer sur tout ce qui l'entoure
  • Utiliser l’écran partagé avec le terminal et l’autre fenêtre souhaitée liés entre eux

Exemple Guake

enter image description here

8
Sergiy Kolodyazhnyy

Contre question:

Voulez-vous une solution "prête" pour cela ou avez-vous l'intention d'écrire votre propre programme C?

Si vous voulez une solution "prête à l'emploi", je pense que vous n'en trouverez pas: il y a peu de gens qui ont besoin de quelque chose comme ça, donc je ne pense pas que quiconque ait mis en place un tel programme jusqu'à présent.

Si vous voulez écrire un tel programme, j'essaierais de faire ce qui suit:

Ecrivez un programme avec une grande fenêtre (couvrant presque tout l’écran) qui a une transparence de 100%. (Malheureusement, je n'ai jamais travaillé avec la transparence, donc je ne sais pas si cela fonctionne vraiment.)

Utilisez la bibliothèque X11 de bas niveau (libX11) et aucune API de niveau supérieur (Gnome, etc.) pour cela.

Cette fenêtre étant au premier plan, elle recevra toutes les informations relatives au clavier et à la souris.

Utilisez l'API XSendEvent () pour émuler les événements de clavier et de souris dans la console et le navigateur ...

Malheureusement, cela ne sera pas aussi facile qu'il y paraît. Il ne sera pas facile d'émuler les événements de souris dans le navigateur!

1
Martin Rosenau