Как переместить приложение между мониторами в Hammerspoon? - PullRequest
0 голосов
/ 11 января 2019

На работе у меня настройка 3 монитора. Я хотел бы переместить текущее приложение на второй или третий монитор с привязкой клавиш. Как это сделать?

1 Ответ

0 голосов
/ 21 апреля 2019

Я ответил на это в сообщении Reddit здесь , но в случае, если кто-нибудь сталкивается с этим вопросом, вот ответ:

API Hammerspoon не предоставляет явной функции для этого, поэтому для достижения этой цели необходимо развернуть специальную реализацию:

-- Get the focused window, its window frame dimensions, its screen frame dimensions,
-- and the next screen's frame dimensions.
local focusedWindow = hs.window.focusedWindow()
local focusedScreenFrame = focusedWindow:screen():frame()
local nextScreenFrame = focusedWindow:screen():next():frame()
local windowFrame = focusedWindow:frame()

-- Calculate the coordinates of the window frame in the next screen and retain aspect ratio
windowFrame.x = ((((windowFrame.x - focusedScreenFrame.x) / focusedScreenFrame.w) * nextScreenFrame.w) + nextScreenFrame.x)
windowFrame.y = ((((windowFrame.y - focusedScreenFrame.y) / focusedScreenFrame.h) * nextScreenFrame.h) + nextScreenFrame.y)
windowFrame.h = ((windowFrame.h / focusedScreenFrame.h) * nextScreenFrame.h)
windowFrame.w = ((windowFrame.w / focusedScreenFrame.w) * nextScreenFrame.w)

-- Set the focused window's new frame dimensions
focusedWindow:setFrame(windowFrame)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...