Focus-follow-mouse (плюс авто-рейз) на Mac OS X

(Я не хочу слышать о том, как я безумно хочу этого!:)

Focus-follow-mouse также известна как фокус с точки зрения фокусировки, фокус указателя и (в некоторых реализациях) неаккуратный фокус. [Добавить другие термины, которые сделают это более доступным для поиска!] X-mouse

Ответ 1

Вы можете сделать это для Terminal.app, выпустив в командной строке следующую команду:

defaults write com.apple.Terminal FocusFollowsMouse -bool true

Для приложений X11 вы можете сделать это:

defaults write com.apple.x11 wm_ffm -bool true

В Snow Leopard используйте вместо этого:

defaults write org.x.X11 wm_ffm -bool true

Очевидно, есть программа под названием CodeTek Virtual Desktop, которая будет эмулировать ее по всей стране, но она стоит $$ (и у них никогда не было версии для OSX Leopard).

Ответ 2

Стив Игге написал эссе об этом некоторое время назад, где он попытался и не смог написать подходящее расширение. С тех пор я попытался найти приложения для фокуса-мышкой для OS X и не смог.

Ответ 3

Focus-follow-mouse не является особенно подходящим способом ввода для OS X, потому что его панель меню была сконструирована так, чтобы быть в верхней части экрана. Когда вы перемещаете мышь из окна вашего приложения, чтобы перейти к меню, если оно пересекает любые другие окна приложения на пути, меню изменяется.

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

Конечно, вы можете обойти проблему изменения меню, введя искусственную задержку перед изменением фокуса и/или переключателями меню, но он никогда не будет работать так же хорошо, как на других рабочих столах.

Ответ 4

Хотя это далеко не полное решение, два удобных действия, встроенные в OSX (10.11):

^ ^ щелчок (элемент управления-щелчок) - переключает фокус без увеличения окна

⌘-click (щелчок по команде) - клики в окне без переключения фокуса

Не уверен, когда эти ярлыки были введены, так как я не смог найти их где-нибудь в письменной форме.

Ответ 5

Amethyst поддерживает эту функцию. Его можно легко установить с помощью brew cask install amethyst.

Вот конфигурационный файл, который я использую. Он отключает все функции, кроме кнопки focus-follow-mouse. Сохраните его до ~/.amethyst.

{
    "LAYOUTS": "----------------------",
    "layouts": [
    ],

    "MODIFIERS": "----------------------",
    "Valid modifiers are": [
        "option",
        "shift",
        "control",
        "command"
    ],

    "mod1": [
    ],
    "mod2": [
    ],

    "COMMANDS": "----------------------",
    "Commands are": {
        "cycle-layout": "Cycle layout to the next layout",
        "cycle-layout-backward": "Cycle layout to the previous layout",
        "focus-screen-1": "Focus the main window on the first screen",
        "focus-screen-2": "Focus the main window on the second screen",
        "focus-screen-3": "Focus the main window on the third screen",
        "focus-screen-2": "Focus the main window on the second screen",
        "focus-screen-3": "Focus the main window on the third screen",
        "focus-screen-4": "Focus the main window on the fourth screen",
        "throw-screen-1": "Throw the focused window to the first screen",
        "throw-screen-2": "Throw the focused window to the second screen",
        "throw-screen-3": "Throw the focused window to the third screen",
        "throw-screen-4": "Throw the focused window to the fourth screen",
        "shrink-main": "Shrink the main pane of the current layout",
        "expand-main": "Expand the main pane of the current layout",
        "increase-main": "Increase the number of windows in the main pane",
        "decrease-main": "Decrease the number of windows in the main pane",
        "focus-ccw": "Move window focus counter-clockwise on the current screen",
        "focus-cw": "Move window focus clockwise on the current screen",
        "swap-ccw": "Swap focused window with the next window going counter-clockwi$
        "swap-cw": "Swap focused window with the next window going clockwise",
        "swap-main": "Swap focused window with the main window of its screen",
        "throw-space-1": "Throw the focused window to the first space",
        "throw-space-2": "Throw the focused window to the second space",
        "throw-space-3": "Throw the focused window to the third space",
        "throw-space-4": "Throw the focused window to the fourth space",
        "throw-space-5": "Throw the focused window to the fifth space",
        "throw-space-6": "Throw the focused window to the sixth space",
        "throw-space-7": "Throw the focused window to the seventh space",
        "throw-space-8": "Throw the focused window to the eighth space",
        "throw-space-9": "Throw the focused window to the ninth space",
        "throw-space-8": "Throw the focused window to the eighth space",
        "throw-space-9": "Throw the focused window to the ninth space",
        "toggle-float": "Toggle the focused window between being floating and tiled"
    },

    "screens": "3",

    "cycle-layout": {
        "mod": "mod1",
    },
    "cycle-layout-backward": {
        "mod": "mod2",
    },
    "select-tall-layout": {
        "mod": "mod1"
    },
    "select-wide-layout": {
        "mod": "mod1"
    },
    "select-fullscreen-layout": {
        "mod": "mod1"
    },
    "select-column-layout": {
        "mod": "mod1"
    },
        "mod": "mod1"
    },
    "focus-screen-1": {
        "mod": "mod1"
    },
    "focus-screen-2": {
        "mod": "mod1"
    },
    "focus-screen-3": {
        "mod": "mod1"
    },
    "focus-screen-4": {
        "mod": "mod1"
    },
    "throw-screen-1": {
        "mod": "mod2"
    },
    "throw-screen-2": {
        "mod": "mod2"
    },
    "throw-screen-3": {
        "mod": "mod2"
    },
    "throw-screen-4": {
        "mod": "mod2"
    "throw-screen-4": {
        "mod": "mod2"
    },
    "shrink-main": {
        "mod": "mod1"
    },
    "expand-main": {
        "mod": "mod1"
    },
    "increase-main": {
        "mod": "mod1"
    },
    "decrease-main": {
        "mod": "mod1"
    },
    "focus-ccw": {
        "mod": "mod1"
    },
    "focus-cw": {
        "mod": "mod1"
    },
    "swap-screen-ccw": {
        "mod": "mod2"
    },
    "swap-screen-cw": {
    },
    "swap-screen-cw": {
        "mod": "mod2"
    },
    "swap-ccw": {
        "mod": "mod2"
    },
    "swap-cw": {
        "mod": "mod2"
    },
    "swap-main": {
        "mod": "mod1"
    },
    "throw-space-1": {
        "mod": "mod2"
    },
    "throw-space-2": {
        "mod": "mod2"
    },
    "throw-space-3": {
        "mod": "mod2"
    },
    "throw-space-4": {
        "mod": "mod2"
    },

        "mod": "mod2"
    },
    "throw-space-5": {
        "mod": "mod2"
    },
    "throw-space-6": {
        "mod": "mod2"
    },
    "throw-space-7": {
        "mod": "mod2"
    },
    "throw-space-8": {
        "mod": "mod2"
    },
    "throw-space-9": {
        "mod": "mod2"
    },
    "toggle-float": {
        "mod": "mod1"
    },
    "toggle-tiling": {
        "mod": "mod2"
    },
    "display-current-layout": {
        "mod": "mod1"
    "display-current-layout": {
        "mod": "mod1"
    },

    "MISC": "----------------------",
    "floating": [],
    "float-small-windows": false,
    "mouse-follows-focus": false,
    "focus-follows-mouse": true,
    "enables-layout-hud": false,
    "enables-layout-hud-on-space-change": false
}

