Screenshots and recordings offered three folders to choose between, and three
guesses cannot include the folder somebody's other software already writes to --
which is the only folder that matters. This machine has had ~/Pictures/Screenshots
and ~/Videos/Screencasts since long before Panama, and Panama was writing
recordings to a Videos/Recordings it invented. Both are free text now, and the
recording default is the folder that was already there.
Wallpapers were swept from four directories at once, so the distribution's stock
images arrived mixed in with the user's own and there was no way to ask for just
one. Where wallpapers live is something somebody knows about their own machine.
It is a setting, not a search.
All three accept an absolute path as well as one relative to home, which meant
fixing Capture: it prefixed $HOME unconditionally, so naming /mnt/captures would
have written screenshots to ~/mnt/captures and left nobody able to find them.
The generator turned out to skip any entry whose comment sits inside the braces
rather than above them -- it looks for `key:` immediately after `{`. Three
settings were invisible in the reference because of it, one of them dockScreens,
which has never appeared there at all. The staleness contract could not see it
either: regenerating reproduced the same omission, so the copy was current and
incomplete at once. It now counts what was declared against what it could read
and refuses rather than quietly documenting less than exists.
Claude-Session: https://claude.ai/code/session_01Q84axqUE5inJhf5Jz9CFy1
94 lines
3.0 KiB
QML
94 lines
3.0 KiB
QML
import QtQuick
|
|
import qs.config
|
|
import qs.services
|
|
|
|
SettingsPage {
|
|
id: root
|
|
|
|
title: "Screen Intelligence"
|
|
lede: "Turn text and codes on screen into content you can use."
|
|
|
|
Component.onCompleted: ScreenIntelligence.refresh()
|
|
|
|
Timer {
|
|
id: launchDelay
|
|
interval: 180
|
|
onTriggered: Capture.openIntelligence()
|
|
}
|
|
|
|
SettingsCard {
|
|
title: "Read anything on screen"
|
|
subtitle: "Select a region, window, or display. It is recognized locally, with clean follow-up actions."
|
|
|
|
SettingRow {
|
|
icon: ""
|
|
label: "Read screen text"
|
|
detail: "Copy, search, translate, or open detected links"
|
|
controlWidth: 160
|
|
divider: false
|
|
|
|
SettingsButton {
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Start reading"
|
|
tone: "accent"
|
|
enabled: ScreenIntelligence.ocrReady && ScreenIntelligence.englishReady
|
|
onClicked: {
|
|
ShellState.closeSettings();
|
|
launchDelay.restart();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
SettingsCard {
|
|
title: "Capture preferences"
|
|
subtitle: "Choose where captures go and how recordings are encoded."
|
|
|
|
TextEntryRow { setting: "screenshotDir"; placeholder: "Pictures/Screenshots" }
|
|
TextEntryRow { setting: "recordingDir"; placeholder: "Videos/Screencasts" }
|
|
ChoiceRow { setting: "recorderArgs"; divider: false }
|
|
}
|
|
|
|
SettingsCard {
|
|
title: "Local recognition"
|
|
subtitle: "The screen image stays in a local cache and is deleted when you dismiss the result."
|
|
|
|
TextRow {
|
|
label: "Text recognition"
|
|
detail: "Tesseract with the English language model"
|
|
value: ScreenIntelligence.ocrReady && ScreenIntelligence.englishReady ? "Ready" : "Needs install"
|
|
}
|
|
TextRow {
|
|
label: "QR & barcodes"
|
|
detail: "ZBar recognizes codes alongside ordinary text"
|
|
value: ScreenIntelligence.codeReady ? "Ready" : "Needs install"
|
|
}
|
|
TextRow {
|
|
label: "Privacy"
|
|
detail: "Only Search, Translate, and Open send the selected result to another application or service"
|
|
value: "Local first"
|
|
divider: false
|
|
}
|
|
}
|
|
|
|
SettingsCard {
|
|
title: "Shortcut"
|
|
|
|
TextRow {
|
|
label: "Read a screen selection"
|
|
detail: "Also available as Read in the Print-screen picker"
|
|
value: "Super + Shift + S"
|
|
controlWidth: 190
|
|
divider: ScreenIntelligence.ocrReady && ScreenIntelligence.codeReady && ScreenIntelligence.englishReady
|
|
}
|
|
TextRow {
|
|
visible: !ScreenIntelligence.ocrReady || !ScreenIntelligence.codeReady || !ScreenIntelligence.englishReady
|
|
label: "Install recognition engines"
|
|
detail: "sudo dnf install -y tesseract zbar"
|
|
value: "Required once"
|
|
divider: false
|
|
}
|
|
}
|
|
}
|