neiam
/gitgud-plasmoid
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
Live wall window: a translucent toggle
495b6f2 · gmorell · 2026-11-03 19:52
Message
{commit_body(@commit)}
Files changed
modified
README.md
+1
−1
@@ -74,7 +74,7 @@ Every job running right now, a card each, tiled to fill the space, the same as G
| 74 | 74 | |
| 75 | 75 | There are two ways to show it: |
| 76 | 76 | |
| 77 | −- **A window**: the grid button in the popup's header, or right-click the widget → **Open Live CI Wall**. **F11** (or the button) toggles full screen and **Esc** leaves it. Put it on a spare monitor. | |
| 77 | +- **A window**: the grid button in the popup's header, or right-click the widget → **Open Live CI Wall**. **F11** (or the button) toggles full screen and **Esc** leaves it. **T** (or the opacity button) makes the background see-through and the cards partly so, keeping the text solid. KWin's own *More Actions → Opacity* fades the text too. Put it on a spare monitor. | |
| 78 | 78 | - **Wall mode on the desktop**: *Behavior → Live CI wall → Wall mode*. A widget on the desktop (not in a panel) then *is* the wall. Resize it as large as you like. In a panel the widget stays the circles. |
| 79 | 79 | |
| 80 | 80 | It needs a GitGud server with the `/api/mobile/v1/ci/live` endpoint and a token with `ci:read`. |
modified
contents/config/main.xml
+5
−0
@@ -42,6 +42,11 @@
| 42 | 42 | <default>false</default> |
| 43 | 43 | </entry> |
| 44 | 44 | |
| 45 | + <entry name="wallTranslucent" type="Bool"> | |
| 46 | + <label>Live wall window: see-through background</label> | |
| 47 | + <default>false</default> | |
| 48 | + </entry> | |
| 49 | + | |
| 45 | 50 | <entry name="desktopWall" type="Bool"> |
| 46 | 51 | <label>On the desktop, the widget is the live CI wall</label> |
| 47 | 52 | <default>false</default> |
modified
contents/ui/WallCard.qml
+3
−1
@@ -13,6 +13,7 @@ Rectangle {
| 13 | 13 | |
| 14 | 14 | required property var card |
| 15 | 15 | property double now: Date.now() |
| 16 | + property bool translucent: false | |
| 16 | 17 | |
| 17 | 18 | readonly property var job: card.job || {} |
| 18 | 19 | readonly property var run: card.run || {} |
@@ -25,7 +26,8 @@ Rectangle {
| 25 | 26 | readonly property bool tiny: height < gu * 3 |
| 26 | 27 | |
| 27 | 28 | radius: Kirigami.Units.cornerRadius |
| 28 | − color: Kirigami.Theme.alternateBackgroundColor | |
| 29 | + color: translucent ? Qt.alpha(Kirigami.Theme.alternateBackgroundColor, 0.6) | |
| 30 | + : Kirigami.Theme.alternateBackgroundColor | |
| 29 | 31 | border.width: 1 |
| 30 | 32 | border.color: Qt.alpha(Kirigami.Theme.neutralTextColor, 0.35) |
| 31 | 33 | clip: true |
modified
contents/ui/WallView.qml
+13
−0
@@ -25,6 +25,7 @@ Item {
| 25 | 25 | // Leave the header's window-only buttons out on the desktop. |
| 26 | 26 | property bool inWindow: false |
| 27 | 27 | property bool fullScreen: false |
| 28 | + property bool translucent: false | |
| 28 | 29 | signal toggleFullScreen() |
| 29 | 30 | |
| 30 | 31 | readonly property var cards: store.wallCards |
@@ -145,6 +146,17 @@ Item {
| 145 | 146 | PlasmaComponents3.ToolTip { text: i18n("Newest first (R flips the order)") } |
| 146 | 147 | } |
| 147 | 148 | |
| 149 | + PlasmaComponents3.ToolButton { | |
| 150 | + visible: wall.inWindow | |
| 151 | + checkable: true | |
| 152 | + checked: wall.translucent | |
| 153 | + icon.name: "transform-opacity" | |
| 154 | + text: i18n("Translucent") | |
| 155 | + display: QQC2.AbstractButton.IconOnly | |
| 156 | + onClicked: wall.store.setWallTranslucent(!wall.translucent) | |
| 157 | + PlasmaComponents3.ToolTip { text: i18n("See-through background (T)") } | |
| 158 | + } | |
| 159 | + | |
| 148 | 160 | PlasmaComponents3.ToolButton { |
| 149 | 161 | visible: wall.inWindow |
| 150 | 162 | icon.name: wall.fullScreen ? "view-restore" : "view-fullscreen" |
@@ -207,6 +219,7 @@ Item {
| 207 | 219 | Layout.fillHeight: true |
| 208 | 220 | Layout.preferredHeight: 1 // equal shares |
| 209 | 221 | card: modelData |
| 222 | + translucent: wall.translucent | |
| 210 | 223 | now: wall.store.now |
| 211 | 224 | } |
| 212 | 225 | } |
modified
contents/ui/WallWindow.qml
+7
−1
@@ -20,7 +20,11 @@ Window {
| 20 | 20 | |
| 21 | 21 | Kirigami.Theme.colorSet: Kirigami.Theme.Window |
| 22 | 22 | Kirigami.Theme.inherit: false |
| 23 | − color: Kirigami.Theme.backgroundColor | |
| 23 | + // Translucent: the background goes see-through (and the cards | |
| 24 | + // partly), the text stays solid — unlike KWin's window opacity, | |
| 25 | + // which fades everything. T toggles it. | |
| 26 | + readonly property bool translucent: store.wallTranslucent | |
| 27 | + color: translucent ? Qt.alpha(Kirigami.Theme.backgroundColor, 0.35) : Kirigami.Theme.backgroundColor | |
| 24 | 28 | |
| 25 | 29 | readonly property bool fullScreen: visibility === Window.FullScreen |
| 26 | 30 |
@@ -43,12 +47,14 @@ Window {
| 43 | 47 | |
| 44 | 48 | Shortcut { sequences: [StandardKey.FullScreen]; onActivated: wallWindow.toggleFullScreen() } |
| 45 | 49 | Shortcut { sequence: "Escape"; enabled: wallWindow.fullScreen; onActivated: wallWindow.showNormal() } |
| 50 | + Shortcut { sequence: "T"; onActivated: wallWindow.store.setWallTranslucent(!wallWindow.store.wallTranslucent) } | |
| 46 | 51 | Shortcut { sequence: "R"; onActivated: wallWindow.store.setWallNewestFirst(!wallWindow.store.wallNewestFirst) } |
| 47 | 52 | |
| 48 | 53 | WallView { |
| 49 | 54 | anchors.fill: parent |
| 50 | 55 | store: wallWindow.store |
| 51 | 56 | inWindow: true |
| 57 | + translucent: wallWindow.translucent | |
| 52 | 58 | fullScreen: wallWindow.fullScreen |
| 53 | 59 | onToggleFullScreen: wallWindow.toggleFullScreen() |
| 54 | 60 | } |
modified
contents/ui/main.qml
+5
−0
@@ -85,6 +85,7 @@ PlasmoidItem {
| 85 | 85 | property var wallWindow: null |
| 86 | 86 | readonly property string wallScope: Plasmoid.configuration.wallScope |
| 87 | 87 | readonly property bool wallNewestFirst: Plasmoid.configuration.wallNewestFirst |
| 88 | + readonly property bool wallTranslucent: Plasmoid.configuration.wallTranslucent | |
| 88 | 89 | readonly property bool wallConfigured: api.configured |
| 89 | 90 | readonly property bool onDesktop: Plasmoid.formFactor !== PlasmaCore.Types.Horizontal |
| 90 | 91 | && Plasmoid.formFactor !== PlasmaCore.Types.Vertical |
@@ -702,6 +703,10 @@ PlasmoidItem {
| 702 | 703 | Plasmoid.configuration.wallNewestFirst = newest |
| 703 | 704 | } |
| 704 | 705 | |
| 706 | + function setWallTranslucent(on) { | |
| 707 | + Plasmoid.configuration.wallTranslucent = on | |
| 708 | + } | |
| 709 | + | |
| 705 | 710 | function wallWebUrl() { |
| 706 | 711 | return api.wallUrl(wallScope) |
| 707 | 712 | } |
Parents: 9cdb602