import QtQuick import qs.config import qs.services SettingsPage { title: "Startup & Services" lede: "A clear view of the background tools that make the desktop feel complete." function status(active: bool): string { return active ? "Running" : "Stopped"; } Item { width: parent.width implicitHeight: refresh.implicitHeight SettingsButton { id: refresh anchors.right: parent.right text: SystemSettings.busy ? "Refreshing…" : "Refresh" enabled: !SystemSettings.busy onClicked: SystemSettings.refresh() } } SettingsCard { title: "Your services" SettingRow { label: "Nextcloud" detail: "File synchronization and tray status" controlWidth: 190 Row { anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { anchors.verticalCenter: parent.verticalCenter text: status(SystemSettings.nextcloudActive) color: Theme.fgDim font.family: Theme.fontFamily font.pixelSize: Theme.fontSize } SettingsButton { text: "Open" onClicked: SystemSettings.openApplication("nextcloud") } } } SettingRow { label: "RustDesk" detail: "Remote access through the enabled system service" controlWidth: 190 Row { anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { anchors.verticalCenter: parent.verticalCenter text: status(SystemSettings.rustdeskActive) color: Theme.fgDim font.family: Theme.fontFamily font.pixelSize: Theme.fontSize } SettingsButton { text: "Open" onClicked: SystemSettings.openApplication("rustdesk") } } } SettingRow { label: "KDE Connect" detail: "Phone pairing, clipboard, files, and remote controls" divider: false controlWidth: 190 Row { anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { anchors.verticalCenter: parent.verticalCenter text: status(SystemSettings.kdeconnectActive) color: Theme.fgDim font.family: Theme.fontFamily font.pixelSize: Theme.fontSize } SettingsButton { text: "Open" onClicked: SystemSettings.openApplication("kdeconnect") } } } } SettingsCard { title: "Desktop foundation" TextRow { label: "Hyprpaper" detail: "Wallpaper service" value: status(SystemSettings.hyprpaperActive) } TextRow { label: "Hypridle" detail: "Idle and lock policy" value: status(SystemSettings.hypridleActive) } TextRow { label: "Vicinae" detail: "Spotlight-style launcher daemon" value: status(SystemSettings.vicinaeActive) divider: false } } SettingsCard { title: "Fedora system settings" subtitle: "Panels this app does not own, because they configure system services rather than the desktop. Each row opens the panel that actually owns it. Printers and online accounts live with the rest of the network hardware, on Network & Devices." // This was one row listing five subjects and opening the network panel // regardless. Naming a panel and then not opening it is worse than not // offering it: it looks like a broken button rather than a deliberate // hand-off, and someone looking for printers had to know to navigate // once GNOME Settings appeared on the wrong page. ActionRow { label: "Users" detail: "Accounts, passwords, and automatic login" action: "Open users" onTriggered: SystemSettings.openGnomePanel("system", "users") } ActionRow { label: "Sharing" detail: "Remote desktop, media sharing, and remote login" action: "Open sharing" onTriggered: SystemSettings.openGnomePanel("sharing") } ActionRow { label: "Colour profiles" detail: "ICC profiles for displays, printers, and scanners" action: "Open colour" onTriggered: SystemSettings.openGnomePanel("color") } ActionRow { label: "Digital wellbeing" detail: "Screen time and break reminders" action: "Open wellbeing" divider: false onTriggered: SystemSettings.openGnomePanel("wellbeing") } } }