implement wallpaper switcher widget and refine color generation command

This commit is contained in:
lucy 2026-01-21 21:58:46 +01:00
parent 65124d8d42
commit a3b84debd4
4 changed files with 89 additions and 10 deletions

View File

@ -20,9 +20,4 @@ Item {
Settings.config.generateScheme = toggle; Settings.config.generateScheme = toggle;
} }
} }
Process {
id: wallustRunner
property string cmd: "matugen image " + Settings.config.currentWall + " -t scheme-fidelity"
command: ["sh", "-c", cmd]
}
} }

View File

@ -0,0 +1,82 @@
pragma ComponentBehavior: Bound
import Quickshell
import qs.settings
import QtQuick
import Quickshell.Widgets
import qs.reusables
import Qt.labs.folderlistmodel 2.10
import Quickshell.Io
FloatingWindow {
id: wallswitcherWindow
implicitHeight: 1200
implicitWidth: 1800
title: "qs-wallswitcher"
color: "green"
WrapperItem {
id: innerWindowWrapper
anchors.centerIn: parent
anchors.fill: parent
margin: 20
child: Rectangle {
id: innerWindow
anchors.fill: parent
anchors.centerIn: parent
implicitWidth: parent.implicitWidth
implicitHeight: parent.implicitHeight
GridView {
id: gridRoot
cellWidth: 140
cellHeight: 100
topMargin: innerWindowText.implicitHeight + innerWindowText.topPadding
anchors.fill: parent
anchors.horizontalCenter: parent.horizontalCenter
leftMargin: 20
rightMargin: 20
FolderListModel {
id: folderModel
folder: Settings.config.wallDir
nameFilters: ["*.png", "*.jpg"]
}
Component {
id: fileDelegate
Image {
required property string filePath
source: filePath
width: 120
height: 80
MouseArea {
id: wallpaperSetter
Process {
id: wallustRunner
property string cmd: "matugen image " + Settings.config.currentWall + " -t scheme-fidelity"
command: ["sh", "-c", cmd]
}
acceptedButtons: Qt.LeftButton
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
Settings.config.currentWall = parent.filePath;
wallustRunner.startDetached();
}
}
}
}
model: folderModel
delegate: fileDelegate
}
radius: 24
color: "black"
CustomText {
id: innerWindowText
topPadding: 10
text: "Hello, world!"
anchors.horizontalCenter: parent.horizontalCenter
}
}
}
}

View File

@ -5,20 +5,20 @@ import Quickshell
import Quickshell.Io import Quickshell.Io
Singleton { Singleton {
id: settings id: root
property alias config: settingsAdapter property alias config: settingsAdapter
property alias currentWall: settingsAdapter.currentWall
onConfigChanged: { onConfigChanged: {
console.log('config change detected, writing adapter'); console.log('config change detected, writing adapter');
settingsView.writeAdapter(); settingsView.writeAdapter();
} }
FileView { FileView {
id: settingsView id: settingsView
onAdapterUpdated: writeAdapter() onAdapterUpdated: writeAdapter()
onFileChanged: reload()
path: "/home/lucy/.config/quickshell/settings/config.json" path: "/home/lucy/.config/quickshell/settings/config.json"
watchChanges: true watchChanges: false
adapter: JsonAdapter { adapter: JsonAdapter {
id: settingsAdapter id: settingsAdapter
@ -28,7 +28,7 @@ Singleton {
property var font: "Google Sans" property var font: "Google Sans"
property var fontSize: 14 property var fontSize: 14
property var rounding: 10 property var rounding: 10
property var wallDir: "/home/lucy/.walls" property var wallDir: "file:///home/lucy/.walls/"
property bool floating: true property bool floating: true
property int paddingTop: 10 property int paddingTop: 10
property int paddingSides: 10 property int paddingSides: 10

View File

@ -5,6 +5,7 @@ import qs.modules.ipc
import qs.modules.bar import qs.modules.bar
import qs.modules.overlays import qs.modules.overlays
import qs.modules.notifications import qs.modules.notifications
import qs.modules.widgets.wallswitcher
ShellRoot { ShellRoot {
id: root id: root
@ -12,4 +13,5 @@ ShellRoot {
Bar {} Bar {}
Notification {} Notification {}
Wallpaper {} Wallpaper {}
WallSwitcher {}
} }