Save paths for screen recording and screenshots (#2354)

This commit is contained in:
end-4
2025-11-06 21:56:13 +01:00
committed by GitHub
4 changed files with 70 additions and 8 deletions
@@ -475,6 +475,14 @@ Singleton {
}
}
property JsonObject screenRecord: JsonObject {
property string savePath: Directories.videos.replace("file://","") // strip "file://"
}
property JsonObject screenSnip: JsonObject {
property string savePath: "" // only copy to clipboard when empty
}
property JsonObject sounds: JsonObject {
property bool battery: false
property bool pomodoro: false
@@ -33,6 +33,10 @@ PanelWindow {
property var selectionMode: RegionSelection.SelectionMode.RectCorners
signal dismiss()
property string saveScreenshotDir: Config.options.screenSnip.savePath !== ""
? Config.options.screenSnip.savePath
: ""
property string screenshotDir: Directories.screenshotTemp
property string imageSearchEngineBaseUrl: Config.options.search.imageSearch.imageSearchEngineBaseUrl
property string fileUploadApiEndpoint: "https://uguu.se/upload"
@@ -259,7 +263,23 @@ PanelWindow {
}
switch (root.action) {
case RegionSelection.SnipAction.Copy:
snipProc.command = ["bash", "-c", `${cropToStdout} | wl-copy && ${cleanup}`]
if (saveScreenshotDir === "") {
// not saving the screenshot, just copy to clipboard
snipProc.command = ["bash", "-c", `${cropToStdout} | wl-copy && ${cleanup}`]
break;
}
const savePathBase = root.saveScreenshotDir
snipProc.command = [
"bash", "-c",
`mkdir -p '${StringUtils.shellSingleQuoteEscape(savePathBase)}' && \
saveFileName="screenshot-$(date '+%Y-%m-%d_%H.%M.%S').png" && \
savePath="${savePathBase}/$saveFileName" && \
${cropToStdout} | tee >(wl-copy) > "$savePath" && \
${cleanup}`
]
break;
case RegionSelection.SnipAction.Edit:
snipProc.command = ["bash", "-c", `${cropToStdout} | swappy -f - && ${cleanup}`]
@@ -85,6 +85,31 @@ ContentPage {
}
ContentSection {
icon: "file_open"
title: Translation.tr("Save paths")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Video Recording Path")
text: Config.options.screenRecord.savePath
wrapMode: TextEdit.Wrap
onTextChanged: {
Config.options.screenRecord.savePath = text;
}
}
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Screenshot Path (leave empty to just copy)")
text: Config.options.screenSnip.savePath
wrapMode: TextEdit.Wrap
onTextChanged: {
Config.options.screenSnip.savePath = text;
}
}
}
ContentSection {
icon: "search"
title: Translation.tr("Search")