Automatically float dialog windows

This commit is contained in:
Matthias Schiffer 2011-02-22 19:40:54 +01:00
parent 247a95be44
commit 0bafbe18d9
2 changed files with 36 additions and 13 deletions

1
.gitignore vendored
View file

@ -3,3 +3,4 @@
*.hi *.hi
xmonad.errors xmonad.errors
xmonad-i386-linux xmonad-i386-linux
xmonad-x86_64-linux

View file

@ -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,15 +70,35 @@ 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
atom__NET_WM_WINDOW_TYPE_DIALOG <- liftX $ getAtom "_NET_WM_WINDOW_TYPE_DIALOG"
composeAll
[ composeOne [ composeOne
[ className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff) [ atomProperty "_NET_WM_WINDOW_TYPE" =? atom__NET_WM_WINDOW_TYPE_DIALOG -?> doFloat
, className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff)
--, className =? "Do" -?> (doFloat <+> doConfigBorderOff) --, className =? "Do" -?> (doFloat <+> doConfigBorderOff)
, className =? "MPlayer" -?> doCenterFloat , className =? "MPlayer" -?> doCenterFloat
, className =? "Gimp" -?> doFloat , className =? "Gimp" -?> doFloat
, className =? "Display" -?> doFloat , className =? "Display" -?> doFloat
, className =? "Wine" -?> doFloat , className =? "Wine" -?> doFloat
, className =? "Pcsx2" -?> doFloat
, stringProperty "WM_ICON_NAME" =? "ZeroGS" -?> doFloat
, isFullscreen -?> doFullscreen , isFullscreen -?> doFullscreen
] ]
, manageHook gnomeConfig , manageHook gnomeConfig