67 lines
2.6 KiB
Diff
67 lines
2.6 KiB
Diff
diff --git a/libqtile/backend/wayland/window.py b/libqtile/backend/wayland/window.py
|
|
index 8f2c12a..563cc83 100644
|
|
--- a/libqtile/backend/wayland/window.py
|
|
+++ b/libqtile/backend/wayland/window.py
|
|
@@ -114,6 +114,7 @@ class Window(typing.Generic[S], _Base, base.Window, HasListeners):
|
|
self.x = 0
|
|
self.y = 0
|
|
self._opacity: float = 1.0
|
|
+ self._rounding: int = 0
|
|
self._wm_class: str | None = None
|
|
self._idle_inhibitors_count: int = 0
|
|
self._urgent = False
|
|
@@ -389,16 +390,43 @@ class Window(typing.Generic[S], _Base, base.Window, HasListeners):
|
|
|
|
@opacity.setter
|
|
def opacity(self, opacity: float) -> None:
|
|
- if opacity < 1.0:
|
|
+ if self.container.node:
|
|
+ buf = SceneBuffer.from_node(self.container.node)
|
|
+ if buf:
|
|
+ buf.set_opacity(opacity)
|
|
+ else:
|
|
+ logger.warning(
|
|
+ f"Failed to turn node {self.container.node} into a buffer!"
|
|
+ )
|
|
+ else:
|
|
logger.warning(
|
|
- "Sorry, transparency is not yet supported by the wlroots API used by "
|
|
- "Qtile. Transparency can only be achieved if the client sets it."
|
|
+ "Sorry, opacity is not implemented for this window type."
|
|
)
|
|
# wlroots' scene graph doesn't support setting the opacity of trees/nodes by
|
|
# the compositor. See: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3393
|
|
# If/when that becomes supported, this warning can be removed.
|
|
self._opacity = opacity
|
|
|
|
+ @property
|
|
+ def rounding(self) -> int:
|
|
+ return self._rounding
|
|
+
|
|
+ @rounding.setter
|
|
+ def rounding(self, radii: int) -> None:
|
|
+ if self.container.node:
|
|
+ buf = SceneBuffer.from_node(self.container.node)
|
|
+ if buf:
|
|
+ buf.set_corner_radius(radii)
|
|
+ else:
|
|
+ logger.warning(
|
|
+ f"Failed to turn node {self.container.node} into a buffer!"
|
|
+ )
|
|
+ else:
|
|
+ logger.warning(
|
|
+ "Sorry, rounding is not implemented for this window type."
|
|
+ )
|
|
+
|
|
+
|
|
@property
|
|
def floating(self) -> bool:
|
|
return self._float_state != FloatStates.NOT_FLOATING
|
|
@@ -921,6 +949,7 @@ class Internal(_Base, base.Internal):
|
|
self._width: int = width
|
|
self._height: int = height
|
|
self._opacity: float = 1.0
|
|
+ self._rounding: int = 0
|
|
|
|
# Store this object on the scene node for finding the window under the pointer.
|
|
self.wlr_buffer, self.surface = self._new_buffer(init=True)
|