- clipscreen est une application X11 simple qui crée un moniteur virtuel reflétant une zone précise de l’écran et affiche cette zone avec un rectangle vert
- Dans des outils de partage d’écran comme Google Meet, Microsoft Teams ou Jitsi Meet, il est possible de partager ce moniteur virtuel au lieu de l’écran complet ou d’une fenêtre individuelle
- Il suffit de déplacer la fenêtre à partager à l’intérieur du cadre vert, ce qui réduit le besoin de partager plusieurs fenêtres séparément ou de changer de cible de partage
- L’exécution se fait au format
./clipscreen <width>x<height>+<x>+<y>, et il est aussi possible d’utiliser hacksaw ou slop pour une sélection interactive de zone
- Le programme n’a été testé que sur Linux et xorg, sans garantie de fonctionnement sur d’autres systèmes
Ce que fait clipscreen
- clipscreen est une application qui crée un moniteur virtuel répliquant une partie de l’écran
- La zone d’écran définie est mise en évidence par un rectangle vert
- L’utilisateur peut partager ce moniteur virtuel via les outils habituels de partage d’écran en visioconférence
- ex. : Google Meet
- Microsoft Teams
- Jitsi Meet
Méthode de partage d’écran
- Au lieu de partager l’écran entier ou chaque fenêtre séparément, on partage le moniteur virtuel créé par clipscreen
- Il suffit de déplacer la fenêtre à partager à l’intérieur du cadre vert
- Cette méthode évite d’avoir à changer en permanence de fenêtre partagée lorsqu’on travaille avec plusieurs fenêtres
Prérequis de compilation
- Les éléments suivants sont nécessaires sur le système
-
Bibliothèques de développement X11
- Bibliothèque graphique Cairo
- Compilateur C, par ex.
gcc
- Sur Ubuntu 24.04, les bibliothèques nécessaires peuvent être installées avec la commande suivante
apt-get install libx11-dev xserver-xorg-dev xorg-dev libcairo2-dev gcc
- La compilation s’effectue avec la commande suivante
make
- L’application n’a été testée que sur **Linux et xorg**, et son fonctionnement sur d’autres systèmes n’est pas garanti
Utilisation
- Le binaire compilé s’exécute au format suivant
./clipscreen <width>x<height>+<x>+<y>
- Les arguments définissent la position et la taille de l’overlay et du moniteur virtuel
<width> : largeur de l’overlay et du moniteur virtuel
<height> : hauteur de l’overlay et du moniteur virtuel
<x> : coordonnée x du coin supérieur gauche de l’overlay et du moniteur virtuel
<y> : coordonnée y du coin supérieur gauche de l’overlay et du moniteur virtuel
- Exemple
./clipscreen 800x600+100+100
- Cette commande crée une fenêtre d’overlay 800x600 commençant à la position
(100, 100) de l’écran
Sélection interactive de zone et fermeture
- Pour sélectionner une zone de manière interactive, il est possible d’exécuter la commande avec
hacksaw ou slop
./clipscreen $(hacksaw)
./clipscreen $(slop)
- Outils associés
- Pour quitter, il suffit d’appuyer sur Ctrl+C dans le terminal où l’application est en cours d’exécution
1 commentaires
Commentaires sur Hacker News
J’ai donc créé un petit outil qui utilise l’extension xrandr pour refléter une zone donnée vers un moniteur virtuel, que l’on peut ensuite partager.
Plus de détails dans ce billet de blog : https://www.splitbrain.org/blog/2024-10/11-introducing_clips...
Je l’utilise ainsi comme environnement de démo : https://gist.github.com/radupotop/d77a47767e2e65a7e7d40d1ea8...
sleep(100).À cause de ça, l’utilisation CPU peut monter sans vraie raison.
Si le programme se termine autrement que par SIGINT, seule la sortie virtuelle peut rester tandis que la fenêtre d’overlay disparaît, ce qui est un peu maladroit, mais pas très grave. Cela dit, mieux vaut ne pas considérer trop fortement le nombre de lignes de code comme une mesure de qualité ou d’élégance.
Cette approche n’est pas transposable telle quelle à Wayland. En revanche, sous Wayland, cet outil n’est peut-être tout simplement pas nécessaire. La méthode standard pour qu’un processus non privilégié capture l’écran passe par les portails desktop, et KDE au moins prend en charge de nombreuses options de capture, dont la capture d’un rectangle de l’écran. Même avec une application X.org, cela devrait être possible grâce à XWaylandVideoBridge.
Le fait que D-Bus soit utilisé un peu partout ne m’enchante pas vraiment, mais j’aime bien l’idée qu’en changeant l’implémentation de
org.freedesktop.impl.portal.ScreenCast, on puisse remplacer à peu près le comportement de capture d’écran souhaité. C’est, à mon avis, une meilleure direction que de laisser chaque application implémenter à sa manière la sélection de la cible de capture.Ça ne veut pas dire que X11 n’est pas agréable et cool à bidouiller, mais dès qu’on ne suppose plus uniquement des usages parfaits, le code gonfle et se complexifie, tout en devenant plus robuste.
Par exemple, essayez d’exécuter
./clipscreen 1 2 3 4.Si on veut bricoler quelque chose, on peut le faire tout de suite. L’ICCCM s’est fait énormément critiquer au début des années 90, mais il n’y a pas vraiment d’équivalent ailleurs, et le domaine des gestionnaires de fenêtres continue encore aujourd’hui à voir apparaître de nouvelles expérimentations.
xrandr --setmonitor screenshare 2560/1x1440/1+0+0 nonegeo=$(slop -f '%w/1x%h/1+%x+%y') && xrandr --setmonitor screenshare "$geo" noneMais ça reste une très belle commande en une ligne.
Cela permet de savoir si la taille de la fenêtre est adaptée à quelqu’un qui regarde depuis un ordinateur portable, et la prévisualisation suit la souris tout en permettant d’ajuster à la volée le niveau de zoom et les limites autour du pointeur.
La fenêtre de prévisualisation OBS s’ouvre au lancement sans la fenêtre principale d’OBS, donc ensuite je n’ai plus besoin de voir ni de manipuler la fenêtre principale ou l’application, ce qui donne l’impression d’un outil autonome.
https://github.com/BlankSourceCode/obs-zoom-to-mouse
Rectangular Region permet de partager une partie choisie de l’écran, et New Virtual Output crée immédiatement un écran virtuel visible dans KDE Display Configuration. Cet écran virtuel peut être placé en chevauchement avec un écran physique existant, ou non.