Как отключить сочетание клавиш Ctrl + Q в Firefox в Linux

57

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

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

rob006
источник
Интересный вопрос, но ответ может зависеть от варианта использования. Случайные нажатия клавиш? Режим киоска?
l0b0
4
@ l0b0 Случайные нажатия клавиш. Это обычный компьютер, ничего особенного.
rob006
В таком случае, у вас есть больше деталей? Я просто проверяю, можно ли каким-то образом настроить систему на «Делай, что хочешь», например сохранить вкладки при выходе, чтобы избежать чего-то, что, как я подозреваю, будет хрупким взломом.
10
6
@ l0b0 Я хочу предотвратить закрытие браузера при случайном нажатии клавиш. Слишком много вещей меняется после закрытия браузера (закрытие сеансов, разрыв соединений), я бы предпочел не закрывать браузер, а исправлять его последствия.
rob006

Ответы:

46

В 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). Скриншот

CrazyPyro
источник
2
Есть конструктивная обратная связь с этим downvote?
CrazyPyro
4
И теперь, начиная с FF 63.0.3 (64-битная Ubuntu), ctrl-Q снова мгновенно завершает работу для меня, несмотря на то, что обе эти опции включены. Удивительно, какой беспорядок они сделали из этой простой (неправильной) функции. Ах, хорошо, может быть, он снова будет работать в v64 ...
Pont
3
Я не вижу browser.showQuitWarningна ff квант 64.0 64bit на Linux. browser.warnOnQuitвключен, но ничего не делает?
bool3max
4
Это не работает для меня в Firefox 66.0.5 в Manjaro Linux. Придется разбираться browser.tabs.warnOnClose;trueсейчас. Связанный: bugzilla.mozilla.org/show_bug.cgi?id=502908#c73
aguadopd
3
Выбранный ответ больше не решает проблему.
Пол
15

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-bit); вместо того, чтобы выйти из 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
Виктория Стюарт
источник
7
Использовать trueвместо nullхорошо, если вы не хотите, чтобы всплыло окно с ошибкой.
justderb
@justderb: хорошо! :-D
Виктория Стюарт
1
для меня в archlinux / kde 5 plasma я не смог бы сделать глобальный ярлык, не выбрав сначала приложение - не может быть правдой | null, но благодаря вашему предложению я смог переназначить его для переключения микрофона - что на рабочем компьютере для меня бессмысленно в любом случае, спасибо!
JTC
Сопоставление CTRL + q в sxhkd также перехватывает ярлык, предотвращая выход Firefox.
Саймон Седергрен Мальмквист
Работает в Монетном дворе 19.
Пол
7

Отключите 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 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>
thinkmassive
источник
1
Это не работает в Firefox 62
Горе
1
Он работает с последней стабильной версией Firefox 61. Надеюсь, что 62 исправлена ​​до выхода из бета-версии.
Thinkmassive
Я сейчас использую решение от CrazyPyro superuser.com/a/1352295/308508
thinkmassive
Не работает в 69.0.2 (не бета). Кроме того, document.getElementById('key_quitApplication')возвращает ноль. Изменилось ли название этого элемента?
Церберталан
6

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

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

Редактировать: Пользовательская страница, которую я сделал только для этой цели

Ян Шейбал
источник
там хороший хакерский дух!
Даниэль Хитцель
Благодарность! Добавил ссылку на мою реализацию.
Ян Шейбал
Спасибо за это. Работает на меня, и мне так нравится, что это очень мило. (Меня поразило, что FF испортил эту простую вещь.
JWD
4

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

введите описание изображения здесь

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

введите описание изображения здесь

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


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

rob006
источник