summaryrefslogtreecommitdiff
path: root/drw/x.go
diff options
context:
space:
mode:
Diffstat (limited to 'drw/x.go')
-rw-r--r--drw/x.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/drw/x.go b/drw/x.go
new file mode 100644
index 0000000..70b29da
--- /dev/null
+++ b/drw/x.go
@@ -0,0 +1,68 @@
+package drw // import "hhvn.uk/hbspbar/drw"
+
+import (
+ "os"
+ "image/color"
+
+ "hhvn.uk/hbspbar/config"
+ "hhvn.uk/hbspbar/common"
+
+ "github.com/jezek/xgb"
+ "github.com/jezek/xgb/xproto"
+ "github.com/jezek/xgbutil"
+ "github.com/jezek/xgbutil/xgraphics"
+ "github.com/BurntSushi/freetype-go/freetype"
+ "github.com/BurntSushi/freetype-go/freetype/truetype"
+)
+
+var InitErr error
+var X *xgb.Conn
+var XU *xgbutil.XUtil
+var Screen *xproto.ScreenInfo
+
+var font *truetype.Font
+var ft *freetype.Context
+
+func init() {
+ var err error
+
+ X, err = xgb.NewConn()
+ if err != nil {
+ InitErr = err
+ return
+ }
+
+ XU, err = xgbutil.NewConnXgb(X)
+ if err != nil {
+ InitErr = err
+ return
+ }
+
+ setup := xproto.Setup(X)
+ Screen = setup.DefaultScreen(X)
+
+ read, err := os.Open(config.Font)
+ if err != nil {
+ InitErr = common.Perror("os.Open", err)
+ return
+ }
+
+ font, err = xgraphics.ParseFont(read)
+ if err != nil {
+ InitErr = common.Perror("xgraphics.ParseFont", err)
+ return
+ }
+
+ ft = freetype.NewContext()
+ ft.SetDPI(72)
+ ft.SetFont(font)
+ ft.SetFontSize(config.FontSize)
+}
+
+func int2rgb(argb uint32) (color.RGBA) {
+ return color.RGBA{
+ B: uint8( argb & 0x000000ff),
+ G: uint8((argb & 0x0000ff00) >> 8),
+ R: uint8((argb & 0x00ff0000) >> 16),
+ A: uint8((argb & 0xff000000) >> 24) }
+}