3 puan yazan GN⁺ 2025-10-03 | 2 yorum | WhatsApp'ta paylaş
  • Firefox tabanlı TypeScript yapılandırma dosyası üzerinden tarayıcının kendisini programlanabilir bir araca dönüştüren yeni bir yaklaşım
  • Web uzantılarının sahip olduğu güvenlik kısıtları olmadan tarayıcı arayüzünü özelleştirme, harici süreç çağırma gibi sınırsız işlevler gerçekleştirme imkânı
  • Vim tarzı mod sistemi ve tuş eşlemeleri sunarak fare olmadan tamamen klavye merkezli gezinme desteği
  • İpucu modu, sekme fuzzy finder, REPL gibi geliştirici dostu özellikleri varsayılan olarak sunuyor ve 6 aylık gerçek kullanımda doğrulanmış durumda
  • macOS ve Linux için alfa sürümü indirilebilir; mevcut Firefox uzantıları ve iş akışlarıyla tamamen uyumlu

Glide'ın geliştirilme arka planı

  • Geliştirici, Firefox'ta Tridactyl uzantısını kullanırken web uzantılarının temel güvenlik kısıtları sorunuyla karşılaştı
    • addons.mozilla.org gibi belirli sitelerde uzantı tamamen devre dışı kalıyor ve tüm tuş eşlemeleri çalışmıyor
    • Özel ana sayfada da Tridactyl'in çalışmaması sorunu yaşanıyor
  • Bu kısıtlar, kötü niyetli uzantılardan kullanıcıyı korumak için tarayıcının zorunlu güvenlik modeli olsa da, aynı zamanda genişletilebilirliği ciddi biçimde sınırlandırıyor
  • Tarayıcı arayüzünün kendisini özelleştirmekten harici araç çağırmaya kadar sınırsızca mümkün olan gerçek bir özelleştirilebilir tarayıcı ihtiyacını fark ederek Glide geliştirmesine başladı

Glide'ın temel farkları

  • TypeScript yapılandırma dosyası tabanlı tam kontrol sağlıyor
    • Web uzantılarının asla destekleyemeyeceği API'ler ve özellikler kullanılabiliyor
    • Yapılandırma dosyasını doğrudan son kullanıcı yazdığı için güvenlik kısıtı gerektirmeyen, temelden farklı bir güvenlik modeli var
  • Yapılandırma dosyasında yapılabilenler
    • Özel tuş eşlemeleri tanımlama
    • Web uzantısı API'lerine erişim
    • Rastgele harici süreçler çalıştırma
    • Makrolar tanımlama vb.
  • Firefox tabanlı olduğu için mevcut Firefox uzantıları ve iş akışları aynen çalışıyor

Pratik yapılandırma örnekleri

GitHub deposunu otomatik klonlama ve editörü açma

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 depo sayfasında gC tuşuna basınca otomatik olarak şu işlemler yapılır
    • Geçerli URL'den sahip ve depo adı çıkarılır
    • Depo ~/github.com/$owner/$repo yoluna klonlanır
    • kitty terminalinde neovim açılarak klonlanan depoya geçilir
  • Her işlemde birkaç saniye kazandırır ve bu yapılandırmayı eklemek yalnızca birkaç dakika sürer

Takvim sekmesine hızlı geçiş

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 tuşuyla Google Takvim sekmesine anında geçilebilir

Mod sistemi

  • Vim'in mod kavramını ödünç alıyor; tüm tuş eşlemeleri belirli bir moda bağlı
  • Tarayıcıyla etkileşime göre otomatik mod değişimi yapılıyor
    • normal modu: varsayılan mod
    • insert modu: <input> öğesine tıklanınca otomatik geçilir; böylece tuş eşlemeleri metin girişini engellemez
    • ignore modu: Shift+Escape ile geçilir; web sitesi tuş eşlemeleriyle çakıştığında kullanılır

Klavye tabanlı gezinme

