LINUX.ORG.RU
решено ФорумTalks

xmonad + java? takeTopFocus!

 ,


0

1

собсно рецепт:

в самом начале, где толпа импортов, добавить:

import XMonad.Hooks.ICCCMFocus

и дальше, где ставятся хуки:

logHook = takeTopFocus

все, теперь жабьи аппликухи не теряют фокус и курсор.

если же какой-то хук там уже есть и терять его сильно не хочется, а знания хаскеля не хватает, то выглядеть это может так:

logHook = takeTopFocus >> myLogHook

зы. собсно затевалось это дело ради idea и я не придумал куда это, в девелопмент или в генерал... решил уж сюда :)

Не знаю. Но не помогает это. Впрочем, покажи, что за код в модуле XMonad.Hooks.ICCCMFocus ? Кроме идеи ещё на чём-то пробовал?

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

Кроме идеи ещё на чём-то пробовал?

самописная байда jvm + qt, с ней тоже работает.

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

Впрочем, покажи, что за код в модуле XMonad.Hooks.ICCCMFocus

я не понял, у тебя контрибы стоят? рекомпильнул? рестартанул? :)

module XMonad.Hooks.ICCCMFocus
(
  atom_WM_TAKE_FOCUS  
, takeFocusX
, takeTopFocus
) where

import XMonad
import XMonad.Hooks.SetWMName
import qualified XMonad.StackSet as W
import Control.Monad

atom_WM_TAKE_FOCUS ::
  X Atom
atom_WM_TAKE_FOCUS =
  getAtom "WM_TAKE_FOCUS"

takeFocusX ::
  Window
  -> X ()
takeFocusX w =
  withWindowSet . const $ do
    dpy       <- asks display
    wmtakef   <- atom_WM_TAKE_FOCUS
    wmprot    <- atom_WM_PROTOCOLS
    protocols <- io $ getWMProtocols dpy w
    when (wmtakef `elem` protocols) $
      io . allocaXEvent $ \ev -> do
          setEventType ev clientMessage
          setClientMessageEvent ev w wmprot 32 wmtakef currentTime
          sendEvent dpy w False noEventMask ev

-- | The value to add to your log hook configuration.
takeTopFocus ::
  X ()
takeTopFocus =
  (withWindowSet $ maybe (setFocusX =<< asks theRoot) takeFocusX . W.peek) >> setWMName "LG3D"  

как у всех, че.

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

как у всех, че.

Да там несколько вариантов есть. Я чего только не пробовал. Вобщем оно частично проблемы решает, но не все.

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

кто остался?

Ну вот, например, если запустить нетбинс. Раньше курсор терялся и всё — капец. После этого такетопфокуса если переключяешься на другой рабочий стол, курсор пропадает, но можно нажать на меню или боковые панели, потом обратно в код — курсор появляется.
Есть ещё такая вещь geogebra — там например, выбираешь «поворот вокруг точки на угол», выскакивает диалог с полем ввода угла, и хрен чего у меня получается туда ввести. Вот так вот.

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

можно нажать на меню или боковые панели, потом обратно в код — курсор появляется.

так было с идеей до этого хука.

выскакивает диалог с полем ввода угла, и хрен чего у меня получается туда ввести.

и так тоже.

и починилось все. странно...

«wmname LG3D» ты конечно где-то в xinitrc уже сказал, я правильно понимаю? без него у меня идея вообще не рисовалась.

Rastafarra ★★★★
() автор топика

Yed (редактор диаграмм такой), кстати, не всё равно работает с этим хуком.

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

и починилось все. странно...

вот и мне тоже странно. Чудеса какие-то )))

«wmname LG3D» ты конечно где-то в xinitrc уже сказал, я правильно понимаю?

Да, пробовал, счас оно там где-то в конфиге xmonada. Счас попробую опять в xinitrc добавить, вдруг сработает.

Bad_ptr ★★★★★
()

Кстати, почему вдруг именно сейчас появилась данная тема? Вроде ICCCMFocus уже где-то год в contrib.

dmfd
()

есть еще такое:

export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"

кроме нормализации ШГ, придает вид gtk-темы, благодаря чему на некоторых особо упоротых java-гуях редко, но всё же чинит фокус и поля ввода.

на авесоме та же проблема как и в xmonad, кстати стесняюсь спросить, но кроме «wmname LG3D» его еще нужно установить =], что вы наверное сделали, но вдруг..

science ★★☆
()
Ответ на: комментарий от dmfd

Кстати, почему вдруг именно сейчас появилась данная тема? Вроде ICCCMFocus уже где-то год в contrib.

потому что я слоупок, а остальные если и решили проблему, то молчат ;)

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

-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel

это не работает, если в жабской аппликухе, типа идеи, вагон своих виджетов. нет, вид конечно меняется, но ставится похож на жопу.

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