- Linux के लिए एक CLI प्रोग्राम, जो GUI एप्लिकेशन को सीधे टर्मिनल में चलाने देता है
- यह अपने खुद के Wayland compositor का उपयोग करता है, जो मॉनिटर की जगह GUI आउटपुट को टर्मिनल तक पहुंचाता है
ssh वातावरण में भी चल सकता है, और वेब ब्राउज़र, फ़ाइल मैनेजर, यहाँ तक कि Doom गेम भी टर्मिनल के भीतर चला सकता है
- आउटपुट क्वालिटी टर्मिनल resolution (rows·columns की संख्या) पर निर्भर करती है, और iTerm2·kitty जैसे image-supporting terminals में full-resolution rendering भी सपोर्ट करता है
- इसे Typescript और bun के आधार पर बनाया गया है, इसमें कुछ C++ कोड भी शामिल है, और फिलहाल यह कुछ ऐप्स तक सीमित है, लेकिन “Term everything❗” के लक्ष्य के साथ लगातार विस्तार हो रहा है
प्रोजेक्ट का महत्व और तुलनात्मक बढ़त
- Term.everything पारंपरिक terminal file viewer या साधारण image output tools से अलग है, क्योंकि यह “सभी” GUI एप्लिकेशन को टर्मिनल के अंदर चला सकता है
- SSH सहित नेटवर्क वातावरण में भी GUI इंटरफ़ेस इस्तेमाल किया जा सकता है, इसलिए server management, remote development में इसकी खास उपयोगिता है
- यह kitty, iterm2 जैसे आधुनिक terminals की image capabilities का पूरा उपयोग करता है, और resolution·framerate बढ़ाने के विकल्प भी देता है
अवलोकन
- Term.everything एक Linux CLI प्रोग्राम है, जिसकी खासियत यह है कि यह टर्मिनल में GUI विंडो को सीधे चलाने देता है
- इसका मुख्य हिस्सा एक स्वयं विकसित Wayland-आधारित compositor है, जो सामान्य मॉनिटर की जगह टर्मिनल में GUI को render करता है
- यह x11 और Wayland दोनों आधारित ऐप्स को सपोर्ट करता है, और
ssh के माध्यम से remote उपयोग भी संभव है
- टर्मिनल की सीमित rows/columns विंडो क्वालिटी को प्रभावित करती हैं, और टर्मिनल resolution बढ़ाने पर क्वालिटी बेहतर हो सकती है (हालांकि performance कम हो सकती है)
प्रमुख उपयोग उदाहरण
- गेम चलाना: टर्मिनल के अंदर Fontemon जैसे गेम या Doom (shareware episode) चलाया जा सकता है
- वीडियो चलाना: Wing It! फ़िल्म चलाई जा सकती है, और resolution समायोजित करके framerate तथा image quality के बीच संतुलन बनाया जा सकता है
- ब्राउज़र चलाना: iTerm2 +
ssh वातावरण में Ubuntu से कनेक्ट होकर Firefox चलाया जा सकता है
- फ़ाइल व्यूअर का विकल्प: अलग से terminal-only file viewer बनाने की ज़रूरत नहीं, मौजूदा GUI file manager को सीधे टर्मिनल में इस्तेमाल किया जा सकता है
- रिकर्सिव रनिंग: टर्मिनल के अंदर एक और टर्मिनल चलाना, यानी "terminal in a terminal"
कार्यविधि और विकास संबंधी जानकारी
-
बुनियादी अवधारणा
- पहले के समय में, अगर किसी प्रोग्राम को स्क्रीन पर कुछ बनाना होता था, तो वह RAM के एक विशेष हिस्से में सीधे लिख सकता था
- आधुनिक सिस्टम में Display Server इनपुट और आउटपुट को संभालता है, और माउस/कीबोर्ड जैसे इनपुट तथा graphics/image output का समन्वय करता है
- Linux वातावरण में आम तौर पर Wayland protocol या X11 का उपयोग होता है, और Term.everything Wayland पर आधारित है
-
Wayland protocol
- Wayland स्वयं display server नहीं है, बल्कि सर्वर और प्रोग्राम के बीच संचार को परिभाषित करने वाला एक protocol है
- प्रोग्राम अपने द्वारा render किया गया परिणाम display server को देता है, और सर्वर उसे स्क्रीन पर दिखाता है
- महत्वपूर्ण बात यह है कि यह कोई निश्चित rendering model थोपता नहीं है → प्रोग्राम अपनी इच्छानुसार चित्र बना सकता है
- इसी वजह से आउटपुट को स्क्रीन की बजाय किसी और जगह (जैसे टर्मिनल) भेजना संभव है
-
Term.everything में आउटपुट प्रोसेसिंग
- Wayland client (चल रहा GUI ऐप) द्वारा बनाई गई image को लेकर उसे टर्मिनल character output में बदला जाता है
- रूपांतरण प्रक्रिया:
- 1. client द्वारा भेजा गया image data प्राप्त करना
- 2. उसे UTF-8 characters + ANSI escape codes में बदलना
- 3. इस रूपांतरण में chafa library का उपयोग करके pixels को terminal characters से मैप करना
- इनपुट के लिए stdin से आने वाले keyboard और mouse events को Wayland client तक पहुंचाया जाता है
-
वास्तविक इम्प्लीमेंटेशन
- मूल विचार सरल है, लेकिन वास्तविक इम्प्लीमेंटेशन में लगभग दस हज़ार लाइनों के कोड की ज़रूरत पड़ी
- यह Typescript (bun आधारित) और कुछ C++ में लिखा गया है, और custom Wayland display server की भूमिका निभाता है
- source code को src/ directory में देखा जा सकता है
-
विस्तार की संभावना
- Term.everything का लक्ष्य सिर्फ टर्मिनल में GUI चलाना भर नहीं है
- Wayland-आधारित custom display server का उपयोग करके अन्य प्रयोगात्मक विचारों को भी लागू किया जा सकता है
- उदाहरण: आउटपुट डिवाइस को टर्मिनल की बजाय किसी बिल्कुल अलग माध्यम (जैसे printer, physical artwork आदि) से जोड़ना
अभी कोई टिप्पणी नहीं है.