Automatically float dialog windows
This commit is contained in:
parent
247a95be44
commit
0bafbe18d9
2 changed files with 36 additions and 13 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@
|
||||||
*.hi
|
*.hi
|
||||||
xmonad.errors
|
xmonad.errors
|
||||||
xmonad-i386-linux
|
xmonad-i386-linux
|
||||||
|
xmonad-x86_64-linux
|
||||||
|
|
48
xmonad.hs
48
xmonad.hs
|
@ -7,12 +7,14 @@ import XMonad.Actions.PhysicalScreens
|
||||||
import XMonad.Actions.Warp
|
import XMonad.Actions.Warp
|
||||||
import XMonad.Hooks.ManageDocks
|
import XMonad.Hooks.ManageDocks
|
||||||
import XMonad.Hooks.ManageHelpers
|
import XMonad.Hooks.ManageHelpers
|
||||||
|
import XMonad.Hooks.SetWMName
|
||||||
import XMonad.Layout.ResizableTile
|
import XMonad.Layout.ResizableTile
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
import XMonad.Util.EZConfig
|
import XMonad.Util.EZConfig
|
||||||
|
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Control.Monad.Trans
|
import Control.Monad.Trans
|
||||||
|
import Data.Maybe
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
import Ratio((%))
|
import Ratio((%))
|
||||||
|
|
||||||
|
@ -27,7 +29,7 @@ main = xmonad $ gnomeConfig
|
||||||
{ modMask = modm
|
{ modMask = modm
|
||||||
, manageHook = myManageHook
|
, manageHook = myManageHook
|
||||||
, layoutHook = desktopLayoutModifiers myLayoutHook
|
, layoutHook = desktopLayoutModifiers myLayoutHook
|
||||||
--, startupHook = myStartupHook
|
, startupHook = myStartupHook
|
||||||
, handleEventHook = myEventHook
|
, handleEventHook = myEventHook
|
||||||
}
|
}
|
||||||
`additionalKeysP`
|
`additionalKeysP`
|
||||||
|
@ -68,19 +70,39 @@ viewOrWarp n = do
|
||||||
-- startupHook gnomeConfig
|
-- startupHook gnomeConfig
|
||||||
-- spawn "killall -u `id -un` -q xcompmgr; exec xcompmgr"
|
-- spawn "killall -u `id -un` -q xcompmgr; exec xcompmgr"
|
||||||
|
|
||||||
|
myStartupHook :: X ()
|
||||||
|
myStartupHook = do
|
||||||
|
startupHook gnomeConfig
|
||||||
|
setWMName "LG3D"
|
||||||
|
|
||||||
|
atomProperty :: String -> Query Atom
|
||||||
|
atomProperty p = ask >>= (\w -> liftX $ withDisplay $ \d -> fmap (fromMaybe 0) $ getAtomProperty d w p)
|
||||||
|
|
||||||
|
getAtomProperty :: Display -> Window -> String -> X (Maybe Atom)
|
||||||
|
getAtomProperty d w p = do
|
||||||
|
a <- getAtom p
|
||||||
|
md <- io $ getWindowProperty32 d a w
|
||||||
|
return $ fmap fromIntegral $ listToMaybe $ fromMaybe [] md
|
||||||
|
|
||||||
|
|
||||||
myManageHook :: ManageHook
|
myManageHook :: ManageHook
|
||||||
myManageHook = composeAll
|
myManageHook = do
|
||||||
[ composeOne
|
atom__NET_WM_WINDOW_TYPE_DIALOG <- liftX $ getAtom "_NET_WM_WINDOW_TYPE_DIALOG"
|
||||||
[ className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff)
|
composeAll
|
||||||
--, className =? "Do" -?> (doFloat <+> doConfigBorderOff)
|
[ composeOne
|
||||||
, className =? "MPlayer" -?> doCenterFloat
|
[ atomProperty "_NET_WM_WINDOW_TYPE" =? atom__NET_WM_WINDOW_TYPE_DIALOG -?> doFloat
|
||||||
, className =? "Gimp" -?> doFloat
|
, className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff)
|
||||||
, className =? "Display" -?> doFloat
|
--, className =? "Do" -?> (doFloat <+> doConfigBorderOff)
|
||||||
, className =? "Wine" -?> doFloat
|
, className =? "MPlayer" -?> doCenterFloat
|
||||||
, isFullscreen -?> doFullscreen
|
, className =? "Gimp" -?> doFloat
|
||||||
]
|
, className =? "Display" -?> doFloat
|
||||||
, manageHook gnomeConfig
|
, className =? "Wine" -?> doFloat
|
||||||
]
|
, className =? "Pcsx2" -?> doFloat
|
||||||
|
, stringProperty "WM_ICON_NAME" =? "ZeroGS" -?> doFloat
|
||||||
|
, isFullscreen -?> doFullscreen
|
||||||
|
]
|
||||||
|
, manageHook gnomeConfig
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
myLayoutHook = manageFullscreen $ smartBorders (Full ||| tiled ||| Mirror tiled)
|
myLayoutHook = manageFullscreen $ smartBorders (Full ||| tiled ||| Mirror tiled)
|
||||||
|
|
Reference in a new issue