Как сделать интервал между окнами в фокусе с помощью xmonad?

Я пытаюсь сделать интервал вокруг окна в фокусе вместо границ. Гораздо легче увидеть, какое окно сфокусировано.

Модуль XMonad.Actions.Spacing не содержит метода для создания интервала на основе идентификатора окна, в котором я мог бы сделать что-то вроде этого:

myHook ConfigureEvent{ev_event_type = focusIn, ev_window = id} = do
 setSpacing id opacity

Есть ли способ сделать то, что мне нужно?


person fdjsafjl483    schedule 04.06.2020    source источник
comment
Привет. Я видел, что вы приняли ответ. Просто как любопытство. Это сработало? Вы изменили много кода?   -  person lsmor    schedule 11.06.2020


Ответы (1)


ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: приведенный ниже код НЕ ПРОВЕРЯЛСЯ И, ВЕРОЯТНО, НЕ СОСТАВЛЯЕТСЯ, и даже если он скомпилируется, возможно, у xmonad или xmonad-contrib есть веские причины не экспортировать эту функциональность. так как это, кажется, нарушает настройку плитки ... Этот ответ не подходит для комментария, но его следует рассматривать как совет, а не как решение.

Вы можете скопировать код действия и изменить его по своему усмотрению. Например, имитируя toggleBorder из XMonad.Actions.NoBorders, вы можете получить атрибуты ширины и высоты и установить их на 95% от оригинала.

-- Maybe more inputs are necesary, check for compiler errors
import XMonad

resizeOnFocus :: Window -> X ()
resizeOnFocus w = do
    withDisplay $ \d -> io $ do
        windowW <- wa_width <$> getWindowAttributes d w
        windowH <- wa_height <$> getWindowAttributes d w
        let newW = floor $ fromIntegral windowW * 0.95
            newH = floor $ fromIntegral windowH * 0.95
        resizeWindow d w newW newH 

используйте его вместе с withFocused как стандартное действие ((modMask x, xK_g ), withFocused resizeOnFocus )

person lsmor    schedule 05.06.2020