mirror of
https://github.com/kossLAN/dots.git
synced 2025-11-05 06:59:50 -05:00
put shell in subdir, and add nix package
This commit is contained in:
parent
c45c04e9ac
commit
f41ea4b1cb
100 changed files with 57 additions and 126 deletions
|
|
@ -1,309 +0,0 @@
|
|||
pragma Singleton
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import Qt.labs.folderlistmodel
|
||||
import "../"
|
||||
|
||||
Singleton {
|
||||
PersistentProperties {
|
||||
id: persist
|
||||
property bool windowOpen: false
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "settings"
|
||||
|
||||
function open(): void {
|
||||
persist.windowOpen = true;
|
||||
}
|
||||
|
||||
function close(): void {
|
||||
persist.windowOpen = false;
|
||||
}
|
||||
|
||||
function toggle(): void {
|
||||
persist.windowOpen = !persist.windowOpen;
|
||||
}
|
||||
}
|
||||
|
||||
LazyLoader {
|
||||
id: loader
|
||||
activeAsync: persist.windowOpen
|
||||
|
||||
FloatingWindow {
|
||||
color: ShellSettings.colors["surface"]
|
||||
implicitWidth: 840
|
||||
implicitHeight: 845
|
||||
|
||||
// onWidthChanged: {
|
||||
// console.log("height: " + height);
|
||||
// console.log("width: " + width);
|
||||
// }
|
||||
|
||||
maximumSize {
|
||||
width: 840
|
||||
height: 845
|
||||
}
|
||||
|
||||
minimumSize {
|
||||
width: 840
|
||||
height: 845
|
||||
}
|
||||
|
||||
onVisibleChanged: {
|
||||
if (!visible) {
|
||||
persist.windowOpen = false;
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: container
|
||||
spacing: 5
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
margins: 10
|
||||
}
|
||||
|
||||
ClippingRectangle {
|
||||
radius: 20
|
||||
Layout.preferredWidth: 464
|
||||
Layout.preferredHeight: 261
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.margins: 20
|
||||
|
||||
Image {
|
||||
id: wallpaperImage
|
||||
source: ShellSettings.settings.wallpaperUrl
|
||||
fillMode: Image.PreserveAspectFit
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: ShellSettings.colors["surface_container"]
|
||||
radius: 20
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
ListView {
|
||||
id: horizontalList
|
||||
orientation: ListView.Horizontal
|
||||
model: ["scheme-content", "scheme-expressive", "scheme-fidelity", "scheme-fruit-salad", "scheme-monochrome", "scheme-neutral", "scheme-rainbow", "scheme-tonal-spot", "scheme-vibrant"]
|
||||
spacing: 10
|
||||
clip: true
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 100
|
||||
Layout.margins: 10
|
||||
|
||||
delegate: Rectangle {
|
||||
id: paletteCell
|
||||
required property string modelData
|
||||
property string matugenConf: Qt.resolvedUrl("root:wallpaper/matugen.toml").toString().replace("file://", "")
|
||||
property var colors: {
|
||||
"primary": "white",
|
||||
"secondary": "gray",
|
||||
"tertiary": "lightgrey",
|
||||
"container": "black"
|
||||
}
|
||||
|
||||
width: 100
|
||||
height: 100
|
||||
color: paletteSelect.containsMouse ? ShellSettings.colors["surface_container_highest"] : ShellSettings.colors["surface_container_high"]
|
||||
radius: 20
|
||||
|
||||
MouseArea {
|
||||
id: paletteSelect
|
||||
hoverEnabled: true
|
||||
anchors.fill: parent
|
||||
onPressed: {
|
||||
ShellSettings.settings.colorScheme = paletteCell.modelData;
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: paletteContainer
|
||||
width: 80
|
||||
height: 80
|
||||
anchors.centerIn: parent
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: Rectangle {
|
||||
width: paletteContainer.width
|
||||
height: paletteContainer.height
|
||||
radius: 20
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: topLeft
|
||||
color: paletteCell.colors["primary"] ?? "white"
|
||||
width: parent.width / 2
|
||||
height: parent.height / 2
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: topRight
|
||||
color: paletteCell.colors["secondary"] ?? "gray"
|
||||
width: parent.width / 2
|
||||
height: parent.height / 2
|
||||
anchors.left: topLeft.right
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: bottomLeft
|
||||
color: paletteCell.colors["tertiary"] ?? "lightgrey"
|
||||
width: parent.width / 2
|
||||
height: parent.height / 2
|
||||
anchors.top: topLeft.bottom
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: bottomRight
|
||||
color: paletteCell.colors["surface"] ?? "black"
|
||||
width: parent.width / 2
|
||||
height: parent.height / 2
|
||||
anchors {
|
||||
top: topRight.bottom
|
||||
left: bottomLeft.right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: ShellSettings.settings
|
||||
function onWallpaperUrlChanged() {
|
||||
matugen.running = true;
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: matugen
|
||||
running: true
|
||||
command: ["matugen", "image", ShellSettings.settings.wallpaperUrl.replace("file://", ""), "--type", paletteCell.modelData, "--json", "hex", "--config", paletteCell.matugenConf, "--dry-run"]
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
try {
|
||||
paletteCell.colors = JSON.parse(data)['colors']['dark'];
|
||||
} catch (e) {
|
||||
console.error("Error parsing JSON:", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stderr: SplitParser {
|
||||
onRead: data => console.log(`line read: ${data}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: ShellSettings.colors["surface_container_high"]
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 1
|
||||
}
|
||||
|
||||
GridView {
|
||||
id: wallpaperGrid
|
||||
cellWidth: 200
|
||||
cellHeight: 200
|
||||
clip: true
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
Layout.margins: 10
|
||||
|
||||
model: FolderListModel {
|
||||
id: folderModel
|
||||
folder: Qt.resolvedUrl("root:resources/wallpapers")
|
||||
nameFilters: ["*.jpg", "*.png"]
|
||||
}
|
||||
|
||||
delegate: Rectangle {
|
||||
id: cell
|
||||
required property var modelData
|
||||
width: 200
|
||||
height: 200
|
||||
color: "transparent"
|
||||
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
|
||||
Rectangle {
|
||||
id: border
|
||||
visible: mouseArea.containsMouse
|
||||
color: "transparent"
|
||||
radius: 20
|
||||
|
||||
border {
|
||||
color: ShellSettings.colors["primary"]
|
||||
width: 2
|
||||
}
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
margins: 1
|
||||
}
|
||||
}
|
||||
|
||||
Image {
|
||||
id: image
|
||||
source: cell.modelData.fileUrl
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
asynchronous: true
|
||||
|
||||
sourceSize {
|
||||
height: image.height
|
||||
width: image.width
|
||||
}
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
margins: 5
|
||||
}
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: OpacityMask {
|
||||
maskSource: Rectangle {
|
||||
width: cell.width
|
||||
height: cell.height
|
||||
radius: 20
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: {
|
||||
ShellSettings.settings.wallpaperUrl = cell.modelData.fileUrl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue