It is the system settings app for this desktop, so it is named the way one is. The window is "Settings", the titlebar is "Settings", the wordmark above the search field is gone, the sidebar's last row is "About", and the status line reads "Desktop is healthy". Prose followed the same rule. Forty-odd strings explained what "Panama" does -- "Panama never animates while idle", "Restore Panama defaults", "Panama looks in ~/Pictures/Wallpapers" -- which is how a product describes itself, not how a settings panel describes a setting. They now say what happens. No user-visible "Panama" remains anywhere in the app. Two consequences worth naming: The SUPER+I shortcut's description is user-visible, because the Shortcuts page is generated from it, so that is renamed too. Rebindings are keyed by shipped chord rather than description, so no existing override is orphaned by this. Three contracts matched the window by title and one matched that shortcut by description; all four are updated. There are no Hyprland window rules keyed on the title, so nothing about the window's placement changes. The desktop entry is now Name=Settings, but the FILE keeps its panama-settings name, as does the icon: the dock pins applications by desktop id, and renaming the file would silently unpin it. dock-pins-contract covers exactly that. The dated design docs under docs/superpowers keep the old name. They are a record of what was decided when, and editing them to agree with the present would make them lie about the past. Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
160 lines
5.2 KiB
QML
160 lines
5.2 KiB
QML
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")
|
|
}
|
|
}
|
|
}
|