3 पॉइंट द्वारा GN⁺ 2025-10-03 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Firefox-आधारित TypeScript config file के ज़रिए ब्राउज़र को खुद एक programmable tool में बदलने का नया तरीका
  • web extension की security limitations के बिना browser UI customization, external process calls आदि जैसी असीमित capabilities लागू करना संभव
  • Vim-स्टाइल mode system और key mapping के साथ mouse के बिना पूरी तरह keyboard-centric browsing का समर्थन
  • hint mode, tab fuzzy finder, REPL जैसी developer-friendly features डिफ़ॉल्ट रूप से शामिल, और 6 महीनों के वास्तविक उपयोग में परखी गई
  • macOS और Linux पर alpha version download उपलब्ध, और मौजूदा Firefox extensions व workflows के साथ पूरी तरह compatible

Glide की विकास पृष्ठभूमि

  • डेवलपर Firefox में Tridactyl extension का उपयोग करते समय web extension की मूलभूत security limitations की समस्या से गुज़रे
    • addons.mozilla.org जैसी कुछ साइटों पर extension पूरी तरह disabled हो जाता है, जिससे सभी key mappings काम करना बंद कर देते हैं
    • custom homepage पर भी Tridactyl के काम न करने की समस्या हुई
  • ये limitations यूज़र को malicious extensions से बचाने के लिए ब्राउज़र के ज़रूरी security model का हिस्सा हैं, लेकिन साथ ही extensibility को बहुत सीमित कर देती हैं
  • browser UI customization से लेकर external tools को call करने तक बिना किसी सीमा के संभव एक सच्चे customized browser की ज़रूरत को समझते हुए Glide का विकास शुरू किया गया

Glide की मुख्य विशेष भिन्नताएँ

  • TypeScript config file के आधार पर पूरा नियंत्रण
    • ऐसे API और features उपलब्ध हैं जिन्हें web extensions कभी support नहीं कर सकते
    • क्योंकि end user स्वयं config file लिखता है, इसलिए security restrictions लगाने की ज़रूरत नहीं पड़ती; यह मूल रूप से अलग security model है
  • config file में किए जा सकने वाले काम
    • custom key mappings define करना
    • web extension API access करना
    • मनचाहे external processes चलाना
    • macros define करना आदि
  • Firefox-आधारित होने के कारण मौजूदा Firefox extensions और workflows वैसे ही काम करते हैं

उपयोगी config उदाहरण

GitHub repository को अपने-आप clone करना और editor चलाना

glide.keymaps.set("normal", "gC", async () => {  
  // extract the owner and repo from a url like 'https://github.com/glide-browser/glide'  
  const [owner, repo] = glide.ctx.url.pathname.split("/").slice(1, 3);  
  if (!owner || !repo) throw new Error("current URL is not a github repo");  
  // * clone the current github repo to ~/github.com/$owner/$repo  
  // * start kitty with neovim open at the cloned repo  
  const repo_path = glide.path.join(glide.path.home_dir, "github.com", owner, repo);  
  await glide.process.execute("gh", ["repo", "clone", glide.ctx.url, repo_path]);  
  await glide.process.execute("kitty", ["-d", repo_path, "nvim"], { cwd: repo_path });  
}, { description: "open the GitHub repo in the focused tab in Neovim" });  
  • GitHub repository page पर gC दबाते ही अपने-आप ये काम होते हैं
    • मौजूदा URL से owner और repository नाम निकालना
    • repository को ~/github.com/$owner/$repo path में clone करना
    • kitty terminal में neovim खोलकर cloned repository पर जाना
  • हर बार कुछ सेकंड बचते हैं, और यह config जोड़ने में सिर्फ कुछ मिनट लगे

calendar tab पर तेज़ी से स्विच करना

glide.keymaps.set("normal", "gc", async () => {  
  const tab = await glide.tabs.get_first({ url: "https://calendar.google.com/*"; });  
  assert(tab && tab.id);  
  await browser.tabs.update(tab.id, { active: true });  
}, { description: "[g]o to [c]alendar.google.com" });  
  • gc key से Google Calendar tab पर तुरंत जाया जा सकता है

Mode system

  • Vim की mode अवधारणा अपनाई गई है, जिसमें हर key mapping किसी विशेष mode से जुड़ी होती है
  • ब्राउज़र के साथ interaction के आधार पर mode अपने-आप बदलता है
    • normal mode: डिफ़ॉल्ट mode
    • insert mode: <input> element पर click करते ही अपने-आप सक्रिय, ताकि key mappings text input में बाधा न बनें
    • ignore mode: Shift+Escape से सक्रिय, जब website के keys और mappings में टकराव हो

