From 4faeda1511d5701389f6f420e5066dfd22101366 Mon Sep 17 00:00:00 2001 From: Michal Minar Date: Sun, 19 Jul 2015 16:21:38 +0200 Subject: Moved manageHook to library --- src/XMonad/Local/ManageHook.hs | 116 +++++++++++++++++++++++++++++++++++++++++ xminad.cabal | 1 + xminad.hs | 109 +------------------------------------- 3 files changed, 119 insertions(+), 107 deletions(-) create mode 100644 src/XMonad/Local/ManageHook.hs diff --git a/src/XMonad/Local/ManageHook.hs b/src/XMonad/Local/ManageHook.hs new file mode 100644 index 0000000..efced4c --- /dev/null +++ b/src/XMonad/Local/ManageHook.hs @@ -0,0 +1,116 @@ +module XMonad.Local.ManageHook (manageHook) where + +import Data.List +import XMonad hiding (manageHook) +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.ManageHelpers +import XMonad.Util.NamedScratchpad as NS +import qualified XMonad.StackSet as W + +-- local modules ************************************************************** +import XMonad.Local.NamedScratchpad +import XMonad.Local.Workspaces + +{- note: earlier hooks override later ones -} +manageHook :: ManageHook +manageHook = composeOne (concat + [ --[manageHook myBaseConfig] + [checkDock -?> doIgnore] + , [className =? c -?> doIgnore | c <- myCIgnores] + , [isFullscreen -?> doMaster <+> doFullFloat] + , [transience] + , [isDialog -?> doMaster <+> doCenterFloat] + + , [fmap ("Preferences" `isInfixOf`) title -?> doMaster <+> doCenterFloat] + , [(className =? "Gimp" <&&> c) -?> h | (c, h) <- gimpManage] + , [( className =? "Qjackctl" + <&&> fmap ("JACK Audio Connection Kit" `isPrefixOf`) title) + -?> doMaster <+> doFloat] + , [(className =? "Dia" <&&> role =? "toolbox_window") + -?> doMaster <+> doFloat] + + , [ className =? c <&&> title =? t -?> doMaster <+> doFloat + | (c, t) <- myCTFloats ] + , [className =? c -?> doMaster <+> doCenterFloat | c <- myCCenterFloats] + , [className =? "Virt-manager" <&&> title =? "New VM" + -?> doMaster <+> doCenterFloat] + , [className =? c -?> doMaster <+> doFloat | c <- myCFloats ] + , [title =? t -?> doMaster <+> doFloat | t <- myTFloats ] + , [ className =? "BaldursGate" -?> doMyShift "BG" <+> doMaster] + , [NS.query c -?> hook c | c <- namedScratchpads]]) + --, [className =? "dzen" -?> transparency 0.4]]) + <+> + composeOne (concat + [ [className =? "Dia" -?> doMyShift "dia"] + , [className =? c -?> doMyShift "chat" | c <- myChatClients ] + , [(className =? "Google-chrome" <&&> title =? "Hangouts") -?> doMyShift "chat"] + , [className =? c -?> doMyShift "web" | c <- myWebBrowsers ] + , [title =? "ncmpcpp" -?> doMyShift "music" ] + , [className =? c -?> doMyShift "music" | c <- myMusicPlayers ] + , [className =? c -?> doMyShift "video" | c <- myVideoPlayers ] + , [className =? "Evince" -?> doMyShift "pdf" ] + , [className =? "Atril" -?> doMyShift "pdf" ] + , [className =? "Thunderbird" -?> doMyShift "mail"] + , [className =? "Gimp" -?> doMyShift "gimp"] + , [className =? "Virt-manager" -?> doMyShift "virt"] + , [className =? "VirtualBox" -?> doMyShift "vbox"] + , [className =? "Deluge" -?> doMyShift "p2p"] + , [className =? "Calibre" -?> doMyShift "ebook"] + , [className =? "Squeak" -?> doMyShift "squeak"] + , [className =? "Civ5XP" -?> doMyShift "ciV"] + , [className =? "Googleearth-bin" -?> doMyShift "earth"] + -- see http://xmonad.org/xmonad-docs/xmonad-contrib/src/XMonad-Hooks-XPropManage.html#xPropManageHook + ]) + where + doMaster = doF W.shiftMaster + doMyShift :: WorkspaceId -> ManageHook + doMyShift wsp = do + liftX (newWorkspace wsp) + doF $ W.greedyView wsp . W.shift wsp + myTFloats = [ "VLC (XVideo output)" + , "DownThemAll! - Make Your Selection" + , "Add Downloads" + , "Add URL(s)" + , "Run Application" + ] + myCIgnores = [ "Xfce4-notifyd" + ] + myCFloats = [ -- "Gnome-panel" + "Close session" + , "MPlayer" + , "Wine" + , "Galculator" + ] + myCTFloats = [ ("Skype", "Information") + , ("Firefox", "Certificate Manager") + , ("processing-app-Base", "Preferences") + , ("Thunar", "File Operation Progress") + ] + myCCenterFloats = [ -- "Gnome-tweak-tool" + "Xfce4-notes" + , "Gcolor2" + , "Gcr-prompter" + , "Xfce4-appfinder" + , "Xmessage" + , "Pavucontrol" + , "Xfrun4" + , "Xfce4-settings-manager" + , "Xfce4-panel" + , "Alarm-clock-applet" + ] + myChatClients = ["Pidgin", "Xchat", "Skype", "Empathy", "Hexchat"] + myWebBrowsers = [ -- "Firefox" + "Chromium-browser" + , "Google-chrome" + ] + myMusicPlayers = ["ncmpcpp", "Sonata", "Rhythmbox", "Gmpc"] + myVideoPlayers = ["MPlayer", "Vlc", "Smplayer"] + gimpManage = [ ( role =? "gimp-toolbox" <||> role =? "gimp-image-window" + , ask >>= doF . W.sink) + , (role =? "gimp-image-merge-layers", doCenterFloat) + , (title =? "Scale Image", doCenterFloat) + , (title =? "Export File", doCenterFloat) + , (fmap ("Save as" `isPrefixOf`) title, doCenterFloat) + ] + + role = stringProperty "WM_WINDOW_ROLE" diff --git a/xminad.cabal b/xminad.cabal index 6023db8..15c95db 100644 --- a/xminad.cabal +++ b/xminad.cabal @@ -17,6 +17,7 @@ Library XMonad.Local.GridSelect XMonad.Local.Keys XMonad.Local.Layout + XMonad.Local.ManageHook XMonad.Local.NamedScratchpad XMonad.Local.TopicSpace XMonad.Local.Workspaces diff --git a/xminad.hs b/xminad.hs index 81d43e3..72df8bf 100644 --- a/xminad.hs +++ b/xminad.hs @@ -25,7 +25,6 @@ import XMonad.Hooks.FadeWindows import XMonad.Hooks.SetWMName import XMonad.Hooks.UrgencyHook import XMonad.Hooks.ManageDocks -import XMonad.Hooks.ManageHelpers import qualified XMonad.StackSet as W import qualified XMonad.Util.EZConfig as EZ import XMonad.Util.NamedScratchpad as NS @@ -36,9 +35,8 @@ import XMonad.Util.WorkspaceCompare (getSortByIndex) import qualified XMonad.Local.Config as Local import qualified XMonad.Local.Keys as Local import qualified XMonad.Local.Layout as Local -import qualified XMonad.Local.NamedScratchpad as Local +import qualified XMonad.Local.ManageHook as Local import qualified XMonad.Local.TopicSpace as Local -import qualified XMonad.Local.Workspaces as Local doNotFadeOutWindows :: Query Bool doNotFadeOutWindows = @@ -79,109 +77,6 @@ myMouseBindings (XConfig {XMonad.modMask = mm}) = M.fromList ] -{- note: earlier hooks override later ones -} -myManageHook :: ManageHook -myManageHook = composeOne (concat - [ --[manageHook myBaseConfig] - [checkDock -?> doIgnore] - , [className =? c -?> doIgnore | c <- myCIgnores] - , [isFullscreen -?> doMaster <+> doFullFloat] - , [transience] - , [isDialog -?> doMaster <+> doCenterFloat] - - , [fmap ("Preferences" `isInfixOf`) title -?> doMaster <+> doCenterFloat] - , [(className =? "Gimp" <&&> c) -?> h | (c, h) <- gimpManage] - , [( className =? "Qjackctl" - <&&> fmap ("JACK Audio Connection Kit" `isPrefixOf`) title) - -?> doMaster <+> doFloat] - , [(className =? "Dia" <&&> role =? "toolbox_window") - -?> doMaster <+> doFloat] - - , [ className =? c <&&> title =? t -?> doMaster <+> doFloat - | (c, t) <- myCTFloats ] - , [className =? c -?> doMaster <+> doCenterFloat | c <- myCCenterFloats] - , [className =? "Virt-manager" <&&> title =? "New VM" - -?> doMaster <+> doCenterFloat] - , [className =? c -?> doMaster <+> doFloat | c <- myCFloats ] - , [title =? t -?> doMaster <+> doFloat | t <- myTFloats ] - , [ className =? "BaldursGate" -?> doMyShift "BG" <+> doMaster] - , [query c -?> hook c | c <- Local.namedScratchpads]]) - --, [className =? "dzen" -?> transparency 0.4]]) - <+> - composeOne (concat - [ [className =? "Dia" -?> doMyShift "dia"] - , [className =? c -?> doMyShift "chat" | c <- myChatClients ] - , [(className =? "Google-chrome" <&&> title =? "Hangouts") -?> doMyShift "chat"] - , [className =? c -?> doMyShift "web" | c <- myWebBrowsers ] - , [title =? "ncmpcpp" -?> doMyShift "music" ] - , [className =? c -?> doMyShift "music" | c <- myMusicPlayers ] - , [className =? c -?> doMyShift "video" | c <- myVideoPlayers ] - , [className =? "Evince" -?> doMyShift "pdf" ] - , [className =? "Atril" -?> doMyShift "pdf" ] - , [className =? "Thunderbird" -?> doMyShift "mail"] - , [className =? "Gimp" -?> doMyShift "gimp"] - , [className =? "Virt-manager" -?> doMyShift "virt"] - , [className =? "VirtualBox" -?> doMyShift "vbox"] - , [className =? "Deluge" -?> doMyShift "p2p"] - , [className =? "Calibre" -?> doMyShift "ebook"] - , [className =? "Squeak" -?> doMyShift "squeak"] - , [className =? "Civ5XP" -?> doMyShift "ciV"] - , [className =? "Googleearth-bin" -?> doMyShift "earth"] - -- see http://xmonad.org/xmonad-docs/xmonad-contrib/src/XMonad-Hooks-XPropManage.html#xPropManageHook - ]) - where - doMaster = doF W.shiftMaster - doMyShift :: WorkspaceId -> ManageHook - doMyShift wsp = do - liftX (Local.newWorkspace wsp) - doF $ W.greedyView wsp . W.shift wsp - myTFloats = [ "VLC (XVideo output)" - , "DownThemAll! - Make Your Selection" - , "Add Downloads" - , "Add URL(s)" - , "Run Application" - ] - myCIgnores = [ "Xfce4-notifyd" - ] - myCFloats = [ -- "Gnome-panel" - "Close session" - , "MPlayer" - , "Wine" - , "Galculator" - ] - myCTFloats = [ ("Skype", "Information") - , ("Firefox", "Certificate Manager") - , ("processing-app-Base", "Preferences") - , ("Thunar", "File Operation Progress") - ] - myCCenterFloats = [ -- "Gnome-tweak-tool" - "Xfce4-notes" - , "Gcolor2" - , "Gcr-prompter" - , "Xfce4-appfinder" - , "Xmessage" - , "Pavucontrol" - , "Xfrun4" - , "Xfce4-settings-manager" - , "Xfce4-panel" - , "Alarm-clock-applet" - ] - myChatClients = ["Pidgin", "Xchat", "Skype", "Empathy", "Hexchat"] - myWebBrowsers = [ -- "Firefox" - "Chromium-browser" - , "Google-chrome" - ] - myMusicPlayers = ["ncmpcpp", "Sonata", "Rhythmbox", "Gmpc"] - myVideoPlayers = ["MPlayer", "Vlc", "Smplayer"] - gimpManage = [ ( role =? "gimp-toolbox" <||> role =? "gimp-image-window" - , ask >>= doF . W.sink) - , (role =? "gimp-image-merge-layers", doCenterFloat) - , (title =? "Scale Image", doCenterFloat) - , (title =? "Export File", doCenterFloat) - , (fmap ("Save as" `isPrefixOf`) title, doCenterFloat) - ] - - role = stringProperty "WM_WINDOW_ROLE" myFadeHook :: FadeHook myFadeHook = composeAll [ opaque @@ -314,7 +209,7 @@ myConfig dbus = myBaseConfig , keys = Local.keyBindings , logHook = myLogHook dbus , handleEventHook = myEventHook - , manageHook = myManageHook + , manageHook = Local.manageHook , startupHook = myStartupHook , mouseBindings = myMouseBindings } -- cgit