From 6118589248b955e5916b237952d94474e658dc5f Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 11 Sep 2025 15:48:44 +0200 Subject: [PATCH] workaround for hyprland's 1px dead right edge --- .config/quickshell/ii/modules/bar/Bar.qml | 10 +++++++++- .config/quickshell/ii/modules/common/Config.qml | 3 +++ .../ii/modules/common/widgets/RoundCorner.qml | 5 +++++ .../ii/modules/screenCorners/ScreenCorners.qml | 6 ++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.config/quickshell/ii/modules/bar/Bar.qml b/.config/quickshell/ii/modules/bar/Bar.qml index 01d794f4f..71852e3cd 100644 --- a/.config/quickshell/ii/modules/bar/Bar.qml +++ b/.config/quickshell/ii/modules/bar/Bar.qml @@ -75,10 +75,17 @@ Scope { right: true } + margins { + right: (Config.options.interactions.deadPixelWorkaround.enable && barRoot.anchors.right) * -1 + } + MouseArea { id: hoverRegion hoverEnabled: true - anchors.fill: parent + anchors { + fill: parent + rightMargin: (Config.options.interactions.deadPixelWorkaround.enable && barRoot.anchors.right) * 1 + } Item { id: hoverMaskRegion @@ -100,6 +107,7 @@ Scope { bottom: undefined topMargin: (Config?.options.bar.autoHide.enable && !mustShow) ? -Appearance.sizes.barHeight : 0 bottomMargin: 0 + rightMargin: (Config.options.interactions.deadPixelWorkaround.enable && barRoot.anchors.right) * -1 } Behavior on anchors.topMargin { animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) diff --git a/.config/quickshell/ii/modules/common/Config.qml b/.config/quickshell/ii/modules/common/Config.qml index dc20e9195..2fc3d285b 100644 --- a/.config/quickshell/ii/modules/common/Config.qml +++ b/.config/quickshell/ii/modules/common/Config.qml @@ -226,6 +226,9 @@ Singleton { property int mouseScrollFactor: 120 property int touchpadScrollFactor: 450 } + property JsonObject deadPixelWorkaround: JsonObject { // Hyprland leaves out 1 pixel on the right for interactions + property bool enable: true + } } property JsonObject language: JsonObject { diff --git a/.config/quickshell/ii/modules/common/widgets/RoundCorner.qml b/.config/quickshell/ii/modules/common/widgets/RoundCorner.qml index 80aa62f2e..785e01bce 100644 --- a/.config/quickshell/ii/modules/common/widgets/RoundCorner.qml +++ b/.config/quickshell/ii/modules/common/widgets/RoundCorner.qml @@ -6,6 +6,10 @@ Item { enum CornerEnum { TopLeft, TopRight, BottomLeft, BottomRight } property var corner: RoundCorner.CornerEnum.TopLeft + property alias leftVisualMargin: shape.anchors.leftMargin + property alias topVisualMargin: shape.anchors.topMargin + property alias rightVisualMargin: shape.anchors.rightMargin + property alias bottomVisualMargin: shape.anchors.bottomMargin property int implicitSize: 25 property color color: "#000000" @@ -23,6 +27,7 @@ Item { property bool isRight: isTopRight || isBottomRight Shape { + id: shape anchors { top: root.isTop ? parent.top : undefined bottom: root.isBottom ? parent.bottom : undefined diff --git a/.config/quickshell/ii/modules/screenCorners/ScreenCorners.qml b/.config/quickshell/ii/modules/screenCorners/ScreenCorners.qml index f62794f47..92b8627ab 100644 --- a/.config/quickshell/ii/modules/screenCorners/ScreenCorners.qml +++ b/.config/quickshell/ii/modules/screenCorners/ScreenCorners.qml @@ -41,13 +41,19 @@ Scope { bottom: cornerWidget.isBottomLeft || cornerWidget.isBottomRight right: cornerWidget.isTopRight || cornerWidget.isBottomRight } + margins { + right: (Config.options.interactions.deadPixelWorkaround.enable && cornerPanelWindow.anchors.right) * -1 + } implicitWidth: cornerWidget.implicitWidth implicitHeight: cornerWidget.implicitHeight RoundCorner { id: cornerWidget + anchors.fill: parent corner: cornerPanelWindow.corner + rightVisualMargin: (Config.options.interactions.deadPixelWorkaround.enable && cornerPanelWindow.anchors.right) * 1 + implicitSize: Appearance.rounding.screenRounding implicitHeight: Math.max(implicitSize, sidebarCornerOpenInteractionLoader.implicitHeight) implicitWidth: Math.max(implicitSize, sidebarCornerOpenInteractionLoader.implicitWidth)