28

Начиная с Firefox 57, нет способа отключить сочетание клавиш Ctrl+Q с помощью плагина в Linux (см. Эту ошибку). Все обходные пути, которые я нашел, основаны на установке глобального сочетания клавиш Ctrl+Q для "кражи" его из Firefox. Но это отключит этот ярлык в каждом приложении, и я хочу отключить этот ярлык только в Firefox, не затрагивая любое другое приложение.

Есть ли способ отключить или перехватить ярлык только для одного приложения? Я использую Ubuntu с Unity.

5 ответов5

12

В about:config установите настройки.

Firefox> = 65

browser.sessionstore.warnOnQuit true
browser.warnOnQuit true

Источник

Старый Firefox

browser.showQuitWarning true
browser.warnOnQuit true

Протестировано во всех версиях, с которыми я столкнулся на 61.0.2-64.0.2 на 64-битной Linux (и 60esr-канале на Win10). Скриншот

11

tl/dr: назначить глобальный ярлык для Ctrl-Q

В Firefox Quantum настройки about:config , которые использовались для предупреждения о замыканиях Firefox при случайном нажатии клавиши Ctrl-Q, больше не работают.

Обходной путь: на Arch Linux | Среда рабочего стола XFCE (другие дистрибутивы и / или рабочие столы Linux могут использовать аналогичный подход):

  • Меню Whiskers >> Все настройки >> Клавиатура >> Сочетания клавиш приложения >> Добавить

  • Добавить новое "приложение", 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 также работает для меня (FF Quantum 63.0 на x86_64 Linux), который выдает всплывающее предупреждение, если вы пытаетесь выйти из Firefox. Это, вероятно, следует рассматривать как конкретный ответ, с моим решением в качестве более общего обходного пути.

about:config (для обоих следующих значений установлено значение true):

  • browser.showQuitWarning
  • browser.warnOnQuit
2

Я смог получить то, что мне нужно с AutoKey. После установки я создал пустой скрипт с назначенными Ctrl+Q как "Горячая клавиша" и .*Firefox как "оконный фильтр".

Затем в настройках AutoKey я добавил его в автозапуск и отключил значок уведомления, чтобы он стал прозрачным для меня.

Я использовал это в течение нескольких часов, и это выглядит многообещающим - никаких ложных срабатываний или пропущенных уловов до сих пор. Прямо сейчас Ctrl+Q не работает для Firefox, но он прекрасно работает в PhpStorm, например.


Кроме того, ошибка 1215061 дает некоторую надежду, что это будет легче в будущем, и Firefox наконец-то получит несколько приличных настроек сочетаний клавиш.

2

Некрасивый, но простой и эффективный обходной путь - это всегда держать открытую страницу с активным обработчиком onbeforeunload , то есть вызовет «Эта страница просит вас подтвердить, что вы хотите выйти - введенные вами данные могут не сохраниться». диалоговое окно, когда вы пытаетесь закрыть его.

Таким образом, если вы случайно попытаетесь нажать CTRL+Q, вы получите это диалоговое окно и можете выбрать "остаться на этой странице", чтобы отменить выход.

2

Отключите Ctrl+q с userChrome.js в Firefox Quantum

Это может быть достигнуто без внешнего приложения с помощью небольшого количества JavaScript в вашем профиле Firefox.

В качестве предварительного условия необходимо включить 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 больше не приведет к закрытию приложения.


Включение userChrome.js в Firefox Quantum

Для полноты ниже приведено полное содержание измененных файлов Chrome. Чтобы включить javascript userChrome, создайте эти два файла в каталоге chrome в вашем профиле Firefox.

  1. Введите about:support в адресной строке.
  2. В разделе « Основные сведения о приложении»> «Каталог профилей» нажмите кнопку « Открыть каталог» , чтобы открыть каталог профилей Firefox.
  3. В каталоге профиля создайте новый каталог с именем chrome
  4. В каталоге chrome создайте новые файлы userChrome.css и userChrome.xml содержимое которых указано ниже.
  5. Перезапустите Firefox (вы, вероятно, также захотите создать файл .uc.js выше, если вы выполняете эти шаги, чтобы отключить 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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .