From 0aa9fdd81cb4ae58d39f09396f29827092b6e49c Mon Sep 17 00:00:00 2001 From: crecher Date: Wed, 21 Oct 2026 22:54:08 +0000 Subject: feat: window borders thank you xorg for making this easy still fucking hate you tho Signed-off-by: crecher --- config.go | 3 +++ main.go | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/config.go b/config.go index daa6b45..e05855e 100644 --- a/config.go +++ b/config.go @@ -16,6 +16,9 @@ var selBg uint32 = 0x285577 var selFg uint32 = 0xEEEEEE var fontName = "JetBrainsMono Nerd Font:size=16" var tagCount = 9 +var borderWidth int = 2 +var borderColor uint32 = 0x444444 +var borderFocus uint32 = 0x285577 // shows focused window title var windowTitle = 0 diff --git a/main.go b/main.go index 272b100..698bafa 100644 --- a/main.go +++ b/main.go @@ -340,7 +340,18 @@ func handleKeyPress(conn *xgb.Conn, e xproto.KeyPressEvent) { } } +func updateBorders(conn *xgb.Conn) { + for _, c := range clients { + color := borderColor + if c.Win == focused { + color = borderFocus + } + xproto.ChangeWindowAttributes(conn, c.Win, xproto.CwBorderPixel, []uint32{color}) + } +} + func setInputFocus(conn *xgb.Conn, win xproto.Window) { + updateBorders(conn) if win == 0 { return } @@ -421,6 +432,7 @@ func switchTags(conn *xgb.Conn, tags BitMask) { } func dim(v int) uint32 { + v -= borderWidth * 2 if v < 1 { return 1 } @@ -807,6 +819,7 @@ func updateWindows(conn *xgb.Conn) { // log.Println(client.Tags & GlobalTags) if (client.Tags & GlobalTags) >= 1 { xproto.MapWindow(conn, client.Win) + xproto.ConfigureWindow(conn, client.Win, xproto.ConfigWindowBorderWidth, []uint32{uint32(borderWidth)}) ActiveClients = append(ActiveClients, client) // log.Println("Mapping window", client.Win) } @@ -824,4 +837,5 @@ func updateWindows(conn *xgb.Conn) { } refocus(conn) + updateBorders(conn) } -- cgit v1.2.3