- clipscreen एक सरल X11 एप्लिकेशन है, जो स्क्रीन के किसी खास क्षेत्र को मिरर करने वाला virtual monitor बनाता है और उस क्षेत्र को हरे रंग के आयत से दिखाता है
- Google Meet, Microsoft Teams, Jitsi Meet जैसे screen sharing tools में पूरी स्क्रीन या अलग-अलग windows की जगह virtual monitor शेयर किया जा सकता है
- जिस window को शेयर करना है उसे हरी बॉर्डर के अंदर ले जाना होता है, इसलिए कई windows को अलग-अलग शेयर करने या शेयर target बदलने की जरूरत कम हो जाती है
- इसे
./clipscreen <width>x<height>+<x>+<y> फॉर्मेट में चलाया जाता है, और hacksaw या slop के साथ इस्तेमाल करने पर interactive area selection भी संभव है
- इसे केवल Linux और xorg पर टेस्ट किया गया है, और अन्य systems पर इसके काम करने की गारंटी नहीं है
clipscreen क्या करता है
- clipscreen एक ऐसा एप्लिकेशन है जो स्क्रीन के एक हिस्से को कॉपी करने वाला virtual monitor बनाता है
- चुने गए स्क्रीन क्षेत्र को हरे रंग के आयत से highlight किया जाता है
- यूजर सामान्य video conferencing screen sharing tools में इस virtual monitor को शेयर कर सकता है
- उदाहरण: Google Meet
- Microsoft Teams
- Jitsi Meet
स्क्रीन शेयर करने का तरीका
- पूरी स्क्रीन शेयर करने या अलग-अलग windows को अलग से शेयर करने के बजाय, clipscreen द्वारा बनाए गए virtual monitor को शेयर किया जाता है
- शेयर की जाने वाली window को हरी बॉर्डर के अंदर ले जाना होता है
- कई windows के साथ काम करते समय शेयर की जा रही window को बार-बार बदलने की जरूरत नहीं पड़ती
Build requirements
- सिस्टम में नीचे दी गई चीजें चाहिए
-
X11 development libraries
- Cairo graphics library
- C compiler, जैसे
gcc
- Ubuntu 24.04 में जरूरी libraries नीचे दिए गए command से install की जा सकती हैं
apt-get install libx11-dev xserver-xorg-dev xorg-dev libcairo2-dev gcc
- Build नीचे दिए गए command से चलाया जाता है
make
- एप्लिकेशन को केवल **Linux और xorg** पर टेस्ट किया गया है, और अन्य systems पर इसके काम करने को लेकर निश्चितता नहीं है
इस्तेमाल का तरीका
- compiled executable file को नीचे दिए गए फॉर्मेट में चलाया जाता है
./clipscreen <width>x<height>+<x>+<y>
- arguments overlay और virtual monitor की position और size तय करते हैं
<width>: overlay और virtual monitor की चौड़ाई
<height>: overlay और virtual monitor की ऊंचाई
<x>: overlay और virtual monitor के top-left का x coordinate
<y>: overlay और virtual monitor के top-left का y coordinate
- उदाहरण नीचे है
./clipscreen 800x600+100+100
- यह command स्क्रीन पर
(100, 100) position से शुरू होने वाली 800x600 overlay window बनाता है
Interactive area selection और बंद करना
- area को interactively चुनने के लिए इसे
hacksaw या slop के साथ चलाया जा सकता है
./clipscreen $(hacksaw)
./clipscreen $(slop)
- संबंधित tools
- बंद करने के लिए उस terminal में Ctrl+C दबाएं जिसमें एप्लिकेशन चल रहा है
1 टिप्पणियां
Hacker News की टिप्पणियाँ
इसलिए xrandr extension का इस्तेमाल करके एक खास area को virtual monitor में mirror करने और फिर उस virtual monitor को share करने वाला एक छोटा tool बनाया।
ज़्यादा जानकारी blog post में है: https://www.splitbrain.org/blog/2024-10/11-introducing_clips...
demo environment के तौर पर इसे ऐसे इस्तेमाल करता हूँ: https://gist.github.com/radupotop/d77a47767e2e65a7e7d40d1ea8...
sleep(100)call करता है।इस वजह से बिना खास कारण CPU usage बढ़ सकता है।
अगर SIGINT के अलावा किसी और तरीके से बंद किया जाए, तो virtual output बचा रह सकता है और overlay window गायब हो सकती है, इसलिए थोड़ा awkward है, लेकिन बड़ी समस्या नहीं। हालांकि code की line count को quality या elegance का पैमाना मानने में ज़रूरत से ज़्यादा नहीं जाना चाहिए।
यह तरीका Wayland में ज्यों-का-त्यों संभव नहीं है। इसके बजाय Wayland में शायद शुरुआत से ही इस tool की ज़रूरत न पड़े। बिना permission वाले process द्वारा screen capture करने का standard तरीका desktop portal है, और कम-से-कम KDE screen rectangle capture सहित कई capture options support करता है। X.org app चल रही हो तब भी XWaylandVideoBridge की वजह से यह संभव लगता है।
D-Bus का जगह-जगह इस्तेमाल बहुत अच्छा नहीं लगता, लेकिन
org.freedesktop.impl.portal.ScreenCastimplementation बदलकर मनचाहा screen capture behavior लगभग replace किया जा सकता है, यह अच्छी बात है। हर app अपने-अपने तरीके से capture target selection लागू करे, उससे यह बेहतर दिशा लगती है।इसका मतलब यह नहीं कि X11 hacking के लिए अच्छा और cool नहीं है, लेकिन perfect usage से अलग स्थितियाँ भी संभालनी हों तो code बड़ा और complex हो जाता है, और उतना ही robust भी।
उदाहरण के लिए
./clipscreen 1 2 3 4चलाकर देखिए।कुछ शरारती/experiment करना हो तो तुरंत कर सकते हैं। ICCCM को 90 के शुरुआती दशक में बहुत गालियाँ पड़ी थीं, लेकिन दूसरी तरफ उसका कोई equivalent नहीं है, और आज भी window manager क्षेत्र में लगातार नए प्रयोग होते रहते हैं।
xrandr --setmonitor screenshare 2560/1x1440/1+0+0 nonegeo=$(slop -f '%w/1x%h/1+%x+%y') && xrandr --setmonitor screenshare "$geo" noneफिर भी यह शानदार one-line command है।
इससे पता चल जाता है कि दूसरे लोगों के laptop पर window size देखने लायक है या नहीं, और preview mouse को follow करता है, जिससे zoom level और mouse boundary को तुरंत adjust कर सकते हैं।
अच्छी बात यह है कि OBS preview window launch के समय main OBS window के बिना खुलती है, इसलिए बाद में main OBS window या app को देखने या control करने की ज़रूरत नहीं रहती और यह standalone जैसा महसूस होता है।
https://github.com/BlankSourceCode/obs-zoom-to-mouse
Rectangular Region selected screen का हिस्सा share कर सकता है, और New Virtual Output तुरंत एक virtual screen बनाता है जो KDE Display Configuration में दिखती है। यह virtual screen मौजूदा physical display के ऊपर overlap करके रखी जा सकती है या नहीं भी।