Keyboard-आधारित navigation

Hint mode

  • f key दबाकर hint mode में जाएँ
  • सभी clickable elements (links, buttons आदि) पर text labels overlay के रूप में दिखते हैं
  • label टाइप करने पर उस element पर focus और click किया जाता है
  • mouse के बिना पूरे web page को नियंत्रित किया जा सकता है

व्यक्तिगत रूप से पसंदीदा features

  • gI: page के सबसे बड़े visible input element पर अपने-आप focus, यह लगभग जादू जैसा लगता है
  • <space><space>: tab fuzzy finder चलाकर खोए हुए tabs आसानी से ढूँढना
  • <c-i> और <c-o>: tab history navigation के लिए बहुत ज़रूरी
  • :repl: config changes को तेज़ी से test करना
  • hint mode: जब mouse की ओर हाथ बढ़ाना न चाहें, तब उपयोगी
  • which-key स्टाइल UI: अलग-अलग key mappings याद दिलाने वाला interface

वर्तमान स्थिति और उपलब्धता

  • लगभग 6 महीनों से रोज़मर्रा में उपयोग किया जा रहा है
  • अभी भी शुरुआती alpha stage में है, लेकिन macOS और Linux पर download उपलब्ध है
  • :tutor command से tutorial देखने की सलाह (हालाँकि यह अभी पूरा नहीं हुआ है)
  • Linux users को अभी package repository में उपलब्ध न होने के कारण manual extract और setup करना होगा
  • cookbook और डेवलपर के dotfiles में और उदाहरण देखे जा सकते हैं
  • alpha version होने के कारण अभी सभी API लागू नहीं हुए हैं, लेकिन पूरा नियंत्रण देना ही मुख्य लक्ष्य है

2 टिप्पणियां

 
shakespeares 2025-10-07

