summaryrefslogtreecommitdiff
path: root/modules/launcher/M3Variants.qml
blob: 3cafd5cf9e63585ef82045c00a75c3c52d057d9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
pragma Singleton

import "root:/utils/scripts/fuzzysort.js" as Fuzzy
import qs.config
import Quickshell
import QtQuick

Singleton {
    id: root

    readonly property list<Variant> list: [
        Variant {
            variant: "vibrant"
            icon: "sentiment_very_dissatisfied"
            name: "Vibrant"
            description: "A high chroma palette. The primary palette's chroma is at maximum."
        },
        Variant {
            variant: "tonalspot"
            icon: "android"
            name: "Tonal Spot"
            description: "Default for Material theme colours. A pastel palette with a low chroma."
        },
        Variant {
            variant: "expressive"
            icon: "compare_arrows"
            name: "Expressive"
            description: "A medium chroma palette. The primary palette's hue is different from the seed colour, for variety."
        },
        Variant {
            variant: "fidelity"
            icon: "compare"
            name: "Fidelity"
            description: "Matches the seed colour, even if the seed colour is very bright (high chroma)."
        },
        Variant {
            variant: "content"
            icon: "sentiment_calm"
            name: "Content"
            description: "Almost identical to fidelity."
        },
        Variant {
            variant: "fruitsalad"
            icon: "nutrition"
            name: "Fruit Salad"
            description: "A playful theme - the seed colour's hue does not appear in the theme."
        },
        Variant {
            variant: "rainbow"
            icon: "looks"
            name: "Rainbow"
            description: "A playful theme - the seed colour's hue does not appear in the theme."
        },
        Variant {
            variant: "neutral"
            icon: "contrast"
            name: "Neutral"
            description: "Close to grayscale, a hint of chroma."
        },
        Variant {
            variant: "monochrome"
            icon: "filter_b_and_w"
            name: "Monochrome"
            description: "All colours are grayscale, no chroma."
        }
    ]

    readonly property list<var> preppedVariants: list.map(v => ({
                name: Fuzzy.prepare(v.variant),
                variant: v
            }))

    function fuzzyQuery(search: string): var {
        return Fuzzy.go(search.slice(`${Config.launcher.actionPrefix}variant `.length), preppedVariants, {
            all: true,
            key: "name"
        }).map(r => r.obj.variant);
    }

    component Variant: QtObject {
        required property string variant
        required property string icon
        required property string name
        required property string description

        function onClicked(list: AppList): void {
            list.visibilities.launcher = false;
            Quickshell.execDetached(["caelestia", "scheme", "set", "-v", variant]);
        }
    }
}