summaryrefslogtreecommitdiff
path: root/raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js')
-rw-r--r--raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js b/raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js
new file mode 100644
index 0000000..cb6e562
--- /dev/null
+++ b/raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js
@@ -0,0 +1,41 @@
+// SPDX-FileCopyrightText: 2023 Deminder <tremminder@gmail.com>
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+
+export function currentSessionMode() {
+ return Main.sessionMode.currentMode;
+}
+
+/**
+ * Check if we want to show foreground activity
+ */
+export function foregroundActive() {
+ // ubuntu22.04 uses 'ubuntu' as 'user' sessionMode
+ return Main.sessionMode.currentMode !== 'unlock-dialog';
+}
+
+/**
+ * Observe foreground activity changes
+ *
+ * @param {object} obj bind obj as observer
+ * @param {Function} callback called upon change
+ */
+export function observeForegroundActive(obj, callback) {
+ if (!obj._sessionModeSignalId) {
+ obj._sessionModeSignalId = Main.sessionMode.connect('updated', () => {
+ callback(foregroundActive());
+ });
+ }
+ callback(foregroundActive());
+}
+
+/**
+ * Unobserve session mode
+ */
+export function unobserveForegroundActive(obj) {
+ if (obj._sessionModeSignalId) {
+ Main.sessionMode.disconnect(obj._sessionModeSignalId);
+ delete obj._sessionModeSignalId;
+ }
+}