Title: Маленькая радость для fvwm
Author: Viva Calman
Date: 2016-08-04 18:55:21
Correction code: 165731376928296

Хотя мода на хвастовство линуксовыми десктопами давно прошла, я все же продолжаю время от времени допиливать свой любимый FVWM. Например, недавно сделал себе на рабочей машине двухэтажные десктопы/воркплейсы — разбил каждый виртуальный рабочий стол на две страницы и в итоге заимел в два раза больше рабочего пространства. Было удобно, стало еще удобнее — теперь можно окна раскидывать по страницам и почти не париться их перекрытием (чем дальше, тем больше мне нравится, когда все окна на виду, тайлинг — форева). Но всю малину портила одна мелочь -  фокус ввода был един для всего десктопа, но не для каждой его страницы

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

Так и получилось, решение нашлось быстро и оказалось довольно простым:

# Remember focused window in current page
DestroyFunc SavePageFocus
AddToFunc SavePageFocus
+ I All (CurrentPage) State $[FocusPage] False
+ I Current State $[FocusPage] True
# Restore previous focused window in current page
DestroyFunc RestorePageFocus
AddToFunc RestorePageFocus
+ I Current (CurrentPage) Break 1
+ I Next (CurrentPage, State $[FocusPage]) Focus
+ I None (CurrentPage, Focused) Prev (CurrentPage) Focus

*FvwmEvent: Cmd
*FvwmEvent: new_page RestorePageFocus
*FvwmEvent: new_desk RestorePageFocus
*FvwmEvent: focus_change SavePageFocus

И в функцию StartFunction добавилась строчка загрузки модуля:

+ I Module FvwmEvent

Теперь фокус запоминается при клике на окно и неудобства исчезли.

Метки:
^HOME