V about:config nastavit předvolby.
Firefox>=87
browser.quitShortcut.disabled true
https://bugzilla.mozilla.org/show_bug.cgi?id=52821
Firefox>=65
browser.sessionstore.warnOnQuit true
browser.warnOnQuit true
 
Zdroj
Starší Firefox
browser.showQuitWarning true
browser.warnOnQuit true
 Testováno ve všech verzích, narazil jsem na 61.0.2-64.0.2 na 64bit Linuxu (a na kanál 60esr na Win10). 
tl/dr:přiřadit globální zkratku Ctrl-Q
 Ve Firefoxu Quantum about:config nastavení, která dříve varovala před uzavřením Firefoxu náhodným stisknutím klávesy Ctrl-Q, již nefungují.
Řešení: na Arch Linux | Desktopové prostředí XFCE (jiná linuxová distribuce a/nebo desktopy mohou umožňovat podobný přístup):
-  Nabídka Whiskers>> Všechna nastavení>> Klávesnice>> Zkratky aplikací>> Přidat 
-  Přidejte novou "aplikaci", null; přiřaďte jej kCtrl-Qstisknutí klávesy- Aktualizace (komentář od @justderb):"Použít 'true' místo 'null' je hezké, pokud nechcete, aby se vyskakovalo chybové okno."
 
 
 Vyvolání: zde jsem stiskl Ctrl-Q ve Firefoxu Quantum v. 60.0.1 (64bitová verze); místo ukončení Firefoxu se mi zobrazí toto vyskakovací okno 
 
Upozornění: to samozřejmě globálně ovlivňuje všechny stisky kláves Ctrl-Q. Nicméně – podle mých vlastních preferencí – tento nedostatek převáží zrušením těchto náhodných uzavření Firefoxu Ctrl-Q (po kterém se musím znovu přihlásit na webové stránky:GitHub; reddit; ...).
Aktualizace 1
Odpověď @crazypyro pro mě také funguje (FF Quantum 63.0 na x86_64 Linuxu) a zobrazí vyskakovací varování, pokud se pokusíte ukončit Firefox. To by mělo být pravděpodobně považováno za konkrétní odpověď, s mým řešením jako obecnějším řešením.
 about:config (obě z následujících nastaveno na true ):
- browser.showQuitWarning
- browser.warnOnQuit
Aktualizace 2 [2020-03-01]
Nějakou dobu jsem ve Vimu narážel na občasný a frustrující problém, kdy terminál „zamrzl“ a já ztratil kontrolu nad stiskem kláves Vim (vyžaduje, abych zabil/restartoval Vim).
 Po nějakém zkoumání se ukázalo, že problém je Software Flow Control (XON/XOFF flow control). Ctrl-s zamrzne terminál, dokud Ctrl-q je stisknuto – což je podle mého výše uvedeného řešení globálně přemapováno na „fiktivní aplikaci“ true .
Řešením tohoto problému je přidání řádků
# enable Ctrl-s and Ctrl-q:
stty -ixon
 v horní části vašeho ~/.bashrc , pak otevřete nový terminál a spusťte Vim.
Relevantní odkazy/diskuze:
- https://unix.stackexchange.com/questions/72086/ctrl-s-hang-terminal-emulator
- https://stackoverflow.com/questions/3419820/sometimes-my-file-just-freezes-in-my-vi-vim-what-happened
-  https://unix.stackexchange.com/questions/478532/why-is-vim-frozen 
-  https://unix.stackexchange.com/questions/72086/ctrl-s-hang-terminal-emulator | ... Dříve existovaly klávesnice s klávesou scroll lock C-saC-qbyly staré časy "scroll lock toggle". Tuto funkci můžete zakázat přidánímstty ixanyastty ixoff -ixondo vašeho ~/.bashrc [... a restartování terminálu]
Zakažte Ctrl+q s userChrome.js ve Firefox Quantum
Toho lze dosáhnout bez externí aplikace malým kouskem javascriptu ve vašem profilu Firefoxu.
Nezbytným předpokladem je aktivace souboru userChrome.js (viz níže nebo jej získáte z původního úložiště GitHub)
 Po zkopírování adresáře chrome a jeho obsahu do svého uživatelského profilu vytvořte soubor <profile-dir>/chrome/disable_ctrl_q.uc.js s následujícím obsahem:
var kqa = document.getElementById('key_quitApplication');
if (kqa) kqa.remove();
Nakonec restartujte Firefox a ctrl+q již nezpůsobí ukončení aplikace.
Povolení souboru userChrome.js ve Firefoxu Quantum
 Pro úplnost níže uvádíme úplný obsah upravených souborů chrome. Chcete-li povolit javascript userChrome, vytvořte tyto dva soubory v chrome adresář ve vašem profilu Firefoxu. 
- Zadejte about:supportv adresním řádku.
- V části Základy aplikací> Adresář profilu klikněte na Otevřít adresář otevřete adresář vašeho profilu Firefoxu.
- V adresáři profilu vytvořte nový adresář s názvem chrome
- V rámci chromeadresář, vytvořte nové souboryuserChrome.cssauserChrome.xmls obsahem uvedeným níže.
- Restartujte Firefox (pravděpodobně budete také chtít vytvořit soubor .uc.js výše, pokud pomocí těchto kroků deaktivujete ctrl+q)
userChrome.css
/* Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
*/
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
toolbarbutton#alltabs-button {
    -moz-binding: url("userChrome.xml#js");
}
userChrome.xml
<?xml version="1.0"?>
<!-- Copyright (c) 2017 Haggai Nuchi
Available for use under the MIT License:
https://opensource.org/licenses/MIT
 -->
<bindings id="generalBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   xmlns:xbl="http://www.mozilla.org/xbl">
  <binding id="js" extends="chrome://global/content/bindings/toolbarbutton.xml#menu">
    <implementation>
        <constructor><![CDATA[
            function makeRelativePathURI(name) {
              let absolutePath = Components.stack.filename;
              return absolutePath.substring(0, absolutePath.lastIndexOf("/") + 1) + name;
            }
            // The following code executes in the browser context,
            // i.e. chrome://browser/content/browser.xul
            Services.scriptloader.loadSubScript(makeRelativePathURI("userChrome.js"), window);
        ]]></constructor>
    </implementation>
  </binding>
</bindings>