İpucu modu

  • f tuşuna basarak ipucu moduna girilir
  • Tıklanabilir tüm öğelerin (bağlantılar, düğmeler vb.) üzerine metin etiketleri bindirmesi gösterilir
  • Etiket girildiğinde ilgili öğeye odaklanılır ve tıklama gerçekleştirilir
  • Fare olmadan web sayfasını tamamen kontrol etmek mümkündür

Kişisel olarak sevilen özellikler

  • gI: sayfadaki en büyük görünür giriş öğesine otomatik odaklanır; sihir gibi hissettiren bir özellik
  • <space><space>: sekme fuzzy finder çalıştırarak kaybolan sekmeleri kolayca bulma
  • <c-i> ve <c-o>: önceki sekme gezinmesi için vazgeçilmez
  • :repl: yapılandırma değişikliklerini hızlıca test etme
  • İpucu modu: fareye uzanmak istemediğinizde kullanışlı
  • which-key tarzı arayüz: farklı tuş eşlemelerini hatırlatan bir arayüz

Mevcut durum ve kullanılabilirlik

  • Yaklaşık 6 aydır günlük kullanımda
  • Hâlâ erken alfa aşamasında, ancak macOS ve Linux'ta indirilebilir
  • :tutor komutuyla öğreticiye bakılması öneriliyor (henüz tamamlanmış değil)
  • Linux kullanıcılarının, henüz paket deposunda yer almadığı için manuel olarak arşivi açıp yapılandırma yapması gerekiyor
  • Daha fazla örnek için cookbook ve geliştiricinin dotfiles deposuna bakılabilir
  • Alfa sürüm olduğu için henüz tüm API'ler uygulanmış değil, ancak temel hedef tam kontrol sunmak

2 yorum

 
shakespeares 2025-10-07

