summaryrefslogtreecommitdiff
path: root/raveos-theme/gnome/theme-data/extensions/installed/ShutdownTimer@deminder/modules/session-mode-aware.js
blob: cb6e562ae99f59b082eb080c1f054c5e9b33327b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;
  }
}