Home
XMonad
xmonad@conference.jabber.ru
Четверг, 12 ноября 2015< ^ >
portnov установил(а) тему: XMonad -- тайловый оконный менеджер написанный на Haskell || последняя версия: 0.11 || Баг #177 пофикшен! || Читшит по клавишам: http://haskell.org/wikiupload/b/b8/Xmbindings.png  || Конфигурация: http://ro-che.info/docs/xmonad/
Конфигурация комнаты
Участники комнаты

GMT+3
[00:35:35] Minoru вышел(а) из комнаты
[05:07:48] L29Ah_ вошёл(а) в комнату
[06:33:33] MaXGGXaM вышел(а) из комнаты
[06:34:04] MaXGGXaM вошёл(а) в комнату
[08:55:42] L29Ah_ вышел(а) из комнаты
[08:56:36] L29Ah_ вошёл(а) в комнату
[09:30:23] L29Ah_ вышел(а) из комнаты
[10:29:08] kurnevsky вошёл(а) в комнату
[11:30:04] MaXGGXaM вышел(а) из комнаты
[11:31:27] MaXGGXaM вошёл(а) в комнату
[13:03:13] L29Ah_ вошёл(а) в комнату
[13:11:31] kurnevsky вышел(а) из комнаты
[13:14:25] L29Ah_ вышел(а) из комнаты
[13:18:34] L29Ah_ вошёл(а) в комнату
[13:19:29] kurnevsky вошёл(а) в комнату
[13:39:06] L29Ah_ вышел(а) из комнаты
[15:15:22] L29Ah_ вошёл(а) в комнату
[15:19:57] асцмтл вошёл(а) в комнату
[15:41:02] L29Ah_ вышел(а) из комнаты
[16:03:58] Minoru вошёл(а) в комнату
[16:41:43] portnov вошёл(а) в комнату
[16:46:22] sold83 вошёл(а) в комнату
[16:49:55] portnov вышел(а) из комнаты
[16:58:40] portnov вошёл(а) в комнату
[17:13:25] L29Ah_ вошёл(а) в комнату
[17:58:01] <kurnevsky> L29Ah_: решил проблему с прыгающим курсором в угол окна, добавив проверку на ширину окна. Там в коде получаются размеры окна, и курсор устанавливается в центр. Почему-то в некоторых случаях там получаются огромные размеры, в несколько миллионов пикселей, и после установки курсора в центр такого окна иксы переклинивает :)
[17:58:15] <kurnevsky> И больше курсор не хочет меняться, пока я его мышкой не сдвину.
[17:58:33] <kurnevsky> Грязный хак, но пока работает..
[17:58:46] <kurnevsky> Из-за чего такие размеры там приходят - хз...
[18:02:02] <kurnevsky> Может, еще связано с двумя мониторами, надо будет на одном опробовать...
[18:14:46] <kurnevsky> А как проверить, что окно не закрыто?
[18:15:10] <kurnevsky> Похоже, что peek возвращает id окна, которое уже закрылось...
[18:15:23] <L29Ah_> проверил ты, и что дальше?
[18:15:35] <kurnevsky> L29Ah_: ничего не делать тогда просто...
[18:15:40] <L29Ah_> а если оно есть?
[18:15:54] <L29Ah_> но ведь оно могло закрыться между проверкой и запросом
[18:16:01] <kurnevsky> L29Ah_: тогда уже курсор в центр отправлять...
[18:16:56] <kurnevsky> L29Ah_: можно проверить после получения его координат :)
[18:17:17] <kurnevsky> L29Ah_: если после получения координат оно закрыто, то ничего не делать.
[18:17:39] <kurnevsky> L29Ah_: если открыто - слать в центр (значит, координаты корректные).
[18:18:02] <kurnevsky> (ну а если закрывается сразу после проверки - не важно, курсор переместится еще раз)
[18:18:23] <kurnevsky> L29Ah_: так как проверить? :)
[18:18:47] <L29Ah_> посмотреть как получаются координаты и понять (:
[18:19:00] <L29Ah_> // не знаю, я этот кусок xmonad не трогал вообще
[18:19:11] <kurnevsky> L29Ah_: получаются они через иксовую функцию getWindowAttributes...
[18:19:35] <L29Ah_> getWindowAttributes не работает на закрытых окнах
[18:19:54] <kurnevsky> L29Ah_: а не может оно работать, но возвращать хрень?
[18:20:32] <kurnevsky> L29Ah_: как минимум getName на таких окнах возвращает пустую строку...
[18:20:37] <L29Ah_> не может
[18:20:39] <L29Ah_> XGetWindowAttributes() can generate BadDrawable and BadWindow errors.
[18:21:06] <L29Ah_> если биндинги писал мудак, то биндинг может не проверить чё он там ошибся
[18:21:09] <kurnevsky> L29Ah_: тогда не ясно, что за окна такие с огроменными координатами...
[18:21:49] <kurnevsky> L29Ah_: да, вполне может быть и так...
[18:23:56] <kurnevsky> L29Ah_: похоже, так и есть.
[18:23:59] <kurnevsky> foreign import ccall unsafe "XlibExtras.h XGetWindowAttributes"
    xGetWindowAttributes :: Display -> Window -> Ptr (WindowAttributes) -> IO Status
getWindowAttributes :: Display -> Window -> IO WindowAttributes
getWindowAttributes d w = alloca $ \p -> do
    xGetWindowAttributes d w p
    peek p
[18:24:59] <kurnevsky> https://hackage.haskell.org/package/X11-1.4.0/docs/src/Graphics-X11-Xlib-Extras.html#getWindowAttributes
[18:25:47] <L29Ah_> ты знаешь что делать
[18:25:55] <kurnevsky> https://hackage.haskell.org/package/X11-1.6.1.2/docs/Graphics-X11-Xlib-Extras.html#v%3AxGetWindowAttributes
[18:26:13] <kurnevsky> L29Ah_: добавить проверку на закрытое окно? :)
[18:26:34] <L29Ah_> перетащить xmonad на xGetWindowAttributes
[18:30:17] <kurnevsky> L29Ah_: ага...
[18:31:32] <kurnevsky> L29Ah_: а каким должен быть type Status = CInt в случае успеха?
[18:31:58] <kurnevsky> L29Ah_: какая-нибудь константа есть, бать может?
[18:33:24] <L29Ah_> неноль
[18:33:48] <kurnevsky> ок, спасибо.
[18:35:46] sold83 вышел(а) из комнаты
[18:42:55] <kurnevsky> L29Ah_: отлично, работает :)
[18:44:13] <kurnevsky> Надо бы посылать им патчи в рассылку, а то в гитхабе игнорят...
[18:45:12] kurnevsky вышел(а) из комнаты
[19:52:13] <kurnevsky> L29Ah_: хм, а ошибка - это только 0?
[19:52:18] <L29Ah_> да
[19:52:30] <L29Ah_> у иксов асинхронные ошибки вообще
[19:52:43] <L29Ah_> но в контексте этого запроса - да, и это всё что тебе нужно знать
[19:52:54] <kurnevsky> L29Ah_:  XGetWindowAttributes() can generate BadDrawable and BadWindow errors. - то есть, это асинхронно, ясно..
[20:16:27] асцмтл вышел(а) из комнаты
[21:56:51] L29Ah_ вышел(а) из комнаты
[22:14:19] portnov вышел(а) из комнаты
[22:27:39] L29Ah_ вошёл(а) в комнату
[22:54:53] L29Ah_ вышел(а) из комнаты
[22:58:27] L29Ah_ вошёл(а) в комнату
[23:03:11] L29Ah_ вышел(а) из комнаты
[23:09:51] L29Ah_ вошёл(а) в комнату
[23:11:13] L29Ah_ вышел(а) из комнаты
[23:17:36] L29Ah_ вошёл(а) в комнату
[23:20:29] L29Ah_ вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!