如何在Linux上的Firefox中禁用Ctrl + Q快捷方式


56

从Firefox 57开始,无法在Linux上通过插件禁用Ctrl+ Q快捷方式(请参见此bug)。我发现的所有解决方法都是基于将全局Ctrl+ Q快捷方式设置为从Firefox“窃取”它。但这将在每个应用程序中禁用此快捷方式,我只想在Firefox中禁用此快捷方式,而不会影响任何其他应用程序。

有没有一种方法只能为一个应用程序禁用或捕获快捷方式?我在Unity上使用Ubuntu。


有趣的问题,但是答案可能取决于用例。意外按键?信息亭模式?
l0b0

4
@ l0b0意外按键。这是普通PC,没什么花哨的。
rob006

在这种情况下,您还有更多详细信息吗?我只是在检查是否可以通过某种方式将系统设置为“做什么”,例如在退出时保存标签,以避免我怀疑这将是一件容易的事情。
l0b0

6
@ l0b0我想防止由于意外按键而关闭浏览器。关闭浏览器后有太多变化(关闭会话,终止连接),我宁愿阻止关闭浏览器而不是修复其影响。
rob006

Answers:


46

about:config设置首选项中。

Firefox> = 65

browser.sessionstore.warnOnQuit true
browser.warnOnQuit true

在此处输入图片说明

资源

较旧的Firefox

browser.showQuitWarning true
browser.warnOnQuit true

经过所有版本的测试,我在64位Linux(以及Win10上的60esr通道)上遇到了61.0.2-64.0.2。 屏幕截图


2
有什么建设性的反馈意见吗?
CrazyPyro

4
现在,从FF 63.0.3(64位Ubuntu)开始,ctrl-Q再次为我立即退出,尽管这两个选项均已启用。他们对这个简单的(错误)功能造成的混乱真是令人惊讶。嗯,也许它将在v64中再次正常工作……
Pont

3
browser.showQuitWarning在Linux 上看不到ff Quantum 64.0 64bit。browser.warnOnQuit已启用但什么都不做?
bool3max

4
在Manjaro Linux的Firefox 66.0.5中,这不适用于我。browser.tabs.warnOnClose;true现在将不得不处理。相关:bugzilla.mozilla.org/show_bug.cgi?
id=502908#c73

2
选择的答案不再解决问题。
Paul

15

tl / dr:为Ctrl-Q分配全局快捷方式

在Firefox Quantum中,用于通过意外的Ctrl-Q按键警告Firefox关闭的about:config设置不再起作用。

解决方法:在Arch Linux上 XFCE桌面环境(其他Linux发行版和/或桌面可能允许类似的方法):

  • 晶须菜单>>所有设置>>键盘>>应用程序快捷方式>>添加

  • 添加一个新的“应用程序” null;分配给Ctrl-Q按键

    • 更新(@justderb的评论):“如果您不希望弹出错误窗口,那么使用'true'而不是'null'会很好。”

Firefox-“禁用” Ctrl-Q

调用:在这里,我按下Ctrl-Q了Firefox Quantum v。60.0.1(64位)。而不是退出Firefox,我得到了这个弹出窗口,

Firefox-Ctrl-Q“禁用”

警告:当然,这会全局影响所有Ctrl-Q按键。但是,根据我自己的喜好,通过消除这些偶然的Firefox Ctrl-Q关闭来弥补缺点(在此之后,我必须重新登录网站:GitHub; reddit; ...)。

更新资料

@crazypyro的答案也对我有用(在x86_64 Linux上为FF Quantum 63.0),如果您尝试退出Firefox,则会弹出警告。应该将其视为特定的答案,而我的解决方案将是更一般的解决方法。

about:config(以下两项均设置为true):

  • browser.showQuitWarning
  • browser.warnOnQuit

7
如果您不希望弹出错误窗口,则使用true代替代替null会很好。
justderb

@justderb:太好了!:-D
Victoria Stuart,

1
对我来说,在archlinux / kde 5plasma中,如果不先选择一个应用程序就无法做全局快捷方式-不能为true | null,但是由于您的建议,我能够重新映射它来切换麦克风-在工作计算机上,这对我来说毫无意义不管怎样,谢谢!
JTC

sxhkd中的CTRL + q映射也会劫持该快捷方式,从而阻止Firefox退出。
西蒙·塞德格伦·马尔姆奎斯特

工程在薄荷19
保罗

7

在Firefox Quantum中使用userChrome.js禁用Ctrl + q

无需外部应用程序,即可通过Firefox个人资料中的一小段JavaScript来完成此操作。

作为前提条件,您必须启用userChrome.js(请参见下文,或从原始GitHub存储库中获取)

将chrome目录及其内容复制到您的用户个人资料后,创建一个<profile-dir>/chrome/disable_ctrl_q.uc.js包含以下内容的文件:

var kqa = document.getElementById('key_quitApplication');
if (kqa) kqa.remove();

最后,重新启动Firefox,然后ctrl + q将不再导致应用程序退出。


在Firefox Quantum中启用userChrome.js

为了完整起见,以下是修改后的chrome文件的全部内容。要启用userChrome javascript,请chrome在Firefox配置文件的目录内创建这两个文件。

  1. 输入about:support在地址栏中。
  2. 在“ 应用程序基础”>“配置文件目录”下,单击“ 打开目录”按钮以打开Firefox配置文件目录。
  3. 在配置文件目录中,新建一个名为 chrome
  4. chrome目录中,创建新文件,userChrome.cssuserChrome.xml包含以下内容。
  5. 重新启动Firefox(如果您按照以下步骤禁用ctrl + q,则可能还希望在上面创建.uc.js文件)

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>

1
这在Firefox 62中不起作用
Grief 18'Aug

1
它可以与最新的稳定器Firefox 61一起使用。希望62在退出测试版之前已修复。
thinkmassive

我现在使用来自CrazyPyro superuser.com/a/1352295/308508
thinkmassive

在69.0.2(非beta版)中不起作用。另外,document.getElementById('key_quitApplication')返回null。此元素的名称是否已更改?
tsbertalan

6

丑陋但简单有效的解决方法始终是打开具有活动onbeforeunload处理程序的页面,即会触发“此页面正在要求您确认要离开-输入的数据可能不会保存。” 对话框,当您尝试将其关闭时。

这样,如果您不小心尝试按CTRL + Q,将收到该对话框,然后可以选择“停留在此页面上”以取消退出。

编辑:我为此目的而创建的自定义页面


那里很好的黑客精神!
Daniel Hitzel

谢谢!添加了到我的实现的链接。
Jan Schejbal

谢谢你 对我的作品,所以cheezy我喜欢它(:这是令人震惊的,我认为FF已经搞砸了这个简单的事情。
JWD

4

我可以通过AutoKey获得所需的东西。安装后,我创建了一个空脚本,将Ctrl+ 分配Q为“ Hotkey”和.*Firefox“ Window filter”。

在此处输入图片说明

然后在“自动按键”首选项中,我将其添加到了自动启动和禁用的通知图标中,因此它对我来说是透明的。

在此处输入图片说明

我使用了几个小时,它看起来很有前途-到目前为止,还没有错误的阳性结果或没有错过的收获。现在Ctrl+ Q不适用于Firefox,但例如在PhpStorm中就可以正常工作。


此外,错误1215061还给我们带来了希望,它将来会变得更容易,并且Firefox最终将获得一些不错的键盘快捷键设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.