packages feed

bluetile 0.5 → 0.5.1

raw patch · 10 files changed

+98/−33 lines, 10 filessetup-changed

Files

Setup.lhs view
@@ -13,15 +13,16 @@ > > myPostCopy :: Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO () > myPostCopy _ copyflags pkgdesc lbi = do->   let dirs = absoluteInstallDirs pkgdesc lbi (fromFlag $ copyDest copyflags)->   libExecHook dirs->   insertPath dirs+>   let copyDirs = absoluteInstallDirs pkgdesc lbi (fromFlag $ copyDest copyflags)+>   libExecHook copyDirs+>   let installDirs = absoluteInstallDirs pkgdesc lbi NoCopyDest+>   insertPath copyDirs installDirs > > myPostInst :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO () > myPostInst _ _ pkgdesc lbi = do >   let dirs = absoluteInstallDirs pkgdesc lbi NoCopyDest >   libExecHook dirs->   insertPath dirs+>   insertPath dirs dirs > > -- hook to move helper binaries to the libexec directory > libExecHook :: InstallDirs String -> IO ()@@ -33,11 +34,10 @@ >     renameFile (bdir </> binary) (lexecdir </> binary) > > -- hook to insert path to system wide configuration-> insertPath :: InstallDirs String -> IO ()-> insertPath dirs = do->   let ddir = datadir dirs->   let userConfigTemplate = ddir </> "etc" </> "bluetilerc_user_template"->   let pathToSystemConfig = ddir </> "etc" </> "bluetilerc"+> insertPath :: InstallDirs String -> InstallDirs String -> IO ()+> insertPath copyDirs installDirs = do+>   let userConfigTemplate = datadir copyDirs </> "etc" </> "bluetilerc_user_template"+>   let pathToSystemConfig = datadir installDirs </> "etc" </> "bluetilerc" >   contents <- readFileStrict userConfigTemplate >   let contentsPatched = subRegex (mkRegex "__PATH_TO_BLUETILERC__") contents pathToSystemConfig >   writeFile userConfigTemplate contentsPatched
bluetile.cabal view
@@ -1,5 +1,5 @@ Name:                bluetile-Version:             0.5+Version:             0.5.1 homepage:            http://www.bluetile.org/ synopsis:            full-featured tiling for the GNOME desktop environment description:@@ -22,6 +22,7 @@                      src/XMonad/Actions/WindowMenu.hs,                      src/XMonad/Hooks/CurrentWorkspaceOnTop.hs,                      src/XMonad/Hooks/EwmhDesktops.hs,+                     src/XMonad/Hooks/Minimize.hs                      src/XMonad/Hooks/PositionStoreHooks.hs,                      src/XMonad/Layout/BorderResize.hs,                      src/XMonad/Layout/ButtonDecoration.hs,@@ -71,7 +72,7 @@     Ghc-Options:       -fno-warn-unused-do-bind  Executable gnome-bluetile-session-  Buildable:         False+  Buildable:         True   Hs-Source-Dirs:    gnome-bluetile-session   Main-is:           GnomeBluetileSession.hs   Build-Depends:     base>=3, base<5, filepath, unix
bluetiledock/BluetileDock.hs view
@@ -147,7 +147,7 @@     onClicked configBtn $ do         home <- getEnv "HOME"         let userConfig = home </> ".bluetilerc"-        spawnPipe $ "gedit " ++ userConfig+        spawnPipe $ "gnome-open " ++ userConfig         return ()      -- quit button
src/Config.hs view
@@ -44,8 +44,9 @@ import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers import XMonad.Hooks.PositionStoreHooks-import XMonad.Hooks.RestoreMinimized+import XMonad.Hooks.Minimize import XMonad.Hooks.ServerMode+import XMonad.Hooks.SetWMName import XMonad.Hooks.WorkspaceByPos  import XMonad.Config.Gnome@@ -123,7 +124,7 @@      -- maximizing and minimizing     , ("key_maximize_window"                , withFocused (sendMessage . maximizeRestore))-    , ("key_minimize_window"                , withFocused (\f -> sendMessage (MinimizeWin f)))+    , ("key_minimize_window"                , withFocused minimizeWindow)     , ("key_restore_minimized_window"       , sendMessage RestoreNextMinimizedWin)     ]     ++@@ -189,13 +190,13 @@ createXMonadConfig bluetilerc =     defaultConfig         { modMask = defaultModifierBRC bluetilerc,-          startupHook = ewmhDesktopsStartup,+          startupHook = ewmhDesktopsStartup >> setWMName "LG3D",           manageHook = bluetileManageHook,           layoutHook = bluetileLayoutHook,           logHook = currentWorkspaceOnTop >> ewmhDesktopsLogHook,           handleEventHook = ewmhDesktopsEventHook                                 `mappend` fullscreenEventHook-                                `mappend` restoreMinimizedEventHook+                                `mappend` minimizeEventHook                                 `mappend` serverModeEventHook' bluetileCommands                                 `mappend` positionStoreEventHook,           workspaces = bluetileWorkspaces,
src/XMonad/Actions/WindowMenu.hs view
@@ -62,7 +62,7 @@         actions = [ ("Cancel menu", return ())                   , ("Close"      , kill)                   , ("Maximize"   , sendMessage $ maximizeRestore w)-                  , ("Minimize"   , sendMessage $ MinimizeWin w)+                  , ("Minimize"   , minimizeWindow w)                   ] ++                   [ ("Move to " ++ tag, windows $ W.shift tag)                     | tag <- tags ]
src/XMonad/Hooks/CurrentWorkspaceOnTop.hs view
@@ -26,6 +26,7 @@ import qualified XMonad.StackSet as S import Control.Monad(when) import System.Posix.Env+import qualified Data.Map as M  -- $usage -- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:@@ -48,12 +49,18 @@     let (CWOTS lastTag) = maybe (CWOTS "") read cwotsEnvM     let curTag = S.tag . S.workspace . S.current $ ws     when (curTag /= lastTag) $ do+        -- the following is more or less a reimplementation of what's happening in "XMonad.Operation"         let s = S.current ws             wsp = S.workspace s             viewrect = screenRect $ S.screenDetail s-            tmpStack = S.stack . S.workspace $ s-        (rs, _) <- runLayout wsp { S.stack = tmpStack } viewrect-        let wins = map fst rs+            tmpStack = (S.stack wsp) >>= S.filter (`M.notMember` S.floating ws)+        (rs, ml') <- runLayout wsp { S.stack = tmpStack } viewrect+        updateLayout curTag ml'+        let this = S.view curTag ws+            fltWins = filter (flip M.member (S.floating ws)) $ S.index this+            wins = fltWins ++ (map fst rs)  -- order: first all floating windows, then the order the layout returned+        -- end of reimplementation+         when (not . null $ wins) $ do             io $ raiseWindow d (head wins)  -- raise first window of current workspace to the very top,             io $ restackWindows d wins      -- then use restackWindows to let all other windows from the workspace follow
+ src/XMonad/Hooks/Minimize.hs view
@@ -0,0 +1,53 @@+----------------------------------------------------------------------------+-- |+-- Module      :  XMonad.Hooks.Minimize+-- Copyright   :  (c) Justin Bogner 2010+-- License     :  BSD3-style (see LICENSE)+--+-- Maintainer  :  Justin Bogner <mail@justinbogner.com>+-- Stability   :  unstable+-- Portability :  not portable+--+-- Handles window manager hints to minimize and restore windows. Use+-- this with XMonad.Layout.Minimize.+--+-----------------------------------------------------------------------------++module XMonad.Hooks.Minimize+    ( -- * Usage+      -- $usage+      minimizeEventHook+    ) where++import Data.Monoid+import Control.Monad(when)++import XMonad+import XMonad.Layout.Minimize++-- $usage+-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:+--+-- > import XMonad.Hooks.Minimize+-- > import XMonad.Layout.Minimize+-- >+-- > myHandleEventHook = minimizeEventHook+-- > myLayout = minimize (Tall 1 (3/100) (1/2)) ||| Full ||| etc..+-- > main = xmonad defaultConfig { layoutHook = myLayout+-- >                             , handleEventHook = myHandleEventHook }++minimizeEventHook :: Event -> X All+minimizeEventHook (ClientMessageEvent {ev_window = w,+                                       ev_message_type = mt,+                                       ev_data = dt}) = do+    a_aw <- getAtom "_NET_ACTIVE_WINDOW"+    a_cs <- getAtom "WM_CHANGE_STATE"++    when (mt == a_aw) $ sendMessage (RestoreMinimizedWin w)+    when (mt == a_cs) $ do+      let message = fromIntegral . head $ dt+      when (message == normalState) $ sendMessage (RestoreMinimizedWin w)+      when (message == iconicState) $ minimizeWindow w++    return (All True)+minimizeEventHook _ = return (All True)
src/XMonad/Layout/DecorationAddons.hs view
@@ -62,7 +62,7 @@                              then focus mainw >> sendMessage (maximizeRestore mainw) >> return True                   else if (fi distFromRight >= minimizeButtonOffset &&                            fi distFromRight <= minimizeButtonOffset + buttonSize)-                             then focus mainw >> sendMessage (MinimizeWin mainw) >> return True+                             then focus mainw >> minimizeWindow mainw >> return True                   else return False     action 
src/XMonad/Layout/ImageButtonDecoration.hs view
@@ -158,7 +158,7 @@                              then focus mainw >> sendMessage (maximizeRestore mainw) >> return True                   else if (fi distFromRight >= minimizeButtonOffset &&                            fi distFromRight <= minimizeButtonOffset + buttonSize)-                             then focus mainw >> sendMessage (MinimizeWin mainw) >> return True+                             then focus mainw >> minimizeWindow mainw >> return True                   else return False     action 
src/XMonad/Layout/Minimize.hs view
@@ -18,7 +18,8 @@         -- * Usage         -- $usage         minimize,-        MinimizeMsg(..)+        minimizeWindow,+        MinimizeMsg(RestoreMinimizedWin,RestoreNextMinimizedWin)     ) where  import XMonad@@ -47,7 +48,7 @@ -- -- In the key-bindings, do something like: ----- >        , ((modm,               xK_m     ), withFocused (\f -> sendMessage (MinimizeWin f)))+-- >        , ((modm,               xK_m     ), withFocused minimizeWindow) -- >        , ((modm .|. shiftMask, xK_m     ), sendMessage RestoreNextMinimizedWin) -- -- The first action will minimize the focused window, while the second one will restore@@ -62,8 +63,8 @@ -- the keyboard. Include 'BW.boringWindows' in your layout hook and see the -- documentation of "XMonad.Layout.BoringWindows" on how to modify your keybindings. ----- Also see "XMonad.Hooks.RestoreMinimized" if you want to be able to restore--- minimized windows from your taskbar.+-- Also see "XMonad.Hooks.Minimize" if you want to be able to minimize+-- and restore windows from your taskbar.  data Minimize a = Minimize [Window] (M.Map Window W.RationalRect) deriving ( Read, Show ) minimize :: LayoutClass l Window => l Window -> ModifiedLayout Minimize l Window@@ -75,6 +76,8 @@                     deriving (Typeable, Eq) instance Message MinimizeMsg +minimizeWindow :: Window -> X ()+minimizeWindow w = sendMessage (MinimizeWin w) >> BW.focusDown  setMinimizedState :: Window -> Int -> (CLong -> [CLong] -> [CLong]) -> X () setMinimizedState win st f = do@@ -103,34 +106,34 @@      handleMess (Minimize minimized unfloated) m         | Just (MinimizeWin w) <- fromMessage m, not (w `elem` minimized) = do-                BW.focusDown                 setMinimized w                 ws <- gets windowset                 case M.lookup w (W.floating ws) of                   Nothing -> return $ Just $ Minimize (w:minimized) unfloated                   Just r -> do-                    (windows . W.sink) w+                    modify (\s -> s { windowset = W.sink w ws})                     return $ Just $ Minimize (w:minimized) (M.insert w r unfloated)         | Just (RestoreMinimizedWin w) <- fromMessage m = do             setNotMinimized w             case M.lookup w unfloated of               Nothing -> return $ Just $ Minimize (minimized \\ [w]) unfloated               Just r -> do-                (windows . (W.float w)) r+                ws <- gets windowset+                modify (\s -> s { windowset = W.float w r ws})                 return $ Just $ Minimize (minimized \\ [w]) (M.delete w unfloated)-        | Just RestoreNextMinimizedWin <- fromMessage m =+        | Just RestoreNextMinimizedWin <- fromMessage m = do+          ws <- gets windowset           if not (null minimized)             then case M.lookup (head minimized) unfloated of               Nothing -> do                 let w = head minimized                 setNotMinimized w-                focus w+                modify (\s -> s { windowset = W.focusWindow w ws})                 return $ Just $ Minimize (tail minimized) unfloated               Just r -> do                 let w = head minimized                 setNotMinimized w-                (windows . (W.float w)) r-                focus w+                modify (\s -> s { windowset = (W.focusWindow w . W.float w r) ws})                 return $ Just $ Minimize (tail minimized) (M.delete w unfloated)             else return Nothing         | Just BW.UpdateBoring <- fromMessage m = do