An (outdated) collection of plugins for Qtile.
git clone https://github.com/m-col/qtools
Files | Refs | Readme

Commit 9c187729b40c53ccccee7d67228f06e36156bebd
Parent: 72368620f29d913fb5c655ee53e874ed6fd9a1e5
Author: mcol <mcol@posteo.net>
Date: 2020-10-04 19:34:56 +0100
Committer: mcol <mcol@posteo.net>
Committed: 2020-10-04 19:34:56 +0100

update borders

qtools/borders/cde.py Modified

@@ -7,7 +7,7 @@
 import xcffib
 
 
-def cde(self, inner_w, inner_h, borderwidths, bordercolors):
+def cde(self, colors, borderwidth, width, height):
     """
     The "CDE" style is based on the window decorations used by the Common Desktop
     Environment, and has a 3D bevelled look.
@@ -25,43 +25,51 @@
      |__|________|__|
 
     """
-    if len(bordercolors) < 3:
-        self.set_attribute(borderpixel=bordercolors[0])
+    if not colors or not borderwidth:
         return
 
-    core = self.conn.conn.core
-    self.borderwidth = borderwidth = sum(borderwidths)
-    outer_w = inner_w + borderwidth * 2
-    outer_h = inner_h + borderwidth * 2
+    if isinstance(colors, str):
+        self.set_attribute(borderpixel=self.conn.color_pixel(colors))
+        return
 
+    if len(colors) < 3:
+        self.set_attribute(borderpixel=self.conn.color_pixel(colors[0]))
+        return
+
+    colors = [self.conn.color_pixel(c) for c in colors]
+    core = self.conn.conn.core
+    outer_w = width + borderwidth * 2
+    outer_h = height + borderwidth * 2
     pixmap = self.conn.conn.generate_id()
-    core.CreatePixmap(
-        self.conn.default_screen.root_depth, pixmap, self.wid, outer_w, outer_h
-    )
     gc = self.conn.conn.generate_id()
-    core.CreateGC(gc, pixmap, xcffib.xproto.GC.Foreground, [bordercolors[2]])
-    rect = xcffib.xproto.RECTANGLE.synthetic(0, 0, outer_w, outer_h)
-    core.PolyFillRectangle(pixmap, gc, 1, [rect])
-
-    core.ChangeGC(gc, xcffib.xproto.GC.Foreground, [bordercolors[1]])
-    rect = xcffib.xproto.RECTANGLE.synthetic(2, 2, outer_w - 4, outer_h - 4)
-    core.PolyFillRectangle(pixmap, gc, 1, [rect])
-
-    core.ChangeGC(gc, xcffib.xproto.GC.Foreground, [bordercolors[0]])
-    rect = xcffib.xproto.RECTANGLE.synthetic(
-        borderwidth - 1, borderwidth - 1, inner_w + 2, inner_h + 2
-    )
-    core.PolyFillRectangle(pixmap, gc, 1, [rect])
-
-    shadows, light = _lines(borderwidth, outer_w, outer_h)
-    core.PolyLine(0, pixmap, gc, 18, shadows)
-    core.ChangeGC(gc, xcffib.xproto.GC.Foreground, [bordercolors[2]])
-    core.PolyLine(0, pixmap, gc, 15, light)
-
-    self.set_borderpixmap(pixmap, gc, outer_w, outer_h)
-    core.FreePixmap(pixmap)
-    core.FreeGC(gc)
-    return
+
+    try:
+        core.CreatePixmap(
+            self.conn.default_screen.root_depth, pixmap, self.wid, outer_w, outer_h
+        )
+        core.CreateGC(gc, pixmap, xcffib.xproto.GC.Foreground, [colors[2]])
+        rect = xcffib.xproto.RECTANGLE.synthetic(0, 0, outer_w, outer_h)
+        core.PolyFillRectangle(pixmap, gc, 1, [rect])
+
+        core.ChangeGC(gc, xcffib.xproto.GC.Foreground, [colors[1]])
+        rect = xcffib.xproto.RECTANGLE.synthetic(2, 2, outer_w - 4, outer_h - 4)
+        core.PolyFillRectangle(pixmap, gc, 1, [rect])
+
+        core.ChangeGC(gc, xcffib.xproto.GC.Foreground, [colors[0]])
+        rect = xcffib.xproto.RECTANGLE.synthetic(
+            borderwidth - 1, borderwidth - 1, width + 2, height + 2
+        )
+        core.PolyFillRectangle(pixmap, gc, 1, [rect])
+
+        shadows, light = _lines(borderwidth, outer_w, outer_h)
+        core.PolyLine(0, pixmap, gc, 18, shadows)
+        core.ChangeGC(gc, xcffib.xproto.GC.Foreground, [colors[2]])
+        core.PolyLine(0, pixmap, gc, 15, light)
+        self.set_borderpixmap(pixmap, gc, borderwidth, width, height)
+
+    finally:
+        core.FreePixmap(pixmap)
+        core.FreeGC(gc)
 
 
 @functools.lru_cache()

qtools/borders/borders.py Modified

@@ -30,6 +30,7 @@
     Available styles:
 
         - frame
+        - CDE
 
     Parameters
     ----------
@@ -38,9 +39,7 @@
 
     """
     style = style.lower()
-    if style not in _style_map:
-        logger.exception("qtools.borders: style {0} not found.".format(style))
-        return
-
-    xcbq.Window.paint_borders = _style_map[style]
-    return
+    if style in _style_map:
+        xcbq.Window.paint_borders = _style_map[style]
+    else:
+        logger.exception("qtools.borders: style {} not found.".format(style))