लगता है इसे काफ़ी nerdy तरीके से इस्तेमाल करना पड़ेगा। GUI के फ़ायदों को... अगर उसकी भरपाई करते हुए इसे उपयोगी ढंग से इस्तेमाल किया जा सके, तो ठीक है..

 
GN⁺ 2025-10-03
Hacker News की राय
  • यह पूरी तरह मेरी पसंद का नहीं है, लेकिन Chromium की जगह Firefox को fork करना ताज़गी भरा लगा। अब Zen और Floorp के साथ मिलाकर काफ़ी बदले हुए Firefox forks की संख्या तीन हो गई है
    • Tor भी है, तो उसे भी इस धारा में जोड़ा जा सकता है
    • LibreWolf भी है, और निजी तौर पर मेरी इच्छा है कि यही default बन जाए
  • मुझे यह आइडिया बहुत अच्छा लगा, और यह देखकर तसल्ली हुई कि इसे security patches को track करने वाले तरीके से maintain किया जा रहा है
  • मुझे भी Vimium C इस्तेमाल करते समय addons.mozilla.org की सीमाओं का सामना करना पड़ा था। इसकी आवृत्ति इतनी ज़्यादा नहीं थी कि ब्राउज़र बदलना पड़े, लेकिन इसके बजाय पूरा Linux desktop कीबोर्ड-केंद्रित बनाने वाले tools ज़्यादा आकर्षक लगते हैं। जैसे homerow macOS पर करता है
  • मैं लेखक हूँ, अगर कोई सवाल हो तो कभी भी पूछ सकते हैं
    • Hint API पसंद आया, ख़ासकर यह कि browser elements को भी hints दिए जा सकते हैं। लेकिन लगता है कि advanced users hint system के ज़रिए अलग-अलग तरह के elements चुनना चाहेंगे। अच्छा होगा अगर इसे CSS selectors पास करके यह तय करने तक बढ़ाया जाए कि किन elements पर hints लगें। उदाहरण के लिए, user किसी खास element को चुनकर उसका text copy करने वाला command बना सकता है
    • जानना चाहता हूँ कि DRM support है या नहीं। क्या इसे Netflix जैसी commercial streaming sites पर इस्तेमाल किया जा सकता है? पहले Firefox forks में यह बड़ी समस्या रही है। साथ ही Firefox Sync का क्या होगा, यह भी जानना चाहूँगा। और यह भी पूछना चाहता हूँ कि क्या external process से RPC calls संभव हैं। उदाहरण के लिए, क्या किसी दूसरे app या script के साथ integration के लिए अभी खुले tabs के URL, सूची या contents लाए जा सकते हैं, या tabs को remotely control करके किसी दूसरे URL पर ले जाया जा सकता है? इस क्षेत्र में Firefox कुछ कमज़ोर रहा है। आखिर में, इसकी security कितनी मज़बूत है, यह भी जानना चाहूँगा
    • प्रोजेक्ट बहुत शानदार लग रहा है। जानना चाहता हूँ कि config इतना flexible है या नहीं कि Helix/Kakoune शैली के keybindings सेट किए जा सकें
    • क्या config file से extensions की automatic installation और Firefox की built-in settings में बदलाव किया जा सकता है? मेरे बाकी सारे programs dotfiles से सेट होते हैं, तो अच्छा होगा अगर Firefox में भी ऐसा विकल्प हो
  • यह वाकई शानदार लग रहा है। मैं अभी Firefox, VimFX और एक जटिल config.js के combination के साथ काफ़ी समय से काम कर रहा हूँ। NixOS package merge होते ही इसे ज़रूर आज़माऊँगा। अगर आप default Firefox ESR पर बने रहना चाहते हैं, तो मैं VimFX की ज़ोरदार सिफारिश करूँगा। https://github.com/akhodakivskiy/VimFx देखना उपयोगी होगा। VimFX की सबसे बड़ी कमी यह है कि Firefox internal API का documentation कमज़ोर है। Tab management जैसी चीज़ों के लिए, जो WebExtensions API में आसानी से हो जातीं, source code तक खंगालना पड़ता था। Glide का यह हिस्सा कि वह config file से ऐसे APIs इस्तेमाल करने देता है, मुझे सबसे ज़्यादा उत्साहित करता है
  • ʕ•ᴥ•ʔ मैंने इसे Bear Blog पर देखा और मज़े से इस्तेमाल कर रहा हूँ। मैंने अपने zen browser की तरह sidebar और pinned tabs सेट किए हैं, और productivity stack में जोड़कर इसे परख रहा हूँ। glide-hint CSS को भी userChrome.css से अपनी aesthetic पसंद के अनुसार theme किया है। आगे भी यह शानदार काम कैसे बढ़ता है, यह देखता रहूँगा
    1. https://freeimage.host/i/KMQu3EQ
    2. https://freeimage.host/i/KMQAJ9t
    • औसतन आप एक साथ कितने tabs खुले रखते हैं, यह जानना चाहूँगा। क्या सिर्फ favicon देखकर tab पहचानने में कभी असुविधा होती है?
  • मैंने source code structure को बहुत गहराई से नहीं देखा, लेकिन जब इसे Firefox fork कहा जा रहा है, तो आगे Firefox के security patches या fixes को integrate करने की योजना क्या है, यह जानना चाहता हूँ
    • इसे automated patching और नए files जोड़कर लागू किया गया है। Build के समय Firefox source डाउनलोड करके patches apply किए जाते हैं, इसलिए Firefox version बढ़ाना भी बहुत आसान है। वास्तव में, लगातार updates संभव हैं, इसलिए यह Firefox beta channel को track कर रहा है
  • आख़िरकार compact mode वापस आ गया, इसके लिए मैं बहुत आभारी हूँ। Firefox fork भी स्वागतयोग्य है, और यह concept काफ़ी दिलचस्प है। मैं हर जगह vim इस्तेमाल करने वालों में हूँ, इसलिए इसे खुद ज़रूर आज़माना चाहूँगा
    • लेकिन j/k से scroll करते समय movement उतना smooth नहीं लगता। क्या scroll को ज़्यादा natural बनाने का कोई तरीका है? (हो सकता है मैंने docs बस सरसरी तौर पर देखे हों)
  • मुझे यह काफ़ी बढ़िया लगा। मैं Chrome में Vimium इस्तेमाल करता आया हूँ और संतुष्ट रहा हूँ
    1. https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
    • जानना चाहता हूँ कि क्या यह chrome:// pages पर भी काम करता है। Vimium के Firefox version में यही हिस्सा हमेशा अधूरा लगता था
  • मैंने docs को तेज़ी से देखा, और यह वही browser लगता है जिसका मैं सपना देखता था। Firefox-based होने के साथ WebExt API भी पूरी तरह उपलब्ध है, और browser के बाहर commands चलाने की क्षमता भी पसंद आई। काश Firefox Developer Edition ऐसा होता; आज ही इसे तुरंत आज़माना पड़ेगा