mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-30 00:12:50 -05:00
Default to Zenity Color picker
- QT 6.9.3 removed the previous color picker we used - Zenity is default in gnome based distros - Kcolorchooser can be installed separately and will be preferred over Zenity
This commit is contained in:
@@ -1,37 +1,79 @@
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import Qt.labs.platform
|
|
||||||
import Quickshell
|
import Quickshell
|
||||||
|
import Quickshell.Io
|
||||||
import qs.Common
|
import qs.Common
|
||||||
import qs.Services
|
import qs.Services
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: colorPickerModal
|
id: colorPickerModal
|
||||||
|
|
||||||
|
property string availablePicker: "zenity"
|
||||||
|
|
||||||
signal colorSelected(color selectedColor)
|
signal colorSelected(color selectedColor)
|
||||||
|
|
||||||
function show() {
|
function show() {
|
||||||
colorDialog.open()
|
if (availablePicker === "kcolorchooser") {
|
||||||
|
kcolorchooserProcess.running = true
|
||||||
|
} else {
|
||||||
|
zenityProcess.running = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function hide() {
|
function hide() {
|
||||||
colorDialog.close()
|
kcolorchooserProcess.running = false
|
||||||
|
zenityProcess.running = false
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyColorToClipboard(colorValue) {
|
function copyColorToClipboard(colorValue) {
|
||||||
Quickshell.execDetached(["sh", "-c", `echo "${colorValue}" | wl-copy`])
|
Quickshell.execDetached(["sh", "-c", `echo "${colorValue}" | wl-copy`])
|
||||||
ToastService.showInfo(`Color ${colorValue} copied to clipboard`)
|
ToastService.showInfo(`Color ${colorValue} copied`)
|
||||||
console.log("Copied color to clipboard:", colorValue)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ColorDialog {
|
Process {
|
||||||
id: colorDialog
|
id: kcolorDetector
|
||||||
title: "Color Picker - Select and copy color"
|
running: false
|
||||||
color: Theme.primary
|
command: ["which", "kcolorchooser"]
|
||||||
|
|
||||||
onAccepted: {
|
onExited: (code, status) => {
|
||||||
const colorString = color.toString()
|
if (code === 0) {
|
||||||
copyColorToClipboard(colorString)
|
availablePicker = "kcolorchooser"
|
||||||
colorSelected(color)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
id: kcolorchooserProcess
|
||||||
|
running: false
|
||||||
|
command: ["kcolorchooser", "--print"]
|
||||||
|
|
||||||
|
stdout: SplitParser {
|
||||||
|
onRead: data => {
|
||||||
|
const colorValue = data.trim()
|
||||||
|
if (colorValue.length > 0) {
|
||||||
|
copyColorToClipboard(colorValue)
|
||||||
|
colorSelected(colorValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
id: zenityProcess
|
||||||
|
running: false
|
||||||
|
command: ["zenity", "--color-selection", "--show-palette"]
|
||||||
|
|
||||||
|
stdout: SplitParser {
|
||||||
|
onRead: data => {
|
||||||
|
const colorValue = data.trim()
|
||||||
|
if (colorValue.length > 0) {
|
||||||
|
copyColorToClipboard(colorValue)
|
||||||
|
colorSelected(colorValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
kcolorDetector.running = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user