Alterando o atalho de Abas no Firefox

Alterando o atalho de Abas no Firefox

O atalho CTRL + T para abrir novas abas no Firefox não faz mais sentido para mim, então decidi mudar. Agora, utilizo CTRL + , para abrir abas.

Isso foi configurado no ArchLinux, mas também funciona no Windows, desde que o Firefox tenha sido instalado fora da Microsoft Store.

Passo a passo para a alteração:

  1. Acesse a instalação do Firefox, no meu caso, está localizada em:/usr/lib/firefox
  2. Crie um arquivo chamado firefox.cfg na raiz dessa pasta.
  3. Dentro da pasta defaults/prefs, crie o arquivo autoconfig.js.

Após isso, basta reiniciar o Firefox, e o novo atalho estará funcionando. Não entrarei em muitos detalhes aqui, mas o código já está disponível para quem desejar seguir o processo.

Abaixo você tem o código de cada arquivo.

firefox.cfg

// Firefox autoconfig
// don`t remove this line

try {
  const Ci = Components.interfaces;
  const Cc = Components.classes;

  const log = (m) => Cc["@mozilla.org/consoleservice;1"]
    .getService(Ci.nsIConsoleService).logStringMessage("[autoconfig] " + m);

  /* ---- patch de atalhos ---- */
  function patch(win) {
    const doc = win.document;
    log("Janela carregada → " + win.location.href);

    /* remove Ctrl+T original */
    const oldKey = doc.getElementById("key_newNavigatorTab");
    if (oldKey) { oldKey.remove(); log("Ctrl+T removido"); }

    /* adiciona Ctrl+,  usando o comando interno */
    const keyset = doc.getElementById("mainKeyset");
    if (!keyset) { log("mainKeyset não encontrado"); return; }

    if (!doc.getElementById("key_newTab_Comma")) {
      const k = doc.createElement("key");
      k.id = "key_newTab_Comma";
      k.setAttribute("keycode", "VK_COMMA");      // vírgula
      k.setAttribute("modifiers", "accel");       // Ctrl / ⌘
      k.setAttribute("command", "cmd_newNavigatorTab");
      keyset.appendChild(k);
      log("Ctrl+, adicionado (VK_COMMA → cmd_newNavigatorTab)");
    }

    /* fallback JS – dispara o mesmo comando */
    win.addEventListener("keydown", (e) => {
      if (e.ctrlKey && e.key === ",") {
        e.preventDefault();
        const cmd = doc.getElementById("cmd_newNavigatorTab");
        if (cmd) cmd.doCommand();
      }
    }, true);
  }

  /* observa cada janela nova */
  Cc["@mozilla.org/observer-service;1"]
    .getService(Ci.nsIObserverService)
    .addObserver(
      { observe(s, t) { if (t === "browser-delayed-startup-finished") patch(s); } },
      "browser-delayed-startup-finished",
      false
    );

  log("Script carregado ✅ (usa cmd_newNavigatorTab)");
} catch (e) {
  Cc["@mozilla.org/consoleservice;1"]
    .getService(Ci.nsIConsoleService)
    .logStringMessage("[autoconfig] ERRO fatal: " + e);
}

defaults/pref/autoconfig.js

// carrega o script principal
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);

// ❗ desliga a “gaiola” de segurança para permitir JS privilegiado
pref("general.config.sandbox_enabled", false);