feat: add browse and random buttons to wall select

This commit is contained in:
2 * r + 2 * t 2026-06-05 22:03:19 +10:00
parent 0bbb1c04b7
commit da3b58118f
2 changed files with 45 additions and 0 deletions

View file

@ -2,9 +2,12 @@ pragma ComponentBehavior: Bound
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Caelestia.Components
import Caelestia.Config import Caelestia.Config
import Caelestia.Models import Caelestia.Models
import qs.components import qs.components
import qs.components.controls
import qs.components.filedialog
import qs.services import qs.services
import qs.utils import qs.utils
import qs.modules.nexus.common import qs.modules.nexus.common
@ -21,6 +24,44 @@ PageBase {
width: root.cappedWidth width: root.cappedWidth
spacing: Tokens.spacing.small spacing: Tokens.spacing.small
ButtonRow {
Layout.bottomMargin: Tokens.spacing.medium
Layout.alignment: Qt.AlignHCenter
spacing: Tokens.spacing.small
IconTextButton {
icon: "photo_library"
text: qsTr("Browse")
font: Tokens.font.body.large
isRound: true
shapeMorph: true
horizontalPadding: Tokens.padding.extraLarge
verticalPadding: Tokens.padding.medium
onClicked: browseDialog.open()
FileDialog {
id: browseDialog
title: qsTr("Select an image")
filterLabel: qsTr("Image files")
filters: Images.validImageExtensions
onAccepted: path => Wallpapers.setWallpaper(path)
}
}
IconTextButton {
icon: "shuffle"
text: qsTr("Random")
font: Tokens.font.body.large
isRound: true
shapeMorph: true
horizontalPadding: Tokens.padding.extraLarge
verticalPadding: Tokens.padding.medium
type: IconTextButton.Tonal
onClicked: Wallpapers.setRandom()
}
}
WallItem { WallItem {
imgHeight: Math.round(width * 0.3) imgHeight: Math.round(width * 0.3)
radius: Tokens.rounding.extraLarge radius: Tokens.rounding.extraLarge

View file

@ -27,6 +27,10 @@ Searcher {
return category; return category;
} }
function setRandom(): void {
Quickshell.execDetached(["caelestia", "wallpaper", "-r", ...smartArg]);
}
function setWallpaper(path: string): void { function setWallpaper(path: string): void {
actualCurrent = path; actualCurrent = path;
Quickshell.execDetached(["caelestia", "wallpaper", "-f", path, ...smartArg]); Quickshell.execDetached(["caelestia", "wallpaper", "-f", path, ...smartArg]);