Ответ 6

Проблема с меню - единственная причина, по которой традиционная фокус-мышца не работает.

Здесь альтернатива: не меняйте фокус до тех пор, пока на клавиатуре не будет нажата клавиша. Это будет охватывать 95% случаев использования focus-follow-mouse и сделает этот старомодный пользователь X очень счастливым. Я не знаю, сколько раз я буду прокручивать веб-страницу в Chrome, и нажмите Command-T, чтобы открыть новую вкладку, и найдите вкладку, открывающуюся в терминале. Если мой мозг не взял на это за 8 месяцев использования Mac, он никогда не будет.

Ответ 7

Поэтому я решил снова улучшить работу над MouseFocus.app, в которой все еще есть некоторые недостатки. Те исправлены сейчас. Я переименовал все это в "AutoRaise", чтобы лучше отразить, что делает этот инструмент: когда вы наводите окно, оно поднимается вперед (с задержкой по вашему выбору) и получает фокус. Инструмент можно скачать здесь. Чтобы использовать его, скопируйте его в папку/Applications/и убедитесь, что он исполняемый (chmod 700 AutoRaise). Затем дважды щелкните по нему из Finder. Чтобы быстро включить/выключить его, вы можете использовать нижеследующий текст и вставить его в рабочий процесс службы автоматизации. Затем привяжите созданный сервис к сочетанию клавиш через Системные настройки | Клавиатура | Сочетания клавиш.

Обновление (29-03-2017): бинарный файл AutoRaise обновлен. Если в командной строке не было указано никакой задержки, теперь он также будет искать файл AutoRaise.delay в той же папке. Это особенно полезно при использовании нижеследующего сценария яблока, потому что "запуск приложения" не поддерживает аргументы командной строки. Задержка должна быть указана в единицах 50 мс. Например, чтобы указать задержку 150 мс, запустите эту команду один раз в терминале: 'echo 3> AutoRaise.delay'

on run {input, parameters}
    tell application "Finder"
        if exists of application process "AutoRaise" then
            quit application "/Applications/AutoRaise"
            display notification "AutoRaise Stopped"
        else
            launch application "/Applications/AutoRaise"
            display notification "AutoRaise Started"
        end if
    end tell
    return input
end run

Обновление (18-04-2019): источник https://github.com/sbmpost/AutoRaise

Ответ 8

В настоящее время я использую MondoMouse и даже с его причудами, я не мог использовать свой mac без него. У них есть бесплатная пробная версия, и я рекомендую ее всем.

MondoMouse

Ответ 9

У Codetek был продукт, который сделал это, но они никогда не выпускали версию для Leopard или позже.

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

Вы можете включить focus-follow-mouse (без autoraise) только для окон терминала (просто выполните следующее в терминале):

