Ratty: इनलाइन 3D ग्राफिक्स को सपोर्ट करने वाला टर्मिनल एम्युलेटर
(ratty-term.org)- Ratty एक GPU rendering terminal emulator है जो inline 3D graphics को सपोर्ट करता है
- इसमें घूमता हुआ चूहे का cursor शामिल है
- साइट पर blog post पढ़ा जा सकता है
- साइट पर Ratty download पर जाया जा सकता है
- साइट पर source check पर जाया जा सकता है
2 टिप्पणियां
Hacker News टिप्पणियाँ
यहाँ कुछ लोग VR उपयोग की बात कर रहे थे, और मैंने पहले software development के लिए shallow 3D UI के साथ थोड़ा काम किया है
यह laptop स्क्रीन के अंदर कुछ cm की उथली depth तक सीमित था ताकि पूरे दिन इस्तेमाल करने पर भी VAC eye strain कम रहे, और कमरे में हाथ लहराने से ज़्यादा 3D में color और layer जोड़कर drawing करने जैसा लगता था
3D को wobble 3D, webcam head/eye tracking से बने perspective, shutter-glasses stereo, XR HMD आदि से किया जा सकता है. wobble तरीका सबसे आसान है, लेकिन थोड़ा प्यारा और distract करने वाला है, जबकि perspective ज़्यादा subtle और कम परेशान करने वाला होता है
किसी app का stereo pair या तो “बाएँ/दाएँ आँख के लिए दो window देना” हो सकता है, या “left/right view को बारी-बारी दिखाना और labeling/synchronization/polling करना”, और इनमें से काफ़ी चीज़ों के लिए window system/manager/desktop support चाहिए. Electron और X को stack करके इस्तेमाल करने वाले तरीके में काफ़ी leverage मिला था
text को 3D में push करना colorization से ज़्यादा मज़ेदार है, और अगर बिखरे हुए appearance को स्वीकार करें तो depth से अलग की गई auxiliary information layers भी डाली जा सकती हैं. अगर Emacs में character-wise depth हो, तो LispM में भी न रही कोई चीज़ मिल जाएगी
लेकिन code text जैसी चीज़ों, जो मूल रूप से 3D नहीं हैं, की संभावनाएँ खोजते समय foreground/background color, font, Unicode, animation के साथ UX prototyping करना कहीं आसान है, और browser में overlapping divs तथा transparent 2D/3D canvas इस्तेमाल किए जा सकते हैं
हर character 3D में रखा गया एक quad है और instance rendering से render होता है, इसलिए tens of millions से भी ज़्यादा handle किए जा सकते हैं. हर character को अलग polygon की तरह individually address और modify किया जा सकता है
मैं इसका उपयोग पूरे GitHub repository को एक साथ render करने के लिए कर रहा हूँ, और इसके native Apple version और web version दोनों हैं. web version में IDE configuration के basic elements शामिल हैं, और मैं insights या thoughts सुनना चाहूँगा
https://ivanlugo.dev/ide
UNIX अभी भी REPL experience में Xerox workstations या सामान्य Lisp machines की बराबरी करने की कोशिश करता हुआ लगता है
1981 में भी inline graphics मौजूद थे
https://youtu.be/o4-YnLpLgtk?t=376
जिन्होंने अब तक नहीं देखा: https://www.youtube.com/watch?v=yJDv-zdhzMY
यह मुझे पसंद आया. ऐसा कोई कारण नहीं है कि terminal सिर्फ text ही support करे
data science notebooks दिखाते हैं कि terminal किस दिशा में evolve हो सकता है, और इस क्षेत्र में बहुत दिलचस्प काम हो रहा है. शायद Kitty यहाँ सबसे aggressive innovator है [1]
बस यह स्पष्ट नहीं है कि कोई overall vision है या नहीं
[1]: https://sw.kovidgoyal.net/kitty/protocol-extensions/
[1] https://github.com/joouha/euporie
pyvistaके साथ Kitty graphics का उपयोग करके arbitrary 3D shapes को सीधे terminal में render कराने में सफलता मिलीयह बहुत बड़ा hack है, और performance पाने के लिए shm इस्तेमाल करने के अलावा कोई तरीका नहीं था
https://git.theresno.cloud/panki/kglobe
शायद यह मेरे आदर्श computing future, यानी “haiku+macOS mashup”, से भी आगे निकल जाए
मैं आम तौर पर file manager क्लिक करके इस्तेमाल करने की जगह terminal से file system browse करना पसंद करता हूँ, और अगर directory के अंदर 3D models (STL/STEP, 3D printing) को terminal-based rendering में दिखाने वाला grid
lsहो, तो वह सच में बहुत उपयोगी होगाअगर models को preview करके घुमा-फिराकर देख भी सकें तो और भी अच्छा होगा
इसका उपयोग कहाँ होगा, यह तो नहीं जानता, लेकिन visual effect मज़ेदार था और website का brutalist design भी पसंद आया. इससे पुराने अच्छे दिनों की याद आ गई
यह काफ़ी अच्छा लग रहा है, है ना?
एक सवाल है. rendering क्षमता को देखते हुए लगता है कि यह 2D भी अच्छी तरह संभाल सकता होगा, या मैं गलत देख रहा हूँ? terminal में high-quality 2D images या rasterization पाने के मौजूदा solutions ज़्यादातर खास अच्छे नहीं रहे. जानना चाहता हूँ कि क्या यह दूसरे solutions से बेहतर हो सकता है, या कहीं कोई fundamental limitation आ जाती है
और अगर GPU acceleration है, तो ssh में यह कैसे काम करेगा, यह भी जानना चाहूँगा
terminal धीरे-धीरे full-featured web browser बनता जा रहा है
सच कहूँ तो अभी नहीं पता, लेकिन जल्द ही ख़ुद आज़माकर देखने वाला हूँ :D
https://github.com/fathyb/carbonyl
https://hyper.is/
Terry की आत्मा को शांति मिले. उम्मीद है उन्हें कभी भुलाया नहीं जाएगा
और जोड़ना चाहूँगा कि इस project को देखकर लगता है उनकी spirit अब भी ज़िंदा है :D
यह देखकर वह समय याद आ गया जब compiz आया था और सब कहते थे, “मेरी window cube पर है” या “मुझे wobbly windows चाहिए”
इसलिए मैंने भी वैसे ही इंसान की तरह इसे तुरंत install कर लिया
तरह-तरह के compiz animation effects के साथ Windows और Ubuntu के बीच switch करना जादू जैसा लगता था
linked blog post से मुझे नया प्रस्तावित glyph protocol [1] पता चला, जो बहुत दिलचस्प लगा
लगभग 6 महीने पहले भी मैंने अफ़सोस जताया था कि ठीक ऐसी चीज़ मौजूद नहीं है [2]
[1] https://rapha.land/introducing-glyph-protocol-for-terminals/
[2] https://news.ycombinator.com/item?id=45805072
https://github.com/tikimcfee/glyph3d-js
Kitty graphics protocol से यह कुछ हद तक पहले ही संभव है. मैंने Kitty में 3D graphics rendering करने वाला एक demo बनाया है [1]
वास्तव में जो महत्वपूर्ण हिस्सा missing है, वह vsync है, और लगता है ratty में भी यह नहीं है
अगर rendering sync में न हो, तो application जब framebuffer में लिख रहा हो उसी दौरान terminal emulator उसे पढ़ सकता है, जिससे visual artifacts आ सकते हैं
[1] https://x.com/zack_overflow/status/2035921425341763756?s=20
Lobste.rs की राय
लैंडिंग पेज से LLM की गंध आई, इसलिए ब्लॉग पोस्ट देखी और जैसा सोचा था वैसा ही निकला
अगर सिर्फ उपयोग पर टैग लगाना है, तो उसे 90% प्रोजेक्ट्स पर लगाना पड़ेगा, और बातचीत भी असल नतीजे से भटक जाएगी। 3D चूहे दिखाने वाला टर्मिनल emulator किसी एक व्यक्ति ने हैक करके बनाया हो और थ्रेड नैतिक बहस की तरफ मुड़ जाए, यह मैं नहीं चाहूँगा
तेज़ wow effect के लिए मैंने थोड़ा 3D डाला था, लेकिन मेरा मानना है कि लक्ष्य सावधानी से बुनियाद पर फिर से सोचना होना चाहिए। भले ही मेरा प्रयोग असफल हो जाए, इस बात पर मुझे गर्व है कि मैंने इंसानों के लिए, इंसानी नज़रिए से एक उत्पाद बनाया
बेशक, अगर वे यह सब सिर्फ मज़े के लिए कर रहे हैं, तो अपने आप में उसमें कोई समस्या नहीं है
कई बार पढ़ने के बाद भी अब भी बहुत उलझन है
एक तरफ, sixel या kitty को देखते समय की तरह लगातार यही लगता है, “क्यों?”। मूलतः text-oriented interface पर graphics चढ़ाना दिलचस्प है, लेकिन व्यावहारिक नहीं लगता। हाँ, यही आपत्ति curses या slang पर भी की जा सकती है
दूसरी तरफ, यह जिज्ञासा होती है कि 3D rendering protocol/display को किसी तरह Emacs के अंदर डाला जा सकता है या नहीं। उससे क्या करूँगा, इसका बिल्कुल पता नहीं, लेकिन इस प्रोजेक्ट की तरह वह भी सचमुच बहुत शानदार लग सकता है
पहले लोग मज़े के लिए प्रोग्राम बनाते थे। याद है न?
मैंने एक शाम लगाकर अपने Haskell CAD framework से ऑब्जेक्ट्स को Ratty द्वारा पढ़े जा सकने वाले तरीके से आउटपुट करवाया
लगाए गए समय के हिसाब से यह काफ़ी संभावनाशील लगा, लेकिन अच्छा होता अगर “object placement” कमांड थोड़ा और configurable होता। मैं चाहता था कि यह REPL output के अंदर जगह बनाना और object size adjustment भी खुद संभाल ले
और Ratty का assets फ़ोल्डर के बाहर की फ़ाइलें लोड न कर पाना थोड़ा खराब लगा। स्क्रॉलिंग भी कुछ टूटी हुई लगी; मैंने अक्सर देखा कि ऑब्जेक्ट्स उस बिंदु से पहले गायब हो जाते थे जहाँ उन्हें गायब नहीं होना चाहिए था। हालाँकि हो सकता है कि मुझसे ही कुछ गलती हुई हो