Glide is in very early alpha. There will be many missing features and bugs.

Frequently asked questions

Who is Glide for? #

Glide is for you if:

  • You like keyboard focused applications
  • You enjoy tinkering with software and going deep with customisation
  • You're happy to configure software through TypeScript code
  • You like Firefox
Who is Glide not for? #

Glide is probably not for you if:

  • You want everything to be configurable through a GUI
  • You value stability over all else (Glide is very early in its life)
  • You would not feel comfortable running a new browser that is maintained by a single person
  • You do not like Firefox
Why Firefox? #

At the time of writing, there are no viable alternatives that are not just Chromium.

Building on Chromium would be an uphill battle fighting against changes that Google makes to purely benefit itself, like the manifest v2 removal.

No matter what you think of Mozilla's leadership, Firefox has stayed the most true to FOSS principles and Mozilla are held to much higher standards than their competitors.

side note: Ladybird is very promising and I hope their project is a success!

What parts of Firefox have been changed? #

See Firefox for information on how Firefox has been integrated within Glide.

Why not X extension? #

Existing extensions do cover a lot of Glide's features - for example, Tridactyl is a major source of inspiration for this browser.

However any extension that wants to offer the same level of flexibility that Glide does will always be fighting an uphill battle and won't always have access to all the APIs needed as Firefox restricts the kinds of documents extensions can operate on, e.g. extensions cannot run on addons.mozilla.org without hacky workarounds.

While these restrictions are generally reasonable (you wouldn't want a malicious extension to disable deletion of itself) it makes it impossible for an extension like this to deliver a consistent, deeply integrated experience. Building a Firefox fork means we control the full stack and removes the extension constraints while retaining Firefox’s security model.

Additionally, an example of a feature that Glide has that is infeasible to implement within a web extension is custom caret styles where we render a block (█) caret in normal mode and a standard (|) caret in insert mode.

Why can't I play DRM content? #

DRM is a walled garden and blocked for open source browsers, at the least the kind not ran by a large organisation.

Additionally, a widevine license would be prohibitively expensive, even if we would be accepted.

This is also a matter of principle, you should reconsider if it's worth using services that require DRM and proprietary software. See deffective by design.

How do I configure X? #

The cookbook has some example snippets for common operations.

The API reference includes all of the Glide APIs available in the config.

The Extensions API documents the available web extensions APIs.

Why does the Glide API use snake_case? #

Because snake_case is better.

It's more readable, easier to scan, and doesn't have awkward initialisms like tabID / tabId.

A Glide keymapping conflicts with a keymapping on a website, what do I do? #

As there are almost zero default keymappings in insert mode, you can press i + the key + <Esc>.

Alternatively, if the above workaround is annoying, you could either enter insert mode automatically when the specific site is focused:

glide.autocmds.create("UrlEnter", {
  hostname: "example.com",
}, async () => {
  await glide.excmds.execute("mode_change insert");
});

Or delete the specific keymapping(s) that conflict:

glide.autocmds.create("UrlEnter", {
  hostname: "example.com",
}, () => {
  glide.buf.keymaps.del("normal", "x");
  // ...
});
How do I view logs from the config? #

The easiest way to see the logs is to execute :repl, which will spawn a Browser Toolbox window with just the console.

Right now, this will also include all the logs from the main browser process, so if you have a lot of tabs open it will be quite noisy.

You can filter the logs down to just the config by clicking on Filter output (or pressing <C-f> on Linux or <M-f> on MacOS) and entering glide.ts or .ts (as there are currently no other TS files in the firefox build).