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

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

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

有没有办法禁用或仅捕获一个应用程序的快捷方式?我正在使用带有 Unity 的 Ubuntu。

答案1

about:config设置偏好设置中。

Firefox >= 87

browser.quitShortcut.disabled true

(此设置将在重新启动浏览器后生效。)

https://bugzilla.mozilla.org/show_bug.cgi?id=52821

Firefox >= 65

browser.sessionstore.warnOnQuit true
browser.warnOnQuit true

在此处输入图片描述

来源

旧版 Firefox

browser.showQuitWarning true
browser.warnOnQuit true

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

答案2

tl/dr:为 Ctrl-Q 分配一个全局快捷键

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

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

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

  • 添加新的“应用程序”,null并将其分配给Ctrl-Q按键

    • 更新(@justderb 的评论):“如果您不想弹出错误窗口,最好使用‘true’而不是‘null’。”

Firefox——‘禁用’ Ctrl-Q

调用:在这里,我按下了Ctrl-QFirefox Quantum v. 60.0.1 (64 位);我没有退出 Firefox,而是弹出了这个窗口,

Firefox——Ctrl-Q‘已禁用’

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

更新 1

@crazypyro 的答案也适用于我(x86_64 Linux 上的 FF Quantum 63.0),如果您尝试退出 Firefox,则会弹出警告。这可能应该被视为具体答案,而我的解决方案则是更通用的解决方法。

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

  • browser.showQuitWarning
  • browser.warnOnQuit

更新 2[2020-03-01]

在 Vim 中,我遇到了一些令人沮丧的问题,比如终端“冻结”,我失去了对键盘的控制。Vim(需要我杀死/重新启动 Vim)。

经过一番调查,发现问题是软件流控制(XON/XOFF 流控制)。Ctrl-s冻结终端直到Ctrl-q按下——根据我上面提出的解决方案,它被全局重新映射到“虚拟应用程序” true

解决此问题的方法是添加以下行

# enable Ctrl-s and Ctrl-q:
stty -ixon

靠近你的 顶部~/.bashrc,然后打开一个新终端并启动 Vim。

相关链接/讨论:

答案3

在 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 文件)

用户Chrome.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");
}

用户Chrome.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>

答案4

我能够得到我需要的东西自动键。安装后,我创建了空脚本,并将Ctrl+指定Q为“热键”和.*Firefox“窗口过滤器”。

在此处输入图片描述

然后在 AutoKey 首选项中我将其添加到自动启动并禁用通知图标,因此它对我来说变得透明。

在此处输入图片描述

我使用了几个小时,效果不错 - 到目前为止没有误报或漏检。目前Ctrl+Q无法在 Firefox 上使用,但在 PhpStorm 等平台上运行良好。


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

相关内容