Xmonad: при перемещении окна перемещайте или изменяйте его размер

Я предпочитаю использовать клавиатуру, чтобы плавать или опускать окна. К сожалению, в плавающем состоянии окна не перемещаются и не меняют размер, поэтому визуальных указаний на то, что они еще не выложены плиткой, мало. В идеале, после перехода к слою с плавающей точкой, я бы попросил их переместить в центр экрана и / или изменить размер.

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

toggleFloat = withFocused (\windowId -> do
                              { floats <- gets (W.floating . windowset);
                                if windowId `M.member` floats
                                then withFocused $ windows . W.sink
                                else float windowId })

(Код украден, я до сих пор не разбираюсь в Haskell: c)

Изменить: материал keysMoveWindowTo в модифицированном коде ниже может фактически просто заменить "float windowId", что делает излишним.


person user1191815    schedule 06.02.2012    source источник


Ответы (2)


Я полагаю, у вас установлен xmonad-contrib пакет. Затем вам следует взглянуть на XMonad.Actions.FloatKeys

Думаю, модифицированная функция будет:

...
import XMonad.Actions.FloatKeys
...

toggleFloat = withFocused (\windowId -> do
                              { floats <- gets (W.floating . windowset);
                                if windowId `M.member` floats
                                then withFocused $ windows . W.sink
                                else do
                                     keysMoveWindowTo (x, y) (gx1, gy1) windowId
                                     keysResizeWindow (dx, dy) (gx2, gy2) windowId
                              }
                          ) 

где _3 _, _ 4 _, _ 5 _, _ 6 _, _ 7 _, _ 8 _, _ 9 _, _ 10_ - ваши настройки.
Оператор %, упомянутый в документации, взят из Data.Ratio; a % b означает рациональное число с числителем a и знаменателем b. Вы должны импортировать, если хотите использовать:

import Data.Ratio ((%))
person Matvey Aksenov    schedule 06.02.2012
comment
Ха-ха, 30 минут назад я преодолел свой необъяснимый мазохистский отказ даже подумать о добавлении дополнительных материалов в мой xmonad.hs, сразу же нашел FloatKeys, повозился с минуту и ​​поспешил сюда, чтобы сказать N / M N / M GUYS. Но не будет спасено достоинство ... на StackOverflow.com - person user1191815; 06.02.2012
comment
Я пытался сделать это и обнаружил, что окна автоматически всплывают, когда вы выполняете keysMoveWindow или keysResize window. Так что у меня для них есть только сочетания клавиш, плюс sinkFocused = withFocused $ windows . W.sink, чтобы снова их утопить. - person jefdaj; 13.05.2013
comment
Спасибо, обновлю ответ сегодня же, без float тогда не пробовал. - person Matvey Aksenov; 13.05.2013

Плавающее окно с модом + перетаскивание влево, изменение размера с помощью мода + перетаскивание вправо.

person FantomX1    schedule 18.11.2020