// Copyright (C) 2026 Danilo M. // // 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. pragma Singleton import Quickshell import Quickshell.Io import QtQuick import "SceneIcons.js" as Icons // The scene-icon map from ~/.config, watched so a settings edit or a hand edit // recolours the pill with no restart. The starter map covers a missing file. Singleton { id: root readonly property string path: (Quickshell.env("XDG_CONFIG_HOME") || Quickshell.env("HOME") + "/.config") + "/quickshell/obs-scene-icons.json" property var map: Icons.defaults function iconFor(name) { return Icons.iconFor(root.map, name); } function save(map) { root.map = map; fv.setText(Icons.serialize(map)); } FileView { id: fv path: root.path atomicWrites: true watchChanges: true onFileChanged: reload() onLoaded: root.map = Icons.parse(text()) onLoadFailed: root.map = Icons.defaults } }