- 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
Oldukça niş bir şekilde kullanmak gerekecek gibi görünüyor. GUI'nin avantajlarını... dengeleyecek kadar verimli kullanılabilirse tabii..
Hacker News yorumları
glide-hintCSS'ini deuserChrome.cssile kendi estetik zevkime göre temalandırdım. Harika işler çıkarmaya devam etmenizi umuyorum, takipte olacağımchrome://sayfalarında da çalışıyor mu merak ediyorum. Vimium'un Firefox sürümünde bu kısım hep eksik geliyordu