tianbar-1.1.0.1: src/System/Tianbar.hs
module System.Tianbar where
import Data.GI.Base
import qualified Data.Text as T
import GI.Gdk.Enums hiding (WindowTypeToplevel)
import GI.Gdk.Objects.Display
import GI.Gdk.Objects.Screen
import GI.Gdk.Structs.Rectangle
import GI.Gtk.Enums
import qualified GI.Gtk.Functions as GtkFunctions
import GI.Gtk.Objects.Box
import GI.Gtk.Objects.Container
import GI.Gtk.Objects.Widget
import GI.Gtk.Objects.Window
import System.Environment (getArgs, getProgName)
import System.Tianbar.Configuration
import System.Tianbar.StrutProperties
import System.Tianbar.WebKit
topStrut :: Rectangle -> IO StrutProperties
topStrut rect = do
mX <- get rect rectangleX
mY <- get rect rectangleY
mW <- get rect rectangleWidth
let x = fromIntegral mX
w = fromIntegral mW - 1
h = barHeight + fromIntegral mY
in return (0, 0, h, 0, 0, 0, 0, 0, x, x + w, 0, 0)
sizeMainWindow :: Window -> IO ()
sizeMainWindow window = do
Just disp <- displayGetDefault
screen <- displayGetDefaultScreen disp
monitorSize <- screenGetMonitorGeometry screen (fromIntegral myMonitor)
monitorX <- get monitorSize rectangleX
monitorY <- get monitorSize rectangleY
monitorW <- get monitorSize rectangleWidth
let windowX = monitorX
let windowY = monitorY
let windowWidth = fromIntegral monitorW
let windowHeight = fromIntegral barHeight
windowSetDefaultSize window (fromIntegral monitorW) (fromIntegral barHeight)
windowMove window windowX windowY
windowResize window windowWidth windowHeight
strut <- topStrut monitorSize
setStrutProperties window strut
main :: IO ()
main = do
progName <- getProgName
args <- getArgs
_ <- GtkFunctions.init $ Just $ map T.pack (progName : args)
Just disp <- displayGetDefault
screen <- displayGetDefaultScreen disp
window <- windowNew WindowTypeToplevel
widgetSetName window $ T.pack appName
windowSetTypeHint window WindowTypeHintDock
windowSetScreen window screen
_ <- onWidgetRealize window $ sizeMainWindow window
_ <- onScreenMonitorsChanged screen $ sizeMainWindow window
box <- boxNew OrientationHorizontal 0
containerAdd window box
wk <- tianbarWebkitNew
boxPackStart box wk True True 0
widgetShow window
widgetShow box
GtkFunctions.main