diff --git a/data/icons/system-suspend-disabled.svg b/data/icons/system-suspend-disabled.svg
new file mode 100644
index 0000000..a823785
--- /dev/null
+++ b/data/icons/system-suspend-disabled.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/data/quick-settings.gresource.xml b/data/quick-settings.gresource.xml
index 44799c0..e58d821 100644
--- a/data/quick-settings.gresource.xml
+++ b/data/quick-settings.gresource.xml
@@ -8,6 +8,7 @@
icons/dark-mode.svg
icons/system-suspend.svg
+ icons/system-suspend-disabled.svg
icons/quick-settings.svg
icons/rotation-allowed.svg
icons/rotation-locked.svg
diff --git a/po/POTFILES b/po/POTFILES
index 2eb7841..99529a2 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -11,6 +11,7 @@ src/Services/UserManager.vala
src/Widgets/CurrentUser.vala
src/Widgets/DarkModeToggle.vala
src/Widgets/EndSessionDialog.vala
+src/Widgets/PreventSleepToggle.vala
src/Widgets/RotationToggle.vala
src/Widgets/SessionBox.vala
src/Widgets/SettingsToggle.vala
diff --git a/src/PopoverWidget.vala b/src/PopoverWidget.vala
index 826ffae..8859281 100644
--- a/src/PopoverWidget.vala
+++ b/src/PopoverWidget.vala
@@ -15,9 +15,6 @@ public class QuickSettings.PopoverWidget : Gtk.Box {
private UserList accounts_view;
private Gtk.Button current_user_button;
- private uint suspend_cookie = 0;
- private uint idle_cookie = 0;
-
public PopoverWidget (Wingpanel.IndicatorManager.ServerType server_type) {
Object (server_type: server_type);
}
@@ -41,10 +38,7 @@ public class QuickSettings.PopoverWidget : Gtk.Box {
settings_uri = "settings://input/keyboard/behavior"
};
- var prevent_sleep_toggle = new SettingsToggle (
- new ThemedIcon ("weather-clear-night"),
- _("Prevent Sleep")
- );
+ var prevent_sleep_toggle = new PreventSleepToggle ();
var toggle_box = new Gtk.FlowBox () {
column_spacing = 6,
@@ -149,30 +143,6 @@ public class QuickSettings.PopoverWidget : Gtk.Box {
}
});
- prevent_sleep_toggle.notify["active"].connect ((obj, pspec) => {
- var _prevent_sleep_toggle = (SettingsToggle) obj;
- unowned var application = (Gtk.Application) GLib.Application.get_default ();
-
- if (_prevent_sleep_toggle.active && suspend_cookie == 0 && idle_cookie == 0) {
- suspend_cookie = application.inhibit (
- (Gtk.Window) get_toplevel (),
- Gtk.ApplicationInhibitFlags.SUSPEND,
- "Prevent session from suspending"
- );
- idle_cookie = application.inhibit (
- (Gtk.Window) get_toplevel (),
- Gtk.ApplicationInhibitFlags.IDLE,
- "Prevent session from idle"
- );
- } else if (!_prevent_sleep_toggle.active && suspend_cookie > 0 && idle_cookie > 0) {
- application.uninhibit (suspend_cookie);
- application.uninhibit (idle_cookie);
-
- suspend_cookie = 0;
- idle_cookie = 0;
- }
- });
-
current_user_button.clicked.connect (() => {
stack.visible_child = accounts_view;
});
diff --git a/src/Widgets/PreventSleepToggle.vala b/src/Widgets/PreventSleepToggle.vala
new file mode 100644
index 0000000..728bed3
--- /dev/null
+++ b/src/Widgets/PreventSleepToggle.vala
@@ -0,0 +1,48 @@
+/*
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ * SPDX-FileCopyrightText: 2025 elementary, Inc. (https://elementary.io)
+ */
+
+public class QuickSettings.PreventSleepToggle: SettingsToggle {
+ private uint suspend_cookie = 0;
+ private uint idle_cookie = 0;
+
+ public PreventSleepToggle () {
+ Object (
+ icon: new ThemedIcon ("system-suspend-symbolic"),
+ label: _("Prevent Sleep")
+ );
+ }
+
+ construct {
+ settings_uri = "settings://power";
+
+ notify["active"].connect ((obj, pspec) => {
+ var _prevent_sleep_toggle = (SettingsToggle) obj;
+ unowned var application = (Gtk.Application) GLib.Application.get_default ();
+
+ if (_prevent_sleep_toggle.active && suspend_cookie == 0 && idle_cookie == 0) {
+ suspend_cookie = application.inhibit (
+ (Gtk.Window) get_toplevel (),
+ Gtk.ApplicationInhibitFlags.SUSPEND,
+ "Prevent session from suspending"
+ );
+ idle_cookie = application.inhibit (
+ (Gtk.Window) get_toplevel (),
+ Gtk.ApplicationInhibitFlags.IDLE,
+ "Prevent session from idle"
+ );
+
+ icon = new ThemedIcon ("system-suspend-disabled-symbolic");
+ } else if (!_prevent_sleep_toggle.active && suspend_cookie > 0 && idle_cookie > 0) {
+ application.uninhibit (suspend_cookie);
+ application.uninhibit (idle_cookie);
+
+ icon = new ThemedIcon ("system-suspend-symbolic");
+
+ suspend_cookie = 0;
+ idle_cookie = 0;
+ }
+ });
+ }
+}
diff --git a/src/meson.build b/src/meson.build
index ca4a48e..f4becd8 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -21,6 +21,7 @@ sources = [
'Widgets' / 'CurrentUser.vala',
'Widgets' / 'DarkModeToggle.vala',
'Widgets' / 'EndSessionDialog.vala',
+ 'Widgets' / 'PreventSleepToggle.vala',
'Widgets' / 'RotationToggle.vala',
'Widgets' / 'SettingsToggle.vala',
'Widgets' / 'SessionBox.vala',