xmonad-bluetilebranch 0.8.1 → 0.8.1.3
raw patch · 7 files changed
+67/−45 lines, 7 filesdep +filepathPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: filepath
API changes (from Hackage documentation)
+ XMonad.StackSet: focusMaster' :: Stack a -> Stack a
Files
- Main.hs +3/−1
- XMonad/Config.hs +1/−1
- XMonad/Core.hs +14/−4
- XMonad/ManageHook.hs +3/−1
- XMonad/StackSet.hs +8/−4
- man/xmonad.hs +36/−32
- xmonad-bluetilebranch.cabal +2/−2
Main.hs view
@@ -16,10 +16,12 @@ import XMonad +import Control.Monad (unless) import System.IO import System.Info import System.Environment import System.Posix.Process (executeFile)+import System.Exit (exitFailure) import Paths_xmonad_bluetilebranch (version) import Data.Version (showVersion)@@ -39,7 +41,7 @@ [] -> launch ["--resume", _] -> launch ["--help"] -> usage- ["--recompile"] -> recompile True >> return ()+ ["--recompile"] -> recompile True >>= flip unless exitFailure ["--restart"] -> sendRestart >> return () ["--version"] -> putStrLn ("xmonad " ++ showVersion version) #ifdef TESTING
XMonad/Config.hs view
@@ -218,7 +218,7 @@ -- quit, or restart , ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) -- %! Quit xmonad- , ((modMask , xK_q ), spawn "xmonad --recompile; xmonad --restart") -- %! Restart xmonad+ , ((modMask , xK_q ), spawn "xmonad --recompile && xmonad --restart") -- %! Restart xmonad ] ++ -- mod-[1..9] %! Switch to workspace N
XMonad/Core.hs view
@@ -38,6 +38,7 @@ import Control.Applicative import Control.Monad.State import Control.Monad.Reader+import System.FilePath import System.IO import System.Info import System.Posix.Process (executeFile, forkProcess, getAnyProcessStatus, createSession)@@ -50,6 +51,7 @@ import Graphics.X11.Xlib import Graphics.X11.Xlib.Extras (Event) import Data.Typeable+import Data.List ((\\)) import Data.Maybe (isJust) import Data.Monoid import Data.Maybe (fromMaybe)@@ -412,18 +414,20 @@ recompile force = io $ do dir <- getXMonadDir let binn = "xmonad-"++arch++"-"++os- bin = dir ++ "/" ++ binn- base = dir ++ "/" ++ "xmonad"+ bin = dir </> binn+ base = dir </> "xmonad" err = base ++ ".errors" src = base ++ ".hs"+ lib = dir </> "lib"+ libTs <- mapM getModTime . Prelude.filter isSource =<< allFiles lib srcT <- getModTime src binT <- getModTime bin- if (force || srcT > binT)+ if (force || srcT > binT || any (binT<) libTs) then do -- temporarily disable SIGCHLD ignoring: uninstallSignalHandlers status <- bracket (openFile err WriteMode) hClose $ \h -> do- waitForProcess =<< runProcess "ghc" ["--make", "xmonad.hs", "-i", "-fforce-recomp", "-v0", "-o",binn] (Just dir)+ waitForProcess =<< runProcess "ghc" ["--make", "xmonad.hs", "-i", "-ilib", "-fforce-recomp", "-v0", "-o",binn] (Just dir) Nothing Nothing Nothing (Just h) -- re-enable SIGCHLD:@@ -443,6 +447,12 @@ return (status == ExitSuccess) else return True where getModTime f = catch (Just <$> getModificationTime f) (const $ return Nothing)+ isSource = flip elem [".hs",".lhs",".hsc"]+ allFiles t = do+ let prep = map (t</>) . Prelude.filter (`notElem` [".",".."])+ cs <- prep <$> catch (getDirectoryContents t) (\_ -> return [])+ ds <- filterM doesDirectoryExist cs+ concat . ((cs \\ ds):) <$> mapM allFiles ds -- | Conditionally run an action, using a @Maybe a@ to decide. whenJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
XMonad/ManageHook.hs view
@@ -45,6 +45,8 @@ composeAll :: [ManageHook] -> ManageHook composeAll = mconcat +infix 0 -->+ -- | @p --> x@. If @p@ returns 'True', execute the 'ManageHook'. (-->) :: Query Bool -> ManageHook -> ManageHook p --> f = p >>= \b -> if b then f else mempty@@ -72,7 +74,7 @@ (internAtom d "_NET_WM_NAME" False >>= getTextProperty d w) `catch` \_ -> getTextProperty d w wM_NAME extract prop = do l <- wcTextPropertyToTextList d prop- return $ if null l then "" else head l+ return $ if null l then "" else head l io $ bracket getProp (xFree . tp_value) extract `catch` \_ -> return "" -- | Return the application name.
XMonad/StackSet.hs view
@@ -35,7 +35,7 @@ -- * Operations on the current stack -- $stackOperations peek, index, integrate, integrate', differentiate,- focusUp, focusDown, focusUp', focusDown', focusMaster, focusWindow,+ focusUp, focusDown, focusUp', focusDown', focusMaster, focusMaster', focusWindow, tagMember, renameTag, ensureTags, member, findTag, mapWorkspace, mapLayout, -- * Modifying the stackset -- $modifyStackset@@ -524,9 +524,13 @@ -- | /O(s)/. Set focus to the master window. focusMaster :: StackSet i l a s sd -> StackSet i l a s sd-focusMaster = modify' $ \c -> case c of- Stack _ [] _ -> c- Stack t ls rs -> Stack x [] (xs ++ t : rs) where (x:xs) = reverse ls+focusMaster = modify' focusMaster'++-- | Variant of 'focusMaster' that works on a+-- 'Stack' rather than an entire 'StackSet'.+focusMaster' :: Stack a -> Stack a+focusMaster' c@(Stack _ [] _) = c+focusMaster' (Stack t ls rs) = Stack x [] (xs ++ t : rs) where (x:xs) = reverse ls -- -- ---------------------------------------------------------------------
man/xmonad.hs view
@@ -8,6 +8,7 @@ -- import XMonad+import Data.Monoid import System.Exit import qualified XMonad.StackSet as W@@ -67,73 +68,76 @@ ------------------------------------------------------------------------ -- Key bindings. Add, modify or remove key bindings here. ---myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $+myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ -- launch a terminal- [ ((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)+ [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) -- launch dmenu- , ((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")+ , ((modm, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") -- launch gmrun- , ((modMask .|. shiftMask, xK_p ), spawn "gmrun")+ , ((modm .|. shiftMask, xK_p ), spawn "gmrun") -- close focused window- , ((modMask .|. shiftMask, xK_c ), kill)+ , ((modm .|. shiftMask, xK_c ), kill) -- Rotate through the available layout algorithms- , ((modMask, xK_space ), sendMessage NextLayout)+ , ((modm, xK_space ), sendMessage NextLayout) -- Reset the layouts on the current workspace to default- , ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)+ , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) -- Resize viewed windows to the correct size- , ((modMask, xK_n ), refresh)+ , ((modm, xK_n ), refresh) -- Move focus to the next window- , ((modMask, xK_Tab ), windows W.focusDown)+ , ((modm, xK_Tab ), windows W.focusDown) -- Move focus to the next window- , ((modMask, xK_j ), windows W.focusDown)+ , ((modm, xK_j ), windows W.focusDown) -- Move focus to the previous window- , ((modMask, xK_k ), windows W.focusUp )+ , ((modm, xK_k ), windows W.focusUp ) -- Move focus to the master window- , ((modMask, xK_m ), windows W.focusMaster )+ , ((modm, xK_m ), windows W.focusMaster ) -- Swap the focused window and the master window- , ((modMask, xK_Return), windows W.swapMaster)+ , ((modm, xK_Return), windows W.swapMaster) -- Swap the focused window with the next window- , ((modMask .|. shiftMask, xK_j ), windows W.swapDown )+ , ((modm .|. shiftMask, xK_j ), windows W.swapDown ) -- Swap the focused window with the previous window- , ((modMask .|. shiftMask, xK_k ), windows W.swapUp )+ , ((modm .|. shiftMask, xK_k ), windows W.swapUp ) -- Shrink the master area- , ((modMask, xK_h ), sendMessage Shrink)+ , ((modm, xK_h ), sendMessage Shrink) -- Expand the master area- , ((modMask, xK_l ), sendMessage Expand)+ , ((modm, xK_l ), sendMessage Expand) -- Push window back into tiling- , ((modMask, xK_t ), withFocused $ windows . W.sink)+ , ((modm, xK_t ), withFocused $ windows . W.sink) -- Increment the number of windows in the master area- , ((modMask , xK_comma ), sendMessage (IncMasterN 1))+ , ((modm , xK_comma ), sendMessage (IncMasterN 1)) -- Deincrement the number of windows in the master area- , ((modMask , xK_period), sendMessage (IncMasterN (-1)))+ , ((modm , xK_period), sendMessage (IncMasterN (-1))) - -- toggle the status bar gap- -- TODO, update this binding with avoidStruts , ((modMask , xK_b ),+ -- Toggle the status bar gap+ -- Use this binding with avoidStruts from Hooks.ManageDocks.+ -- See also the statusBar function from Hooks.DynamicLog.+ --+ -- , ((modm , xK_b ), sendMessage ToggleStruts) -- Quit xmonad- , ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))+ , ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) -- Restart xmonad- , ((modMask , xK_q ), spawn "xmonad --recompile; xmonad --restart")+ , ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart") ] ++ @@ -141,7 +145,7 @@ -- mod-[1..9], Switch to workspace N -- mod-shift-[1..9], Move client to workspace N --- [((m .|. modMask, k), windows $ f i)+ [((m .|. modm, k), windows $ f i) | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] ++@@ -150,7 +154,7 @@ -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 --- [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))+ [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f)) | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..] , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] @@ -158,18 +162,18 @@ ------------------------------------------------------------------------ -- Mouse bindings: default actions bound to mouse events ---myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $+myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $ -- mod-button1, Set the window to floating mode and move by dragging- [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w- >> windows W.shiftMaster))+ [ ((modm, button1), (\w -> focus w >> mouseMoveWindow w+ >> windows W.shiftMaster)) -- mod-button2, Raise the window to the top of the stack- , ((modMask, button2), (\w -> focus w >> windows W.shiftMaster))+ , ((modm, button2), (\w -> focus w >> windows W.shiftMaster)) -- mod-button3, Set the window to floating mode and resize by dragging- , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w- >> windows W.shiftMaster))+ , ((modm, button3), (\w -> focus w >> mouseResizeWindow w+ >> windows W.shiftMaster)) -- you may also bind events to the mouse scroll wheel (button4 and button5) ]
xmonad-bluetilebranch.cabal view
@@ -1,5 +1,5 @@ name: xmonad-bluetilebranch-version: 0.8.1+version: 0.8.1.3 homepage: http://xmonad.org synopsis: A tiling window manager description: This is a modified version of xmonad used by Bluetile.@@ -34,7 +34,7 @@ exposed: False if flag(small_base)- build-depends: base < 4 && >=3, containers, directory, process+ build-depends: base < 4 && >=3, containers, directory, process, filepath else build-depends: base < 3 build-depends: X11>=1.4.3, mtl, unix, random