defaults write com.apple.Terminal FocusFollowsMouse -string YES

И аналогично для окон X11:

defaults write org.x.X11 wm_ffm -bool true 

(Для версий mac, предшествующих 10.5.5, это было:

defaults write com.apple.x11 wm_ffm true

)

Я не знаю других приложений, которые его поддерживают.

Ответ 10

chunkwm тоже поддерживает это (по умолчанию я полагаю): chunkwm

Ответ 11

Интересно, что у Leopard есть один аромат focus-follow-mouse (без autoraise), который включен по умолчанию. Колесо прокрутки работает в не сфокусированных окнах.

Ответ 12

К сожалению, CodeTek Virtual Desktop Pro больше не разрабатывается, и компания, похоже, несколько лет назад вышла из бизнеса.

Историческая справка: http://www.codetek.com/ctvd/ (не работает в новых версиях OS X!)

Исторический обзор: http://www.osnews.com/story/6144

Используя CodeTek Virtual Desktop Pro, вы смогли получить Focus-Follow-Mouse и отключить Auto-Raise, а также иметь пейджер для виртуальных рабочих столов - подобно тому, как Fvwm работает в Linux. Это действительно сработало отлично - лучшее программное обеспечение, которое я когда-либо покупал. Он работал последовательно со всеми приложениями, переключая приложения, перемещая окна на разные рабочие области и работая над рабочими пространствами намного проще, чем то, как он реализован в последних версиях OS X [10.6, 10.7, 10.8]

К сожалению, Mac OS X 10.5 VirtualDesktop Pro перестала работать, и похоже, что Apple активно следила за тем, чтобы CodeTek не продолжал работать над ней.

Печально, что Apple сокрушила CodeTek и продукт - Virtual Desktop Pro действительно превосходил как рабочие области OS X в настоящее время. Он работал в основном как Fvwm на LINUX - сверхбыстрая навигация - без лишних кликов или жестов мыши...

Мне грустно видеть, что Apple диктует поведение диспетчера окон (Finder) и, похоже, больше не разрешает сторонние замены для Finder.

Ответ 13

Существует также связанная с этим проблема повышения по клику. Под OSX каждый раз, когда нажимается окно, оно также поднимается, что потенциально скрывает другие окна. Это проблематично при работе с копией/вставкой из двух окон, где один из них охватывает большую часть экрана. Мне нравится хранить глобальный (активный во всех рабочих пространствах) блокнот, из которого я копирую/вставляю материал (может быть что угодно: от команд, текста, предметов todo и т.д.). Это сложнее в OSX. Было бы неплохо иметь возможность отключить повышение по клику.

Ответ 14

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

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

Это также немного разочаровывает при просмотре веб-страниц, поскольку вы либо хотите отключить приложение, либо лучше осознавать, где находится курсор (например, не на каких-либо ссылках или кнопках, которые вы не собираетесь активировать).

Ответ 15

Экспериментируя с этими параметрами, моя Command-Tab начала вести себя странно. Вот решение о том, как он снова фокусируется на приложениях:

Похоже, что предыдущая функция, а именно возможность изменения фокуса окна терминала с движением мыши, нарушена в 10.6 и заставляет Command-Tab не правильно переключать фокус окна. Чтобы устранить проблему, просто вставьте следующую команду в терминал:

defaults write com.apple.Terminal FocusFollowsMouse -string NO

Затем перезапустите терминал.

Ответ 16

Решение. Поскольку я так привык к автоопределению в Windows, я плохо пропустил его на Mac. Решение, которое я нашел для Mac, - это Zooom (да, три о). Он имеет функцию автоопределения. Вы даже можете установить миллисекунды, чтобы подождать до автореализации. Не могу жить без него. Autoraise - это опция в префиксах, как вы можете видеть на скриншоте https://www.macupdate.com/app/mac/23203/zooom http://coderage-software.com/zooom/index.html

Ответ 17

Протестировано MondoMouse (https://www.atomicbird.com/about/mac-apps) на MacOS Mojave. Кажется, все в порядке!

Чтобы установить префикс, появится уведомление "Разрешить доступ для вспомогательных устройств", которое больше не находится в Системных настройках> Доступность. Вы должны установить его в разделе "Безопасность и конфиденциальность"> "Доступность"> "Конфиденциальность"

Будет несколько предупреждений о том, как разрешить MondoMouse в каждом приложении, которое вы открыли, но после его установки он работает нормально! Какое облегчение :)

Ответ 18

Фокус следует за мышью, теперь это возможно в macOS, в моем случае Mojave, используя chunkwm. См. Этот ответ для решения "без автоповышения". Автоподъем активируется при выходе

chunkc set ffm_disable_autoraise         0

в ~/.chunkwmrc.

Ответ 19

Вы не можете сделать это хорошо, потому что интерфейс Mac просто не разработан с фокусом-мышкой (с или без авто-рейза). Я сомневаюсь, что скоро это изменится, и если это не произойдет, все, кто пытается реализовать focus-follow-mouse, столкнутся с такими же препятствиями и придут к неудовлетворительному результату (тем, кто хочет такое).

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