import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ICCCMFocus
import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.Script
import XMonad.Hooks.SetWMName
import XMonad.Layout.IM
import XMonad.Layout.LayoutHints
import qualified XMonad.Layout.Magnifier as Mag
-import XMonad.Hooks.ManageHelpers
import XMonad.Layout.NoBorders
import XMonad.Layout.NoFrillsDecoration
import XMonad.Layout.PerWorkspace
import XMonad.Layout.ThreeColumns
import XMonad.Layout.TwoPane
import XMonad.Util.Run(spawnPipe)
+import XMonad.Util.WindowProperties(getProp32s)
import qualified Data.Map as M
import qualified XMonad.StackSet as W
W.Stack t [] (r:rs) -> W.Stack t [r] rs
otherwise -> c
-myManageHook = composeAll [
- (className =? "Gnome-fallback-mount-helper" <&&> resource =? "gnome-fallback-mount-helper") --> doFloat,
- (className =? "Gdu-notification-daemon" <&&> resource =? "gdu-notification-daemon") --> doFloat,
- (className =? "Firefox" <&&> resource =? "Dialog") --> doFloat,
- (className =? "Firefox" <&&> resource =? "Popup") --> (ask >>= doF . W.sink),
- (className =? "Firefox" <&&> resource =? "Navigator" <&&> currentWs =? "1") --> (doShift "2"),
- (className =? "Screenruler" <&&> resource =? "screenruler") --> doFloat,
- (className =? "Plugin-container" <&&> resource =? "plugin-container") --> doFullFloat,
- (className =? "Sushi-start" <&&> resource =? "sushi-start") --> (doFloatAt 0.1 0.1),
- (fmap not isDialog --> doF avoidMaster),
- manageDocks
+isTransient = ask >>= \w -> liftX $ do
+ r <- getProp32s "WM_TRANSIENT_FOR" w
+ return $ case r of
+ Just [_] -> True
+ _ -> False
+
+myManageHook =
+ manageDocks <+>
+ composeOne [
+ (className =? "Firefox" <&&> resource =? "Popup") -?> (ask >>= doF . W.sink),
+ (className =? "Firefox" <&&> resource =? "Navigator" <&&> currentWs =? "1") -?> (doShift "2"),
+ (isDialog -?> doFloatAt 0.1 0.1),
+ (isTransient -?> doFloatAt 0.1 0.1),
+ (isFullscreen -?> doFullFloat),
+ (fmap Just $ doF avoidMaster)
]
xmonadDir <- getXMonadDir
xmobar <- spawnPipe ("xmobar " ++ xmonadDir ++ "/xmobar.hs")
xmonad $ defaultConfig {
- manageHook = myManageHook <+> manageHook defaultConfig,
+ manageHook = myManageHook,
layoutHook = myLayout,
workspaces = myWorkspaces,
logHook = myLogHook xmobar,