Xmonad: при перемещении окна перемещайте или изменяйте его размер - PullRequest
6 голосов
/ 06 февраля 2012

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

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

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", что делает его лишним.

1 Ответ

6 голосов
/ 06 февраля 2012

Полагаю, у вас установлен 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
                              }
                          ) 

где x, y, dx, dy, gx1, gy1, gx2, gy2 - ваши настройки.
Оператор %, упомянутый в документах от Data.Ratio; a % b означает рациональное число с числителем a и знаменателем b. Вы должны импортировать, если вы хотите использовать его:

import Data.Ratio ((%))
...