aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/appearance/ThemeModule.qml
blob: ec9b098db51a0a7d2bc59e695def2797289dc024 (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
// Copyright (C) 2026 Danilo M. <danix@danix.xyz>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.

import QtQuick
import "../.."

// unified-desktop-theme's colour schemes.
Module {
    name: "theme"
    label: "Theme"
    // nf-fa-paintbrush, present in Inconsolata Nerd Font.
    icon: "\uf1fc"
    settings: true
    dirty: Udt.dirty
    group: "Appearance"
    keywords: ["colour", "color", "scheme", "palette", "accent", "udt"]
    searchItems: Array.from(Udt.names).map(n => ({ text: n, key: n }))

    function refresh() { Udt.refresh(); }

    page: Component {
        Page {
            title: "Theme"
            actions: Component {
                SaveBar {
                    id: bar
                    saveText: "Apply"; discardText: "Reset"; dirty: Udt.dirty; busy: Udt.applying
                    onSave: { bar.error = ""; bar.notice = ""; Udt.apply(Udt.pending); }
                    onDiscard: { bar.error = ""; Udt.pending = ""; }
                    // install.sh reloads Hyprland, kitty and conky; the notice
                    // says what it cannot reach.
                    Connections {
                        target: Udt
                        function onApplied(scheme, ok, message) {
                            bar.error = ok ? "" : `failed: ${message}`;
                            bar.notice = ok ? `${scheme} applied. Restart Qt, GTK, btop and Joplin; neovim needs :colorscheme udt.` : "";
                        }
                    }
                }
            }
            ThemeTab { width: parent.width }
        }
    }
}