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

3007
rob006

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

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

20
Интересный вопрос, но ответ может зависеть от варианта использования. Случайные нажатия клавиш? Режим киоска? l0b0 5 лет назад 0
@ l0b0 Случайные нажатия клавиш. Это обычный компьютер, ничего особенного. rob006 5 лет назад 2
В таком случае, у вас есть больше деталей? Я просто проверяю, можно ли каким-то образом настроить систему на «Делай, что хочешь», например, сохранять вкладки при выходе, чтобы избежать чего-то, что, как я подозреваю, будет хрупким взломом. l0b0 5 лет назад 0
@ l0b0 Я хочу предотвратить закрытие браузера при случайном нажатии клавиш. После закрытия браузера меняется слишком много вещей (закрытие сеансов, разрыв соединений), я бы предпочел не закрывать браузер, а исправлять его последствия. rob006 5 лет назад 3
Отключение Ctrl + Q для Firefox в Linux должно быть хрупким взломом, если Mozilla что-то не сделает с этим. dsstorefile1 5 лет назад 1

5 ответов на вопрос

9
Victoria Stuart

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

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

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

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

  • Добавить новое «приложение» null,; назначить его на Ctrl-Qнажатие клавиши

    • Обновление (комментарий @justderb): «Использование« true »вместо« null »- это хорошо, если вы не хотите, чтобы всплыло окно с ошибкой».

Firefox - 'disable' Ctrl-Q

Вызов: здесь я нажал Ctrl-Qв Firefox Quantum v. 60.0.1 (64-bit); вместо того, чтобы выйти из Firefox, я получаю это всплывающее окно,

Firefox - Ctrl-Q 'disabled'

Предостережение: это, конечно, глобально влияет на все нажатия клавиш Ctrl-Q. Однако, по моим собственным предпочтениям, этот недостаток перевешивается из-за аннулирования тех случайных закрытий Firefox Ctrl-Q (после чего я должен повторно войти на веб-сайты: GitHub; reddit; ...).

Использование `true` вместо` null` хорошо, если вы не хотите, чтобы всплыло окно с ошибкой. justderb 5 лет назад 6
@justderb: хорошо! :-D Victoria Stuart 5 лет назад 0
для меня в archlinux / kde 5 plasma я не смог сделать глобальный ярлык, не выбрав сначала приложение - не может быть правдой | null, но благодаря вашему предложению я смог переназначить его для переключения микрофона - что на рабочем компьютере для меня бессмысленно в любом случае, спасибо! JTC 5 лет назад 0
5
CrazyPyro

По крайней мере, для меня в FF 61.0.2 на 64-битной Linux, включение browser.showQuitWarning(в дополнение к browser.warnOnQuit) в about:configрешает всю эту проблему.

(Я пришел на этот вопрос, потому что я был . Имея проблему по умолчанию Но прежде чем пытаться все классные творческие хаков здесь, я думал, что просто дать о: конфиг попробовать первый ...)

Есть конструктивная обратная связь с этим downvote? CrazyPyro 5 лет назад 1
Спасибо, у меня работает хотя бы на FF 62.0.3 (64-Bit Ubuntu). Pont 5 лет назад 1
благодарю вас. Это умное решение, ничего не трогая. luca76 5 лет назад 0
^ Это правильный ответ! Ole Tange 5 лет назад 0
Это не работает вместе с «Восстановить предыдущий сеанс» или «Показать мои окна и вкладки с прошлого раза», что еще хуже. chefarov 5 лет назад 1
@chefarov Вы можете объяснить, что вы имеете в виду? Я не видел проблем с возвратом вкладок после сбоя или перезагрузки. CrazyPyro 5 лет назад 0
И теперь, начиная с FF 63.0.3 (64-битная Ubuntu), ctrl-Q снова мгновенно завершает работу для меня, несмотря на то, что обе эти опции включены. Удивительно, какой беспорядок они сделали из этой простой (неправильной) функции. Ах, ну, может быть, это будет работать снова в v64 ... Pont 5 лет назад 0
2
rob006

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

enter image description here

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

enter image description here

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


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

2
thinkmassive

Отключите 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. Чтобы включить userChrome javascript, создайте эти два файла в 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> 
Это не работает в Firefox 62 Grief 5 лет назад 0
Он работает с последней стабильной версией Firefox 61. Надеюсь, что 62 исправлена ​​до выхода из бета-версии. thinkmassive 5 лет назад 1
0
Jan Schejbal

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

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