diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-07-19 16:59:32 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-07-19 16:59:32 +1000 |
| commit | 58826b7deb07f187d2c2c8cac3bf651a008b4646 (patch) | |
| tree | 2df9f0fa10739beb363ac1da518bb467e996c32a /modules/launcher/services/Actions.qml | |
| parent | launcher: better scheme search (diff) | |
| download | caelestia-shell-58826b7deb07f187d2c2c8cac3bf651a008b4646.tar.gz caelestia-shell-58826b7deb07f187d2c2c8cac3bf651a008b4646.tar.bz2 caelestia-shell-58826b7deb07f187d2c2c8cac3bf651a008b4646.zip | |
internal: move launcher stuff into subfolders
Diffstat (limited to 'modules/launcher/services/Actions.qml')
| -rw-r--r-- | modules/launcher/services/Actions.qml | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/modules/launcher/services/Actions.qml b/modules/launcher/services/Actions.qml new file mode 100644 index 0000000..be1fc72 --- /dev/null +++ b/modules/launcher/services/Actions.qml @@ -0,0 +1,155 @@ +pragma Singleton + +import ".." +import qs.services +import qs.config +import qs.utils +import Quickshell +import QtQuick + +Searcher { + id: root + + readonly property list<Action> actions: [ + Action { + name: qsTr("Calculator") + desc: qsTr("Do simple math equations (powered by Qalc)") + icon: "calculate" + + function onClicked(list: AppList): void { + root.autocomplete(list, "calc"); + } + }, + Action { + name: qsTr("Scheme") + desc: qsTr("Change the current colour scheme") + icon: "palette" + + function onClicked(list: AppList): void { + root.autocomplete(list, "scheme"); + } + }, + Action { + name: qsTr("Wallpaper") + desc: qsTr("Change the current wallpaper") + icon: "image" + + function onClicked(list: AppList): void { + root.autocomplete(list, "wallpaper"); + } + }, + Action { + name: qsTr("Variant") + desc: qsTr("Change the current scheme variant") + icon: "colors" + + function onClicked(list: AppList): void { + root.autocomplete(list, "variant"); + } + }, + Action { + name: qsTr("Transparency") + desc: qsTr("Change shell transparency") + icon: "opacity" + disabled: true + + function onClicked(list: AppList): void { + root.autocomplete(list, "transparency"); + } + }, + Action { + name: qsTr("Light") + desc: qsTr("Change the scheme to light mode") + icon: "light_mode" + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Colours.setMode("light"); + } + }, + Action { + name: qsTr("Dark") + desc: qsTr("Change the scheme to dark mode") + icon: "dark_mode" + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Colours.setMode("dark"); + } + }, + Action { + name: qsTr("Shutdown") + desc: qsTr("Shutdown the system") + icon: "power_settings_new" + disabled: !Config.launcher.enableDangerousActions + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Quickshell.execDetached(["systemctl", "poweroff"]); + } + }, + Action { + name: qsTr("Reboot") + desc: qsTr("Reboot the system") + icon: "cached" + disabled: !Config.launcher.enableDangerousActions + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Quickshell.execDetached(["systemctl", "reboot"]); + } + }, + Action { + name: qsTr("Logout") + desc: qsTr("Log out of the current session") + icon: "exit_to_app" + disabled: !Config.launcher.enableDangerousActions + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Quickshell.execDetached(["loginctl", "terminate-user", ""]); + } + }, + Action { + name: qsTr("Lock") + desc: qsTr("Lock the current session") + icon: "lock" + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Quickshell.execDetached(["loginctl", "lock-session"]); + } + }, + Action { + name: qsTr("Sleep") + desc: qsTr("Suspend then hibernate") + icon: "bedtime" + + function onClicked(list: AppList): void { + list.visibilities.launcher = false; + Quickshell.execDetached(["systemctl", "suspend-then-hibernate"]); + } + } + ] + + function transformSearch(search: string): string { + return search.slice(Config.launcher.actionPrefix.length); + } + + function autocomplete(list: AppList, text: string): void { + list.search.text = `${Config.launcher.actionPrefix}${text} `; + } + + list: actions.filter(a => !a.disabled) + useFuzzy: Config.launcher.useFuzzy.actions + + component Action: QtObject { + required property string name + required property string desc + required property string icon + property bool disabled + + function onClicked(list: AppList): void { + } + } +} |