Показаны сообщения с ярлыком icewm. Показать все сообщения
Показаны сообщения с ярлыком icewm. Показать все сообщения

20140718

xlock, mplayer и dpms

уж несколько лет наблюдаю одну маленькую проблему:
если запущен mplayer на воспроизведение видео (даже когда стоит на паузе), то не удаётся заблокировать экран.

так как всякими гномями-кадэями я не пользуюсь, а в качестве wm-а у меня стоит скромно-спартанский icewm, то приходится для блокировки экрана использовать программу xlock из пакета xlockmore (в icewm нет собственного встроенного блокировщика).

а пакет этот уж много лет отсутствует в репозиториях и все на него забили.
вот даже баг-репорт есть ровнёхонько про мою проблему: https://bugs.debian.org/156769

и самое противное — если вдруг попытаешься заблокировать экран при включённом mplayer-е, то, даже после закрытия его окна, заблокировать экран уже не получается пока x-сервер не перезапустишь.

за годы я уже привык «контролировать ситуацию», и, если хочу заблокировать экран, вспоминаю, не оставил ли случайно запущенный mplayer (благо, я видео смотрю очень редко).

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

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

помогло вдумчивое медитирование над выводом xlock:

X Error of failed request: BadMatch (invalid parameter attributes)
 Major opcode of failed request: 131 (DPMS)
 Minor opcode of failed request: 6 (DPMSForceLevel)
 Serial number of failed request: 443
 Current serial number in output stream: 446


dpms. не тут ли собака порылась?

запрос «xlock dpms»  дал нужное! команда
$ xset q
без mplayer-а в «рабочем состоянии» показывает, что dpms включен.
а при запущенном mplayer-е (с видеороликом) — показывает, что выключен.

сразу нашлась и конфигурационная опция у mplayer-а:
-nostop-xscreensaver

или в конфигурационном файле ~/.mplayer/config:
stop-xscreensaver=no


ну а если всё-таки хочется, чтобы при запуске mplayer-а dpms всё-таки отключался (и экран, соответственно, не гас после dmps-интервала), то вместо этой опции можно восстанавливать dpms, если вдруг опять собъётся:
$ xset +dpms


вот такие пироги.
и чего я столько лет мучался?

20110402

yeeloong touchpad enable/disable

fn+f6 включает/отключает touchpad.
удобно, но программы, находящиеся в фокусе во время нажатия этой комбинации, как-то неадекватно реагируют.
посмотрел xev-ом. точно. генерируются события
ctrl+6 — при включении
ctrl+shift+6 (оно же ctrl+^) — при отключении.
надо их как-то нейтрализовать.
о выборе wm для yeeloong-а, естественно, вопрос не стоял: конечно icewm.
вот icewm и будет заниматься нейтрализацией.
в файл ~/.icewm/keys добавил пару строк:
key "Ctrl+6" /bin/echo -n
key "Ctrl+Shift+6" /bin/echo -n
и теперь генерируемые при нажатии fn+f6 события не вынуждают программы
«вздрагивать» в попытке расшифровать, что же я им пытаюсь сказать.
если у вас ctrl+[shift+]6 для чего-нибудь используется, придумывайте
обходной путь сами.