aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/wb-icon1
-rw-r--r--modules/custom/presentation.jsonc6
-rw-r--r--styles/modules.css7
3 files changed, 14 insertions, 0 deletions
diff --git a/bin/wb-icon b/bin/wb-icon
index b8bb098..ebbd57d 100755
--- a/bin/wb-icon
+++ b/bin/wb-icon
@@ -144,6 +144,7 @@ def selftest():
presentation_icons = [
"preferences-desktop-screensaver", # off
"x-office-presentation", # on
+ "input-gaming", # held on by a running game
]
mail_icons = ["mail-unread"]
diff --git a/modules/custom/presentation.jsonc b/modules/custom/presentation.jsonc
index 8544b26..a6dd20a 100644
--- a/modules/custom/presentation.jsonc
+++ b/modules/custom/presentation.jsonc
@@ -10,6 +10,12 @@
// normal state before anything has written one, and a file cannot report
// whether a watcher is alive anyway.
//
+// A third class, gaming, covers the mode being held on by a running game: the
+// shell's detector owns status.gaming and presentation is the OR of the two,
+// so a game turns the mode on without touching the manual half. The click is
+// inert in that state, statusctl refuses the toggle, because the detector
+// would reassert it within its poll anyway.
+//
// statusctl talks to files under XDG_RUNTIME_DIR rather than to quickshell,
// so this keeps working while the shell is down.
// The format is a single space, and it has to be something. It defaults to
diff --git a/styles/modules.css b/styles/modules.css
index 3aa55c6..b0e2f2a 100644
--- a/styles/modules.css
+++ b/styles/modules.css
@@ -246,3 +246,10 @@
#custom-presentation.activated {
background-image: url("@ICON:x-office-presentation@");
}
+
+/* A running game holds presentation on by itself, through a separate state
+ * file the shell's detector owns. It gets its own icon because the click is
+ * inert here: the mode is not off until the game exits. */
+#custom-presentation.gaming {
+ background-image: url("@ICON:input-gaming@");
+}