- clipscreen ist eine einfache X11-Anwendung, die einen virtuellen Monitor erstellt, der einen bestimmten Bereich des Bildschirms spiegelt, und diesen Bereich mit einem grünen Rechteck markiert
- In Screen-Sharing-Tools wie Google Meet, Microsoft Teams und Jitsi Meet kann man statt des gesamten Bildschirms oder einzelner Fenster den virtuellen Monitor freigeben
- Man verschiebt einfach das gewünschte Fenster in den grünen Rahmen, wodurch es seltener nötig ist, mehrere Fenster einzeln zu teilen oder das Freigabeziel zu wechseln
- Der Start erfolgt im Format
./clipscreen <width>x<height>+<x>+<y>; zusammen mit hacksaw oder slop ist auch eine interaktive Bereichsauswahl möglich
- Getestet wurde es nur unter Linux und xorg; auf anderen Systemen ist die Funktion nicht garantiert
Was clipscreen macht
- clipscreen ist eine Anwendung, die einen virtuellen Monitor erzeugt, der einen Teil des Bildschirms dupliziert
- Der festgelegte Bildschirmbereich wird mit einem grünen Rechteck hervorgehoben
- Nutzer können diesen virtuellen Monitor in gewöhnlichen Screen-Sharing-Tools für Videokonferenzen freigeben
- z. B. Google Meet
- Microsoft Teams
- Jitsi Meet
Art der Bildschirmfreigabe
- Statt den gesamten Bildschirm oder einzelne Fenster separat freizugeben, teilt man den von clipscreen erzeugten virtuellen Monitor
- Das freizugebende Fenster muss nur in den grünen Rahmen verschoben werden
- So muss man bei mehreren Fenstern nicht ständig das geteilte Fenster wechseln
Build-Anforderungen
- Auf dem System werden die folgenden Komponenten benötigt
-
X11-Entwicklungsbibliotheken
- Cairo-Grafikbibliothek
- C-Compiler, z. B.
gcc
- Unter Ubuntu 24.04 lassen sich die benötigten Bibliotheken mit folgendem Befehl installieren
apt-get install libx11-dev xserver-xorg-dev xorg-dev libcairo2-dev gcc
- Der Build wird mit folgendem Befehl ausgeführt
make
- Die Anwendung wurde nur unter **Linux und xorg** getestet; ob sie auf anderen Systemen funktioniert, ist unklar
Verwendung
- Die kompilierte ausführbare Datei wird im folgenden Format gestartet
./clipscreen <width>x<height>+<x>+<y>
- Die Argumente legen Position und Größe von Overlay und virtuellem Monitor fest
<width>: Breite von Overlay und virtuellem Monitor
<height>: Höhe von Overlay und virtuellem Monitor
<x>: x-Koordinate der linken oberen Ecke von Overlay und virtuellem Monitor
<y>: y-Koordinate der linken oberen Ecke von Overlay und virtuellem Monitor
- Ein Beispiel sieht so aus
./clipscreen 800x600+100+100
- Dieser Befehl erzeugt ein 800x600 großes Overlay-Fenster, das an der Position
(100, 100) auf dem Bildschirm beginnt
Interaktive Bereichsauswahl und Beenden
- Um den Bereich interaktiv auszuwählen, kann man es zusammen mit
hacksaw oder slop ausführen
./clipscreen $(hacksaw)
./clipscreen $(slop)
- Zugehörige Tools
- Zum Beenden drückt man im Terminal, in dem die Anwendung läuft, Ctrl+C
1 Kommentare
Kommentare auf Hacker News
Deshalb wurde mit der xrandr-Erweiterung ein kleines Tool gebaut, das einen bestimmten Bereich auf einen virtuellen Monitor spiegelt, den man dann teilen kann.
Details gibt es im Blogbeitrag: https://www.splitbrain.org/blog/2024-10/11-introducing_clips...
So nutze ich es als Demo-Umgebung: https://gist.github.com/radupotop/d77a47767e2e65a7e7d40d1ea8...
sleep(100)auf.Dadurch kann die CPU-Auslastung ohne besonderen Grund steigen.
Wenn das Programm anders als per SIGINT beendet wird, kann der virtuelle Output übrig bleiben, während das Overlay-Fenster verschwindet; das ist etwas unschön, aber kein großes Problem. Trotzdem sollte man die Zahl der Codezeilen nicht zu sehr als Maß für Qualität oder Eleganz nehmen.
Dieser Ansatz ist unter Wayland nicht direkt möglich. Dafür braucht man dieses Tool unter Wayland vielleicht von vornherein nicht. Der Standardweg, mit dem ein Prozess ohne besondere Berechtigungen den Bildschirm aufnimmt, ist das Desktop-Portal, und zumindest KDE unterstützt verschiedene Aufnahmeoptionen, einschließlich der Aufnahme eines Bildschirmrechtecks. Selbst wenn eine X.org-App läuft, dürfte das dank XWaylandVideoBridge möglich sein.
Dass D-Bus überall eingesetzt wird, ist nicht gerade erfreulich, aber es ist gut, dass man durch Austausch der Implementierung von
org.freedesktop.impl.portal.ScreenCastdas gewünschte Verhalten für Bildschirmaufnahmen weitgehend ersetzen kann. Das ist meiner Ansicht nach besser, als wenn jede App ihre eigene Auswahlfunktion für Aufnahmequellen implementiert.Das heißt nicht, dass X11 nicht hackbar und cool wäre, aber wenn man nicht nur perfekte Nutzung annehmen will, wird der Code größer und komplexer – und entsprechend robuster.
Man kann zum Beispiel
./clipscreen 1 2 3 4ausführen.Wenn man etwas herumspielen will, geht das sofort. ICCCM wurde Anfang der 90er heftig kritisiert, aber auf der anderen Seite gibt es nichts Vergleichbares, und im Bereich Window Manager entstehen bis heute immer wieder neue Ansätze.
xrandr --setmonitor screenshare 2560/1x1440/1+0+0 nonegeo=$(slop -f '%w/1x%h/1+%x+%y') && xrandr --setmonitor screenshare "$geo" noneTrotzdem ein schöner Einzeiler.
So kann ich sehen, ob die Fenstergröße für andere auf einem Laptop gut lesbar ist, und die Vorschau folgt der Maus, während ich Zoomstufe und Mausgrenzen spontan anpassen kann.
Gut ist, dass das OBS-Vorschaufenster beim Start ohne das Hauptfenster von OBS geöffnet wird; danach muss man das Hauptfenster oder die App weder sehen noch bedienen, wodurch es sich fast wie ein eigenständiges Tool anfühlt.
https://github.com/BlankSourceCode/obs-zoom-to-mouse
Rectangular Region kann einen ausgewählten Teil des Bildschirms teilen, und New Virtual Output erzeugt sofort einen virtuellen Bildschirm, der in der KDE Display Configuration sichtbar ist. Dieser virtuelle Bildschirm kann über einem vorhandenen physischen Display platziert werden oder auch nicht.