Oldukça niş bir şekilde kullanmak gerekecek gibi görünüyor. GUI'nin avantajlarını... dengeleyecek kadar verimli kullanılabilirse tabii..

 
GN⁺ 2025-10-03
Hacker News yorumları
  • Bana tam hitap etmiyor ama Chromium yerine Firefox'u fork etmiş olmaları ferahlatıcı geldi. Artık Zen ve Floorp ile birlikte ciddi biçimde değiştirilmiş üç Firefox fork'u olmuş oluyor
    • Tor da var, onu da bu akıma eklemek gerekir
    • LibreWolf da var; şahsen bunun varsayılan olmasını isterdim
  • Fikrin gerçekten iyi olduğunu düşünüyorum ve güvenlik yamalarını takip ederek sürdürüldüğüne dair yorumu görünce içim rahatladı
  • Ben de Vimium C kullanırken addons.mozilla.org kısıtlamalarına takılmıştım. Bu çok sık olmadığı için tarayıcı değiştirecek kadar büyük bir mesele değildi ama onun yerine tüm Linux masaüstünü klavye merkezli hâle getiren araçlar bana daha cazip geliyor. Örneğin homerow'un macOS'ta yaptığı gibi
  • Geliştiricisiyim, merak ettiğiniz bir şey varsa istediğiniz zaman sorabilirsiniz
    • Hint API'sini beğendim; özellikle tarayıcı öğelerine de hint verebilmesi çok hoş. Ama ileri düzey kullanıcılar muhtemelen hint sistemiyle farklı türde öğeleri seçmek isteyecektir. Hangi öğelere hint ekleneceğini belirlemek için CSS seçici geçebileceğiniz şekilde bu özelliğin genişletilmesini isterdim. Örneğin kullanıcı belirli bir öğeyi seçip metnini kopyalayan bir komut oluşturabilir
    • DRM desteği olup olmadığını merak ediyorum. Netflix gibi ticari streaming sitelerinde kullanılabiliyor mu bilmek isterim. Eskiden Firefox fork'larında bu büyük bir sorundu. Ayrıca Firefox Sync nasıl çalışıyor, onu da merak ediyorum. Bir de dış süreçlerden RPC çağrısı yapılıp yapılamadığını sormak istiyorum. Örneğin şu an açık sekmenin URL'sini, listesini veya içeriğini almak ya da sekmeleri uzaktan denetleyip başka URL'lere gitmek gibi şeyler; yani diğer uygulamalar veya script'lerle entegrasyon için kullanılabilir mi diye merak ediyorum. Firefox bu alanda biraz zayıf kalıyor. Son olarak güvenliğinin ne düzeyde olduğunu merak ediyorum
    • Proje çok havalı görünüyor. Config'in Helix/Kakoune tarzı keybinding'leri ayarlayabilecek kadar esnek olup olmadığını merak ediyorum
    • Config dosyasıyla eklentilerin otomatik kurulumu ve Firefox'un yerleşik ayarlarının değiştirilmesi mümkün mü öğrenmek istiyorum. Diğer tüm programlarımı dotfiles ile ayarlıyorum; Firefox'ta da böyle bir seçenek olsa iyi olurdu
  • Gerçekten harika görünüyor. Şu anda bir süredir Firefox, VimFX ve karmaşık bir config.js kombinasyonu kullanıyorum. NixOS paketi birleştirildiğinde kesinlikle deneyeceğim. Eğer hâlâ varsayılan Firefox ESR kullanıyorsanız VimFX'i güçlü biçimde tavsiye ederim. https://github.com/akhodakivskiy/VimFx faydalı olabilir. VimFX'in en büyük eksiği, Firefox'un dahili API'lerinin belgelerinin yetersiz olması. Sekme yönetimi gibi işler için, WebExtensions API ile kolayca yapılabilecek şeylerde bile kaynak kodunu elle kurcalamak gerekiyordu. Glide'ın bu API'leri config dosyasından kullanılabilir hâle getirmesi benim en çok heyecanlandığım kısım
  • ʕ•ᴥ•ʔ Bunu Bear Blog'da gördüm ve keyifle kullanıyorum. Zen browser'ımdaki gibi kenar çubuğu ve sabit sekme düzenimi kurup iş üretkenliği yığınıma ekleyerek deniyorum. glide-hint CSS'ini de userChrome.css ile kendi estetik zevkime göre temalandırdım. Harika işler çıkarmaya devam etmenizi umuyorum, takipte olacağım
    1. https://freeimage.host/i/KMQu3EQ
    2. https://freeimage.host/i/KMQAJ9t
    • Ortalama olarak aynı anda kaç sekme açık tutuyorsunuz merak ediyorum. Sekmeleri sadece favicon'lara bakarak bulmakta zorlandığınız oluyor mu?
  • Kaynak kodu yapısına derinlemesine bakmadım ama Firefox fork'u denince, gelecekte Firefox'un güvenlik yamalarını ve düzeltmelerini nasıl entegre etmeyi planladığınızı merak ediyorum
    • Bunu otomatik bir yama yaklaşımı ve yeni dosyalar ekleyerek yaptım. Derleme sırasında Firefox kaynak kodu indiriliyor ve yamalar uygulanıyor; bu yüzden Firefox sürümünü yükseltmek de çok kolay. Hatta sık güncelleme yapabildiğim için Firefox beta kanalını takip ediyorum
  • Compact mode'un sonunda geri gelmesine çok sevindim. Bir Firefox fork'u görmek de güzel ve bu konsept gerçekten çok ilgi çekici. Ben her yerde vim kullanan biriyim, o yüzden bunu mutlaka kendim denemeliyim diye düşünüyorum
    • Yalnız j/k ile kaydırırken hareket çok akıcı gelmiyor. Kaydırmayı daha doğal hâle getirmenin bir yolu var mı merak ediyorum (belki belgeleri gözden kaçırmışımdır)
  • Bence oldukça havalı. Chrome'da Vimium kullanıyordum ve memnundum
    1. https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
    • chrome:// sayfalarında da çalışıyor mu merak ediyorum. Vimium'un Firefox sürümünde bu kısım hep eksik geliyordu
  • Belgeleri baştan sona hızlıca gözden geçirdim; bu sanki hayalimdeki tarayıcı gibi. Firefox tabanlı olması, WebExt API'yi tam olarak desteklemesi ve hatta tarayıcı dışı komutları bile çalıştırabilmesi çok hoşuma gitti. Keşke Firefox Developer Edition böyle olsaydı; bugün hemen denemem gerek