diff options
author | Michal Minar <miminar@redhat.com> | 2015-08-02 08:30:16 +0200 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2015-08-02 08:30:16 +0200 |
commit | af6a07027a29503d9bb3b28f0bf8f080100b7a84 (patch) | |
tree | 4904c43bf8641e38e4665a182dea2e40a02e4bad /xminad.hs | |
parent | 4f1d12af5789401738993ececbbab2570927fed9 (diff) | |
download | xminad-af6a07027a29503d9bb3b28f0bf8f080100b7a84.tar.gz xminad-af6a07027a29503d9bb3b28f0bf8f080100b7a84.tar.xz xminad-af6a07027a29503d9bb3b28f0bf8f080100b7a84.zip |
Moved logHook to local library
Signed-off-by: Michal Minar <miminar@redhat.com>
Diffstat (limited to 'xminad.hs')
-rw-r--r-- | xminad.hs | 135 |
1 files changed, 2 insertions, 133 deletions
@@ -1,25 +1,14 @@ {-# LANGUAGE NoMonomorphismRestriction #-} {-# OPTIONS -fno-warn-missing-signatures #-} -import qualified Codec.Binary.UTF8.String as UTF8 ---import Control.Exception import qualified Data.Map as M -import Data.List import Data.Monoid import qualified DBus as D import qualified DBus.Client as D -import Text.Regex -import Text.Regex.Posix ---import System.Exit ---import System.IO import XMonad ---import XMonad.Actions.UpdateFocus import qualified XMonad.Actions.FlexibleResize as FlexR -import qualified XMonad.Actions.UpdatePointer as UP import XMonad.Config.Desktop -import XMonad.Hooks.CurrentWorkspaceOnTop -import XMonad.Hooks.DynamicLog as DL import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.FadeWindows import XMonad.Hooks.SetWMName @@ -27,35 +16,15 @@ import XMonad.Hooks.UrgencyHook import XMonad.Hooks.ManageDocks import qualified XMonad.StackSet as W import qualified XMonad.Util.EZConfig as EZ -import XMonad.Util.NamedScratchpad as NS ---import XMonad.Util.Run -import XMonad.Util.WorkspaceCompare (getSortByIndex) -- local modules ************************************************************** import qualified XMonad.Local.Config as Local +import qualified XMonad.Local.LogHook as Local import qualified XMonad.Local.Keys as Local import qualified XMonad.Local.Layout as Local import qualified XMonad.Local.ManageHook as Local import qualified XMonad.Local.TopicSpace as Local -doNotFadeOutWindows :: Query Bool -doNotFadeOutWindows = - className =? "xine" <||> - className =? "MPlayer" <||> - className =? "Smplayer" <||> - className =? "Vlc" <||> - className =? "Firefox" <||> - className =? "Opera" <||> - className =? "Shiretoko" <||> - className =? "VirtualBox" <||> - className =? "Namoroka" <||> - className =? "Navigator" <||> - className =? "Chromium" <||> - className =? "Google-chrome" <||> - className =? "Civ5XP" <||> - className =? "BaldursGate" <||> - title =? "VLC (XVideo output)" - myBaseConfig = desktopConfig { XMonad.modMask = Local.modMask } @@ -76,106 +45,6 @@ myMouseBindings (XConfig {XMonad.modMask = mm}) = M.fromList , ((mm, button5), const $ windows W.swapUp) ] - - -myFadeHook :: FadeHook -myFadeHook = composeAll [ opaque - , isUnfocused --> transparency 0.2 - , doNotFadeOutWindows --> opaque - ] - ---myLogHook :: Handle -> X () -myLogHook dbus = do - sorted <- getSortByIndex - ws <- gets ( map W.tag . sorted . namedScratchpadFilterOutWorkspace - . W.workspaces . windowset - ) - DL.dynamicLogWithPP (myPP $ M.fromList $ zip ws ([1..] :: [Integer])) { - ppOutput = dbusOutput dbus - } - currentWorkspaceOnTop - ewmhDesktopsLogHook - fadeWindowsLogHook myFadeHook - UP.updatePointer (UP.Relative 0.9 0.9) - -myPP :: Show a => M.Map WorkspaceId a -> PP -myPP wmap = defaultPP - { ppTitle = pangoSpan [("foreground", "white"), ("font", "Cantarell 10")] . pangoSanitize - , ppCurrent = pangoColor "white" . wrap "[" "]" - . pangoSanitize . indexWorkspace - , ppVisible = pangoColor "yellow" . wrap "(" ")" - . pangoSanitize . indexWorkspace - , ppHidden = _hidden . noScratchPad - , ppUrgent = pangoColor "#FF0000" - . pangoSanitize . indexWorkspace - , ppLayout = pangoColor "lightblue" . pangoSanitize . shortenLayout - , ppSep = pangoColor "brown" $ pangoSanitize " : " - , ppWsSep = " " - } - where - topicLength :: Integer - topicLength = 3 - _hidden :: String -> String - _hidden [] = "" - _hidden x = pangoColor "#9a9a9a" . pangoSanitize - . _shorten . indexWorkspace $ x - - _shorten :: String -> String - _shorten ws = let m = ws =~ ("[0-9]+:.{0," ++ show topicLength ++ "}") - in if m == "" then ws else m - - indexWorkspace :: WorkspaceId -> WorkspaceId - indexWorkspace w | w `M.member` wmap = show (wmap M.! w) ++ ":" ++ w - | otherwise = w - - noScratchPad ws | ws =~ "^NSP(:[0-9]+)?$" = "" - | otherwise = ws - - shortenLayout = shortenLayout' [ - ("^Tabbed\\s+(.*)", "T:\\1") - , ("\\bThreeCol\\b", "OHH") - , ("\\bThreeColMid\\b", "HOH") - , ("\\bReflectX\\s+(.*)", "RX:\\1") - , ("\\bReflectY\\s+(.*)", "RY:\\1") - , ("\\bMirror\\s+(.*)", "M:\\1") - , ("\\bResizableTall\\b", "OH") - ] - shortenLayout' [] s = s - shortenLayout' ((reg, repl):xs) s = shortenLayout' xs - $ subRegex (mkRegex reg) s repl - -dbusOutput :: D.Client -> String -> IO () -dbusOutput dbus str = do - let signal = (D.signal - (D.objectPath_ "/org/xmonad/Log") - (D.interfaceName_ "org.xmonad.Log") - (D.memberName_ "Update")) { - D.signalBody = [D.toVariant ("<b>" ++ (pangoSpan [("font", "Cantarell Bold 10")] $ UTF8.decodeString str) ++ "</b>")] - } - D.emit dbus signal - -pangoSpan :: [(String, String)] -> String -> String -pangoSpan attrs = wrap left right - where - left = "<span " ++ attrstr ++ ">" - right = "</span>" - attrstr = intercalate " " $ fmap (\(x, y) -> x ++ "=\"" ++ y ++ "\"") attrs - -pangoColor :: String -> String -> String -pangoColor fg = pangoSpan [("foreground", fg)] - ---pangoColor2 :: String -> String -> String -> String ---pangoColor2 fg bg = pangoSpan [("foreground", fg), ("background", bg)] - -pangoSanitize :: String -> String -pangoSanitize = foldr sanitize "" - where - sanitize '>' xs = ">" ++ xs - sanitize '<' xs = "<" ++ xs - sanitize '\"' xs = """ ++ xs - sanitize '&' xs = "&" ++ xs - sanitize x xs = x:xs - -- | Enables 'focusFollowsMouse' for tiled windows only. For this to -- work you need to turn off 'focusFollowsMouse' in your configuration -- and then add this function to your 'handleEventHook'. @@ -207,7 +76,7 @@ myConfig dbus = myBaseConfig , workspaces = Local.workspaces , layoutHook = desktopLayoutModifiers Local.layoutHook , keys = Local.keyBindings - , logHook = myLogHook dbus + , logHook = Local.logHook dbus , handleEventHook = myEventHook , manageHook = Local.manageHook , startupHook = myStartupHook |