From d8b6b7cd8240bbf2148b626450dfb21e6ea3fbb7 Mon Sep 17 00:00:00 2001 From: Michal Minář Date: Mon, 17 Oct 2016 06:54:09 +0200 Subject: Updated matching of google chrome MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michal Minář --- src/XMonad/Local/Layout.hs | 66 +++++++++++++++++++++++------------------- src/XMonad/Local/ManageHook.hs | 46 +++++++++++++++++------------ 2 files changed, 65 insertions(+), 47 deletions(-) diff --git a/src/XMonad/Local/Layout.hs b/src/XMonad/Local/Layout.hs index d3eddf3..6ea0dde 100644 --- a/src/XMonad/Local/Layout.hs +++ b/src/XMonad/Local/Layout.hs @@ -1,34 +1,35 @@ {-# OPTIONS -fno-warn-missing-signatures #-} {-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE UnicodeSyntax #-} module XMonad.Local.Layout (layoutHook) where -import Data.Ratio ((%)) -import XMonad.Hooks.ManageDocks (avoidStruts) -import XMonad.Layout -import XMonad.Layout.Accordion -import qualified XMonad.Layout.BoringWindows as BW -import XMonad.Layout.Column -import qualified XMonad.Layout.ComboP as CP -import qualified XMonad.Layout.IM as IM -import qualified XMonad.Layout.MultiToggle as MT -import qualified XMonad.Layout.Named as LN -import XMonad.Layout.NoBorders -import qualified XMonad.Layout.PerWorkspace as PW -import XMonad.Layout.Reflect -import XMonad.Layout.SimpleFloat -import XMonad.Layout.Simplest (Simplest(..)) -import XMonad.Layout.SubLayouts -import qualified XMonad.Layout.Tabbed as Tab -import XMonad.Layout.ThreeColumns -import XMonad.Layout.ToggleLayouts -import XMonad.Layout.TrackFloating -import XMonad.Layout.TwoPane -import XMonad.Layout.WindowNavigation +import Data.Ratio ((%)) +import XMonad.Hooks.ManageDocks (avoidStruts) +import XMonad.Layout +import XMonad.Layout.Accordion +import qualified XMonad.Layout.BoringWindows as BW +import XMonad.Layout.Column +import qualified XMonad.Layout.ComboP as CP +import qualified XMonad.Layout.IM as IM +import qualified XMonad.Layout.MultiToggle as MT +import qualified XMonad.Layout.Named as LN +import XMonad.Layout.NoBorders +import qualified XMonad.Layout.PerWorkspace as PW +import XMonad.Layout.Reflect +import XMonad.Layout.SimpleFloat +import XMonad.Layout.Simplest (Simplest (..)) +import XMonad.Layout.SubLayouts +import qualified XMonad.Layout.Tabbed as Tab +import XMonad.Layout.ThreeColumns +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.TrackFloating +import XMonad.Layout.TwoPane +import XMonad.Layout.WindowNavigation -- local modules ************************************************************** -import XMonad.Layout.TopicDir as TD -import XMonad.Local.TopicSpace as Local +import XMonad.Layout.TopicDir as TD +import XMonad.Local.TopicSpace as Local layoutHook = avoidStruts $ TD.topicDir Local.topicDirs @@ -42,14 +43,18 @@ layoutHook = avoidStruts easyLay nmaster = 1 +ratio ∷ Rational ratio = 1/2 +delta ∷ Rational delta = 3/100 +tiled ∷ Tall a tiled = Tall nmaster delta ratio +threecol ∷ ThreeCol a threecol = ThreeColMid nmaster delta (1/3) -- common layouts -easyLay = windowNavigation baseLay +easyLay = windowNavigation baseLay baseLay = smartBorders (tiled' ||| tabbed') where tiled' = mySubTabbed $ BW.boringWindows @@ -67,7 +72,7 @@ chatL = IM.withIM (1%5) (IM.ClassName "Skype" $ IM.withIM (1%5) (IM.ClassName "Pidgin" `IM.And` ( IM.Role "buddy_list" `IM.Or` IM.Title "Buddy List")) - + easyLay gimpL = LN.named "GIMP" @@ -81,10 +86,10 @@ gimpL = LN.named "GIMP" ( CP.ClassName "Gimp" `CP.And` CP.Not (CP.Role "gimp-image-window")) -webL = IM.withIM (1%4) (IM.ClassName "google-chrome" `IM.And` IM.Title "Tabs Outliner") easyLay +webL = IM.withIM (1%4) (matchChrome `IM.And` IM.Title "Tabs Outliner") easyLay bgL = windowNavigation $ BW.boringWindows $ smartBorders - $ IM.withIM (2%7) (IM.ClassName "google-chrome") tiled + $ IM.withIM (2%7) matchChrome tiled witcherL = windowNavigation $ BW.boringWindows $ noBorders $ IM.withIM (2%7) (IM.ClassName "Firefox") tiled @@ -96,7 +101,7 @@ wineGameL = smartBorders $ simpleFloat ||| trackFloating Full mySubTabbed x = trackFloating $ Tab.addTabs Tab.shrinkText myTabTheme $ subLayout [] Simplest x -myTabTheme :: Tab.Theme +myTabTheme ∷ Tab.Theme myTabTheme = Tab.def { Tab.activeTextColor = "#ffffff" , Tab.activeBorderColor = "#FBAB2E" @@ -110,3 +115,6 @@ myTabTheme = Tab.def , Tab.fontName = "-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*" , Tab.decoHeight = 24 } + +matchChrome ∷ IM.Property +matchChrome = IM.ClassName "google-chrome" `IM.Or` IM.ClassName "Google-chrome" diff --git a/src/XMonad/Local/ManageHook.hs b/src/XMonad/Local/ManageHook.hs index 5803e05..bfd77fa 100644 --- a/src/XMonad/Local/ManageHook.hs +++ b/src/XMonad/Local/ManageHook.hs @@ -1,27 +1,27 @@ +{-# LANGUAGE UnicodeSyntax #-} 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 +import Data.List +import XMonad hiding (manageHook) +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.ManageHelpers +import qualified XMonad.StackSet as W +import XMonad.Util.NamedScratchpad as NS -- local modules ************************************************************** -import XMonad.Local.Config -import XMonad.Local.NamedScratchpad -import XMonad.Local.Workspaces +import XMonad.Local.Config +import XMonad.Local.NamedScratchpad +import XMonad.Local.Workspaces {- note: earlier hooks have higher priority -} -manageHook :: ManageHook +manageHook ∷ ManageHook manageHook = composeAll [ composeOne [NS.query c -?> hook c | c <- namedScratchpads] , composeOne (concat [ [checkDock -?> doIgnore] - , [(className =? "google-chrome" <&&> - appName =? tabsOutlinerAppName) -?> doTOFloat] + , [(matchChrome <&&> appName =? tabsOutlinerAppName) -?> doTOFloat] , [className =? c -?> doIgnore | c <- myCIgnores] , [className =? "Wine" -?> doFloat ] , [isFullscreen -?> doMaster <+> doFullFloat] @@ -32,7 +32,7 @@ manageHook = composeAll , [( className =? "Qjackctl" <&&> fmap ("JACK Audio Connection Kit" `isPrefixOf`) title) -?> doMaster <+> doFloat] - , [(className =? "Dia" <&&> role =? "toolbox_window") + , [(className =? "Dia" <&&> windowRole =? "toolbox_window") -?> doMaster <+> doFloat] , [ className =? c <&&> title =? t -?> doMaster <+> doFloat | (c, t) <- myCTFloats ] @@ -47,7 +47,7 @@ manageHook = composeAll , composeOne (concat [ [className =? "Dia" -?> doMyShift "dia"] , [className =? c -?> doMyShift "chat" | c <- myChatClients ] - , [(className =? "Google-chrome" <&&> title =? "Hangouts") -?> doMyShift "chat"] + , [(matchChrome <&&> title =? "Hangouts") -?> doMyShift "chat"] , [className =? c -?> doMyShift "web" | c <- myWebBrowsers ] , [title =? "ncmpcpp" -?> doMyShift "music" ] , [className =? c -?> doMyShift "music" | c <- myMusicPlayers ] @@ -69,11 +69,15 @@ manageHook = composeAll ] where doMaster = doF W.shiftMaster - doMyShift :: WorkspaceId -> ManageHook + + doMyShift ∷ WorkspaceId → ManageHook doMyShift wsp = do liftX (newWorkspace wsp) doF $ W.greedyView wsp . W.shift wsp + + doTOFloat ∷ ManageHook doTOFloat = doRectFloat tabsOutlinerFloatRect + myTFloats = [ "VLC (XVideo output)" , "DownThemAll! - Make Your Selection" , "Add Downloads" @@ -107,12 +111,18 @@ manageHook = composeAll myWebBrowsers = [] myMusicPlayers = ["ncmpcpp", "Sonata", "Rhythmbox", "Gmpc"] myVideoPlayers = ["MPlayer", "Vlc", "Smplayer"] - gimpManage = [ ( role =? "gimp-toolbox" <||> role =? "gimp-image-window" + + gimpManage = [ ( windowRole =? "gimp-toolbox" <||> windowRole =? "gimp-image-window" , ask >>= doF . W.sink) - , (role =? "gimp-image-merge-layers", doCenterFloat) + , (windowRole =? "gimp-image-merge-layers", doCenterFloat) , (title =? "Scale Image", doCenterFloat) , (title =? "Export File", doCenterFloat) , (fmap ("Save as" `isPrefixOf`) title, doCenterFloat) ] - role = stringProperty "WM_WINDOW_ROLE" +matchChrome ∷ Query Bool +matchChrome = className =? "google-chrome" <||> className =? "Google-chrome" + +windowRole ∷ Query String +windowRole = stringProperty "WM_WINDOW_ROLE" + -- cgit