// SPDX-License-Identifier: GPL-2.0-only // Copyright (C) 2026 Danilo M. // // Shutdown, restart, sleep and hibernate. Each button is disabled when SDDM // reports the action is unavailable. import QtQuick import QtQuick.Controls.Basic import QtQuick.Effects Row { id: bar spacing: 8 readonly property var actions: [ { icon: "../icons/power.svg", label: "Shut down", enabled: sddm.canPowerOff, run: function() { sddm.powerOff() } }, { icon: "../icons/reboot.svg", label: "Restart", enabled: sddm.canReboot, run: function() { sddm.reboot() } }, { icon: "../icons/suspend.svg", label: "Sleep", enabled: sddm.canSuspend, run: function() { sddm.suspend() } }, { icon: "../icons/hibernate.svg", label: "Hibernate", enabled: sddm.canHibernate, run: function() { sddm.hibernate() } } ] Repeater { model: bar.actions delegate: Item { width: 44 height: 44 opacity: modelData.enabled ? 1 : 0.35 Rectangle { anchors.fill: parent radius: 8 color: config.stringValue("surface0") opacity: mouse.containsMouse && modelData.enabled ? 1 : 0 } Image { id: icon anchors.centerIn: parent width: 22 height: 22 source: modelData.icon visible: false } MultiEffect { anchors.fill: icon source: icon colorization: 1.0 colorizationColor: mouse.containsMouse && modelData.enabled ? config.stringValue("accent") : config.stringValue("subtext0") } MouseArea { id: mouse anchors.fill: parent hoverEnabled: true enabled: modelData.enabled onClicked: modelData.run() } ToolTip.visible: mouse.containsMouse && modelData.enabled ToolTip.text: modelData.label ToolTip.delay: 400 } } }