diff options
-rw-r--r-- | lib/Phi/Widgets/X11/Taskbar.hs | 3 | ||||
-rw-r--r-- | lib/Phi/X11.hs | 17 | ||||
-rw-r--r-- | lib/Phi/X11/AtomList.hs | 2 | ||||
-rw-r--r-- | lib/Phi/X11/Atoms.hs | 1 | ||||
-rw-r--r-- | lib/Phi/X11/Util.hs | 16 | ||||
-rw-r--r-- | phi.cabal | 4 | ||||
-rw-r--r-- | src/SystrayHelper.hs | 1 |
7 files changed, 23 insertions, 21 deletions
diff --git a/lib/Phi/Widgets/X11/Taskbar.hs b/lib/Phi/Widgets/X11/Taskbar.hs index 964fd39..359fbc6 100644 --- a/lib/Phi/Widgets/X11/Taskbar.hs +++ b/lib/Phi/Widgets/X11/Taskbar.hs @@ -40,6 +40,7 @@ import Graphics.Rendering.Pango.Layout import Graphics.Rendering.Pango.Font import Graphics.XHB +import Graphics.XHB.Connection import Graphics.XHB.Gen.Xproto import Codec.Binary.UTF8.String @@ -624,7 +625,7 @@ getWindowGeometry x11 window = fi :: (Integral a, Num b) => a -> b fi = fromIntegral -showWindow :: Connection -> Atoms -> WINDOW -> IO Bool +showWindow :: ConnectionClass c r => c -> Atoms -> WINDOW -> IO Bool showWindow conn atoms window = do states <- liftM (map (fromXid . toXid) . fromMaybe []) $ getProperty32 conn window (atom_NET_WM_STATE atoms) transientFor <- liftM (map fromIntegral . fromMaybe []) $ getProperty32 conn window (atomWM_TRANSIENT_FOR atoms) diff --git a/lib/Phi/X11.hs b/lib/Phi/X11.hs index e08c990..9b93328 100644 --- a/lib/Phi/X11.hs +++ b/lib/Phi/X11.hs @@ -9,6 +9,7 @@ module Phi.X11 ( X11(..) ) where import Graphics.XHB hiding (Window) +import Graphics.XHB.Connection import qualified Graphics.XHB.Connection.Open as CO import Graphics.XHB.Gen.Xinerama import Graphics.XHB.Gen.Xproto hiding (Window) @@ -54,11 +55,8 @@ instance Display X11 where type Window X11 = WINDOW -newtype XEvent = XEvent SomeEvent deriving Typeable +newtype XEvent = XEvent SomeEvent deriving (Show, Typeable) -instance Show XEvent where - show _ = "XEvent (..)" - data XMessage = UpdateScreens [(Rectangle, WINDOW)] deriving (Show, Typeable) @@ -274,11 +272,12 @@ handleConfigureNotifyEvent MkConfigureNotifyEvent { window_ConfigureNotifyEvent let rect = panelBounds config screenarea win = panelWindow panel - liftIO $ configureWindow conn win $ toValueParam [ (ConfigWindowX, fromIntegral $ rect_x rect) - , (ConfigWindowY, fromIntegral $ rect_y rect) - , (ConfigWindowWidth, fromIntegral $ rect_width rect) - , (ConfigWindowHeight, fromIntegral $ rect_height rect) - ] + liftIO $ configureWindow conn $ MkConfigureWindow win (toMask [ConfigWindowX, ConfigWindowY, ConfigWindowWidth, ConfigWindowHeight]) $ + toValueParam [ (ConfigWindowX, fromIntegral $ rect_x rect) + , (ConfigWindowY, fromIntegral $ rect_y rect) + , (ConfigWindowWidth, fromIntegral $ rect_width rect) + , (ConfigWindowHeight, fromIntegral $ rect_height rect) + ] panel' <- createPanel win screenarea setPanelProperties panel' diff --git a/lib/Phi/X11/AtomList.hs b/lib/Phi/X11/AtomList.hs index 1d751bc..0ab3372 100644 --- a/lib/Phi/X11/AtomList.hs +++ b/lib/Phi/X11/AtomList.hs @@ -6,7 +6,7 @@ module Phi.X11.AtomList ( atoms import Language.Haskell.TH -import Graphics.XHB +import Graphics.XHB.Connection import Graphics.XHB.Connection.Open atoms :: [String] diff --git a/lib/Phi/X11/Atoms.hs b/lib/Phi/X11/Atoms.hs index 0a8f66a..16945bf 100644 --- a/lib/Phi/X11/Atoms.hs +++ b/lib/Phi/X11/Atoms.hs @@ -10,6 +10,7 @@ import Data.List import Language.Haskell.TH import Graphics.XHB +import Graphics.XHB.Connection import Graphics.XHB.Gen.Xproto import Phi.X11.AtomList diff --git a/lib/Phi/X11/Util.hs b/lib/Phi/X11/Util.hs index a86cafd..e1daba5 100644 --- a/lib/Phi/X11/Util.hs +++ b/lib/Phi/X11/Util.hs @@ -29,7 +29,7 @@ import Graphics.XHB.Gen.Xproto import System.IO.Unsafe -getReply' :: String -> Receipt a -> IO a +getReply' :: ConnectionClass c r => String -> r a -> IO a getReply' m = getReply >=> return . fromRight where fromRight (Left _) = error m @@ -60,17 +60,17 @@ castToCChar input = unsafePerformIO $ with input $ \ptr -> peekArray (sizeOf input) (castPtr ptr) -changeProperty8 :: Connection -> PropMode -> WINDOW -> ATOM -> ATOM -> [Word8] -> IO () +changeProperty8 :: ConnectionClass c r => c -> PropMode -> WINDOW -> ATOM -> ATOM -> [Word8] -> IO () changeProperty8 conn mode win prop proptype propdata = changeProperty conn $ MkChangeProperty mode win prop proptype 8 (genericLength propdata) propdata -changeProperty16 :: Connection -> PropMode -> WINDOW -> ATOM -> ATOM -> [Word16] -> IO () +changeProperty16 :: ConnectionClass c r => c -> PropMode -> WINDOW -> ATOM -> ATOM -> [Word16] -> IO () changeProperty16 conn mode win prop proptype propdata = changeProperty conn $ MkChangeProperty mode win prop proptype 16 (genericLength propdata) (castWord16to8 propdata) -changeProperty32 :: Connection -> PropMode -> WINDOW -> ATOM -> ATOM -> [Word32] -> IO () +changeProperty32 :: ConnectionClass c r => c -> PropMode -> WINDOW -> ATOM -> ATOM -> [Word32] -> IO () changeProperty32 conn mode win prop proptype propdata = changeProperty conn $ MkChangeProperty mode win prop proptype 32 (genericLength propdata) (castWord32to8 propdata) -getProperty' :: Word8 -> Connection -> WINDOW -> ATOM -> IO (Maybe [Word8]) +getProperty' :: ConnectionClass c r => Word8 -> c -> WINDOW -> ATOM -> IO (Maybe [Word8]) getProperty' format conn win prop = do reply <- getProperty conn (MkGetProperty False win prop (fromXid xidNone) 0 4) >>= getReply case reply of @@ -84,13 +84,13 @@ getProperty' format conn win prop = do Right (MkGetPropertyReply {format_GetPropertyReply = format'}) | format' /= format -> return Nothing Right (MkGetPropertyReply {value_GetPropertyReply = value}) -> return $ Just value -getProperty8 :: Connection -> WINDOW -> ATOM -> IO (Maybe [Word8]) +getProperty8 :: ConnectionClass c r => c -> WINDOW -> ATOM -> IO (Maybe [Word8]) getProperty8 = getProperty' 8 -getProperty16 :: Connection -> WINDOW -> ATOM -> IO (Maybe [Word16]) +getProperty16 :: ConnectionClass c r => c -> WINDOW -> ATOM -> IO (Maybe [Word16]) getProperty16 conn win prop = getProperty' 16 conn win prop >>= return . fmap castWord8to16 -getProperty32 :: Connection -> WINDOW -> ATOM -> IO (Maybe [Word32]) +getProperty32 :: ConnectionClass c r => c -> WINDOW -> ATOM -> IO (Maybe [Word32]) getProperty32 conn win prop = getProperty' 32 conn win prop >>= return . fmap castWord8to32 @@ -12,7 +12,7 @@ build-type: Simple library - build-depends: base >= 4, template-haskell, stm, array, containers, transformers, mtl, utf8-string, time, old-locale, xhb, + build-depends: base >= 4, template-haskell, stm, array, containers, transformers, mtl, utf8-string, time, old-locale, xhb >= 0.5, xhb-native, cairo, pango, unix, data-accessor, arrows, CacheArrow exposed-modules: Phi.Types, Phi.Phi, Phi.Panel, Phi.Widget, Phi.Border, Phi.X11 Phi.Widgets.AlphaBox, Phi.Widgets.Clock, Phi.Widgets.X11.Taskbar @@ -24,7 +24,7 @@ library ghc-options: -fspec-constr-count=16 -threaded executable PhiSystrayHelper - build-depends: base >= 4, template-haskell, xhb + build-depends: base >= 4, template-haskell, xhb >= 0.5, xhb-native hs-source-dirs: src, lib main-is: SystrayHelper.hs other-modules: Phi.X11.AtomList, Phi.X11.Atoms, Phi.X11.Util diff --git a/src/SystrayHelper.hs b/src/SystrayHelper.hs index 962d45d..fb9adcf 100644 --- a/src/SystrayHelper.hs +++ b/src/SystrayHelper.hs @@ -3,6 +3,7 @@ import Control.Monad import Data.Maybe import Graphics.XHB +import Graphics.XHB.Connection import Graphics.XHB.Gen.Xproto import qualified Graphics.XHB.Connection.Open as CO |