LINUX.ORG.RU

Как залочить фокус на одном из мониторов (для манипулятора мышь)?

 


1

5

Между мониторами переключаюсь так:

awful.key({modkey,},  "k",  function () awful.screen.focus(1) end),
awful.key({modkey,},  "j",  function () awful.screen.focus(2) end),

Немного напрягает, что курсор манипулятора мышь может туда сюда бегать между мониторами, например в Synergy можно залочить монитор по ScrLk, в осоме это не работает.

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

и вопрос в догонку: при переключении фокуса, оно ставит курсор на панели, это не совсем удобно, т.к. не всяким клиентом при таком поведении можно управлять, как настроить, чтобы при переключении мониторов - курсор попадал в центр экрана или хотя бы на клиент.

VimCasts
() автор топика

Подписался, тоже интересно, особенно если эту фичу можно будет включать-выключать по хоткею.

# cast Worron, liaonau. Не поможете?

NeverLoved ★★★★★
()
Ответ на: комментарий от VimCasts

если бы кто-то что-то запилил, оно было бы или на гитхабе/битведре, или в вики осома, разве не логично?

funeralismatic ★★★
()

По мультимонитору не посоветую, ибо нема, а положением курсора можно рулить с помощью mouse.coords. Простейший вариант будет выглядеть наверно как-то так

awful.key({modkey,},  "k",
    function ()
        awful.screen.focus(1)
        mouse.coords ({x = 960, y = 540})
    end),

Worron ★★★
()
Последнее исправление: Worron (всего исправлений: 1)

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

Попробуй разнести мониторы в xorg.conf(или с помощью xrandr), чтобы они не касались друг друга, т.е не RightOf, LeftOf, а задав координаты:

Section "ServerLayout"
        Identifier     "Layout"
        Screen      0  "Screen0" 0 0
        Screen      1  "Screen1" 2000 0
...

arson ★★★★★
()
Ответ на: комментарий от Worron

mouse.coords

Спасибо, интересный вариант, только при нескольких мониторах нужно учитывать, что он берет координаты не отдельных мониторов, а учитывая общую высоту, например при: 1680x1050 + 1366x768, чтобы переключиться в центр маленького монитора, нужно учитывать 1050 пикселей большего:

awful.key({modkey,},  "k", function () awful.screen.focus(1) mouse.coords ({x = 840, y = 525}) end),
awful.key({modkey,},  "j", function () awful.screen.focus(2) mouse.coords ({x = 680, y = 1434}) end)

-- где:
-- 840x525  это 1680/2 и 1050/2
-- 680x1434 это 1366/2 и 768/2 + 1050

VimCasts
() автор топика
Ответ на: комментарий от VimCasts

Ну я вбросил самый примитивный вариант, чтобы обозначить куда копать. Например, у screen есть такие прекрасные свойства как screen.workarea и screen.geometry. Следующий вариант автоматически рассчитает центр для любого монитора

mouse.coords ({x = screen[mouse.screen].geometry.width/2, y = screen[mouse.screen].geometry.height/2})

В общем, рекомендую читать awesome API, ибо вероятность что тебе сходу прям выдадут на 100% то что нужно, сам понимаешь невелика.

Worron ★★★
()
Ответ на: комментарий от VimCasts

Тогда уже проще:

local center_mouse_on_screen = function(i)
    awful.screen.focus(i)
    mouse.coords ({
        x = screen[i].geometry.width/2,
        y = screen[i].geometry.height/2,
    })
end
…
awful.key({modkey,},  "k", function () center_mouse_on_screen(1) end),

liaonau
()
Ответ на: комментарий от arson

Да, спасибо, хороший вариант (если нет изкоробочного осомского):

xrandr --output HDMI1 --primary --mode "1680x1050" --pos 1366x0
таким образом даже лучше, получается правый «волшебный» угол или как там называется, короче переход на другой монитор строго в верхнем правом углу или по хоткею.

Меня это устраивает, тем более подключение монитора делает скрипт, просто добавил в команду.

VimCasts
() автор топика
Ответ на: комментарий от liaonau

О, вы-то мне и нужны.

Не нашел нигде ваших контактов, а лички тут нет, так что уже хотел создавать топик просто чтобы спросить, но лучше не буду плодить сущности и спрошу здесь:

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

Спасибо!

klazutin
()
Ответ на: комментарий от klazutin

Нет, я просто закоммитил недавно то, что было локально у меня уже больше года. Luakit я уже давно перестал использовать в пользу pentadactyl. Честно говоря, не особо и помню уже что я там пилил. Точно аналог nosquint из firefox. Что-то там с фавиконами, хоткеями в русской раскладке и gtk3. Не уверен насчет того, можно ли пользоваться.

А вообще, да, похоже, что luakit совсем мертвый. В luakit-crowd пара коммитов и те только в lua часть. А у mason-larobina 98 issues. Я недавно думал попилить из интереса, но подумав решил, что все равно останусь на pentadactyl.

liaonau
()
Ответ на: комментарий от VimCasts

Пробовал. Остался на файрфоксе. Пробовал как раз в тот момент когда html5 плеер на youtube сегфолтил любой webkit-gtk браузер. Может быть сейчас уже исправили, но я в pentadactyl всем в общем-то доволен.

liaonau
()
Ответ на: комментарий от liaonau

Понятно, спасибо большое. У меня к dwb почему-то тоже душа не легла. Все-таки lua кажется гораздо проще js.

klazutin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.