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:
- Acesse a instalação do Firefox, no meu caso, está localizada em:
/usr/lib/firefox
- Crie um arquivo chamado
firefox.cfg
na raiz dessa pasta. - Dentro da pasta
defaults/prefs
, crie o arquivoautoconfig.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);