mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 21:42:51 -05:00
settings: add index extractor script for search
This commit is contained in:
@@ -3,6 +3,7 @@ pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import qs.Common
|
||||
|
||||
Singleton {
|
||||
@@ -13,6 +14,37 @@ Singleton {
|
||||
property string targetSection: ""
|
||||
property string highlightSection: ""
|
||||
property var registeredCards: ({})
|
||||
property var settingsIndex: []
|
||||
property bool indexLoaded: false
|
||||
|
||||
readonly property var conditionMap: ({
|
||||
"isNiri": () => CompositorService.isNiri,
|
||||
"isHyprland": () => CompositorService.isHyprland,
|
||||
"isDwl": () => CompositorService.isDwl,
|
||||
"keybindsAvailable": () => KeybindsService.available,
|
||||
"soundsAvailable": () => AudioService.soundsAvailable,
|
||||
"cupsAvailable": () => CupsService.cupsAvailable,
|
||||
"networkNotLegacy": () => !NetworkService.usingLegacy,
|
||||
"dmsConnected": () => DMSService.isConnected && DMSService.apiVersion >= 23,
|
||||
"matugenAvailable": () => Theme.matugenAvailable
|
||||
})
|
||||
|
||||
Component.onCompleted: indexFile.reload()
|
||||
|
||||
FileView {
|
||||
id: indexFile
|
||||
path: Qt.resolvedUrl("../translations/settings_search_index.json")
|
||||
onLoaded: {
|
||||
try {
|
||||
root.settingsIndex = JSON.parse(text());
|
||||
root.indexLoaded = true;
|
||||
} catch (e) {
|
||||
console.warn("SettingsSearchService: Failed to parse index:", e);
|
||||
root.settingsIndex = [];
|
||||
}
|
||||
}
|
||||
onLoadFailed: error => console.warn("SettingsSearchService: Failed to load index:", error)
|
||||
}
|
||||
|
||||
function registerCard(settingKey, item, flickable) {
|
||||
if (!settingKey)
|
||||
@@ -21,9 +53,8 @@ Singleton {
|
||||
item: item,
|
||||
flickable: flickable
|
||||
};
|
||||
if (targetSection === settingKey) {
|
||||
if (targetSection === settingKey)
|
||||
scrollTimer.restart();
|
||||
}
|
||||
}
|
||||
|
||||
function unregisterCard(settingKey) {
|
||||
@@ -36,9 +67,8 @@ Singleton {
|
||||
|
||||
function navigateToSection(section) {
|
||||
targetSection = section;
|
||||
if (registeredCards[section]) {
|
||||
if (registeredCards[section])
|
||||
scrollTimer.restart();
|
||||
}
|
||||
}
|
||||
|
||||
function scrollToTarget() {
|
||||
@@ -54,7 +84,8 @@ Singleton {
|
||||
if (!contentItem)
|
||||
return;
|
||||
const mapped = item.mapToItem(contentItem, 0, 0);
|
||||
const targetY = Math.max(0, mapped.y - 16);
|
||||
const maxY = Math.max(0, flickable.contentHeight - flickable.height);
|
||||
const targetY = Math.min(maxY, Math.max(0, mapped.y - 16));
|
||||
flickable.contentY = targetY;
|
||||
|
||||
highlightSection = targetSection;
|
||||
@@ -78,577 +109,27 @@ Singleton {
|
||||
onTriggered: root.highlightSection = ""
|
||||
}
|
||||
|
||||
readonly property var settingsIndex: [
|
||||
{
|
||||
label: I18n.tr("Wallpaper"),
|
||||
keywords: ["background", "image", "picture", "desktop"],
|
||||
tabIndex: 0,
|
||||
icon: "wallpaper",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "wallpaper"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Per-Mode Wallpapers"),
|
||||
keywords: ["light", "dark", "mode", "theme"],
|
||||
tabIndex: 0,
|
||||
icon: "contrast",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "wallpaper"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Blur on Overview"),
|
||||
keywords: ["niri", "blur", "overview", "compositor"],
|
||||
tabIndex: 0,
|
||||
icon: "blur_on",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "blurWallpaper",
|
||||
condition: () => CompositorService.isNiri
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Per-Monitor Wallpapers"),
|
||||
keywords: ["multi-monitor", "display", "screen"],
|
||||
tabIndex: 0,
|
||||
icon: "monitor",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "wallpaper"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Automatic Cycling"),
|
||||
keywords: ["cycle", "rotate", "slideshow", "interval"],
|
||||
tabIndex: 0,
|
||||
icon: "slideshow",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "wallpaper"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Transition Effect"),
|
||||
keywords: ["animation", "change", "effect"],
|
||||
tabIndex: 0,
|
||||
icon: "animation",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "wallpaper"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Disable Built-in Wallpapers"),
|
||||
keywords: ["external", "swww", "hyprpaper", "swaybg"],
|
||||
tabIndex: 0,
|
||||
icon: "wallpaper",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "disableWallpaper"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Duplicate Wallpaper with Blur"),
|
||||
keywords: ["blur", "layer", "niri", "compositor"],
|
||||
tabIndex: 0,
|
||||
icon: "blur_on",
|
||||
category: I18n.tr("Personalization"),
|
||||
section: "blurWallpaper",
|
||||
condition: () => CompositorService.isNiri
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Time Format"),
|
||||
keywords: ["clock", "12h", "24h", "am", "pm"],
|
||||
tabIndex: 1,
|
||||
icon: "schedule",
|
||||
category: I18n.tr("Time & Weather"),
|
||||
section: "timeFormat"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Date Format"),
|
||||
keywords: ["calendar", "day", "month", "year"],
|
||||
tabIndex: 1,
|
||||
icon: "calendar_today",
|
||||
category: I18n.tr("Time & Weather"),
|
||||
section: "dateFormat"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Weather"),
|
||||
keywords: ["city", "temperature", "forecast", "location"],
|
||||
tabIndex: 1,
|
||||
icon: "thermostat",
|
||||
category: I18n.tr("Time & Weather"),
|
||||
section: "weather"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Temperature Unit"),
|
||||
keywords: ["celsius", "fahrenheit", "weather"],
|
||||
tabIndex: 1,
|
||||
icon: "thermostat",
|
||||
category: I18n.tr("Time & Weather"),
|
||||
section: "weather"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Keyboard Shortcuts"),
|
||||
keywords: ["keybinds", "hotkeys", "bindings"],
|
||||
tabIndex: 2,
|
||||
icon: "keyboard",
|
||||
category: I18n.tr("Keyboard Shortcuts"),
|
||||
section: "keybinds",
|
||||
condition: () => KeybindsService.available
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Bar Configurations"),
|
||||
keywords: ["panel", "multiple", "dankbar", "manage"],
|
||||
tabIndex: 3,
|
||||
icon: "dashboard",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barConfigurations"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Bar Position"),
|
||||
keywords: ["top", "bottom", "left", "right", "panel"],
|
||||
tabIndex: 3,
|
||||
icon: "vertical_align_center",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barPosition"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Display Assignment"),
|
||||
keywords: ["monitor", "screen", "display"],
|
||||
tabIndex: 3,
|
||||
icon: "display_settings",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barDisplay"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Bar Visibility"),
|
||||
keywords: ["bar", "hide", "show", "auto-hide", "panel"],
|
||||
tabIndex: 3,
|
||||
icon: "visibility_off",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barVisibility"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Bar Spacing"),
|
||||
keywords: ["gap", "margin", "padding", "spacing"],
|
||||
tabIndex: 3,
|
||||
icon: "space_bar",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barSpacing"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Corners & Background"),
|
||||
keywords: ["rounded", "radius", "shape", "transparent"],
|
||||
tabIndex: 3,
|
||||
icon: "rounded_corner",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barCorners"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Bar Transparency"),
|
||||
keywords: ["opacity", "alpha", "translucent"],
|
||||
tabIndex: 3,
|
||||
icon: "opacity",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "barTransparency"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Workspaces"),
|
||||
keywords: ["workspace", "label", "icon", "desktop"],
|
||||
tabIndex: 4,
|
||||
icon: "view_module",
|
||||
category: I18n.tr("Workspaces"),
|
||||
section: "workspaceSettings"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Workspace Icons"),
|
||||
keywords: ["workspace", "named", "icon"],
|
||||
tabIndex: 4,
|
||||
icon: "label",
|
||||
category: I18n.tr("Workspaces"),
|
||||
section: "workspaceIcons"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Position"),
|
||||
keywords: ["taskbar", "bottom", "left", "right"],
|
||||
tabIndex: 5,
|
||||
icon: "dock_to_bottom",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockPosition"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Visibility"),
|
||||
keywords: ["hide", "show", "auto-hide", "taskbar"],
|
||||
tabIndex: 5,
|
||||
icon: "visibility_off",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockVisibility"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Behavior"),
|
||||
keywords: ["pinned", "apps", "click"],
|
||||
tabIndex: 5,
|
||||
icon: "apps",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockBehavior"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Sizing"),
|
||||
keywords: ["icon", "size", "scale"],
|
||||
tabIndex: 5,
|
||||
icon: "photo_size_select_large",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockSizing"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Spacing"),
|
||||
keywords: ["gap", "margin", "padding"],
|
||||
tabIndex: 5,
|
||||
icon: "space_bar",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockSpacing"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Transparency"),
|
||||
keywords: ["opacity", "alpha"],
|
||||
tabIndex: 5,
|
||||
icon: "opacity",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockTransparency"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Dock Border"),
|
||||
keywords: ["outline", "stroke"],
|
||||
tabIndex: 5,
|
||||
icon: "border_style",
|
||||
category: I18n.tr("Dock"),
|
||||
section: "dockBorder"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Network"),
|
||||
keywords: ["wifi", "ethernet", "internet", "connection"],
|
||||
tabIndex: 7,
|
||||
icon: "wifi",
|
||||
category: I18n.tr("Network"),
|
||||
section: "network",
|
||||
condition: () => !NetworkService.usingLegacy
|
||||
},
|
||||
{
|
||||
label: I18n.tr("CUPS Print Server"),
|
||||
keywords: ["cups", "print", "paper", "printer"],
|
||||
tabIndex: 8,
|
||||
icon: "print",
|
||||
category: I18n.tr("System"),
|
||||
section: "printers",
|
||||
condition: () => CupsService.cupsAvailable
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Launcher Logo"),
|
||||
keywords: ["app", "button", "icon", "drawer"],
|
||||
tabIndex: 9,
|
||||
icon: "grid_view",
|
||||
category: I18n.tr("Launcher"),
|
||||
section: "launcherLogo"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Launch Prefix"),
|
||||
keywords: ["terminal", "command", "prefix"],
|
||||
tabIndex: 9,
|
||||
icon: "terminal",
|
||||
category: I18n.tr("Launcher"),
|
||||
section: "launchPrefix"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Sorting & Layout"),
|
||||
keywords: ["grid", "list", "sort", "order"],
|
||||
tabIndex: 9,
|
||||
icon: "sort_by_alpha",
|
||||
category: I18n.tr("Launcher"),
|
||||
section: "launcherSorting"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Recent Apps"),
|
||||
keywords: ["history", "recent", "apps"],
|
||||
tabIndex: 9,
|
||||
icon: "history",
|
||||
category: I18n.tr("Launcher"),
|
||||
section: "recentApps"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Theme Color"),
|
||||
keywords: ["palette", "accent", "primary", "appearance"],
|
||||
tabIndex: 10,
|
||||
icon: "palette",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "themeColor"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Color Mode"),
|
||||
keywords: ["light", "dark", "mode", "appearance"],
|
||||
tabIndex: 10,
|
||||
icon: "contrast",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "colorMode"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Widget Styling"),
|
||||
keywords: ["colorful", "default", "appearance", "transparency"],
|
||||
tabIndex: 10,
|
||||
icon: "widgets",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "widgetStyling"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Niri Layout Overrides"),
|
||||
keywords: ["gaps", "radius", "window", "niri"],
|
||||
tabIndex: 10,
|
||||
icon: "crop_square",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "niriLayout",
|
||||
condition: () => CompositorService.isNiri
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Modal Background"),
|
||||
keywords: ["overlay", "dim", "popup", "modal", "darken"],
|
||||
tabIndex: 10,
|
||||
icon: "brightness_low",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "modalBackground"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Applications"),
|
||||
keywords: ["dark", "system", "xdg", "portal", "terminal"],
|
||||
tabIndex: 10,
|
||||
icon: "apps",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "applications"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Matugen Templates"),
|
||||
keywords: ["gtk", "qt", "firefox", "theming"],
|
||||
tabIndex: 10,
|
||||
icon: "auto_awesome",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "matugenTemplates"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Icon Theme"),
|
||||
keywords: ["icons", "system", "adwaita"],
|
||||
tabIndex: 10,
|
||||
icon: "palette",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "iconTheme"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("System App Theming"),
|
||||
keywords: ["gtk", "qt", "application", "theming"],
|
||||
tabIndex: 10,
|
||||
icon: "settings",
|
||||
category: I18n.tr("Theme & Colors"),
|
||||
section: "systemAppTheming"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Lock Screen Layout"),
|
||||
keywords: ["lock", "power", "security", "layout"],
|
||||
tabIndex: 11,
|
||||
icon: "lock",
|
||||
category: I18n.tr("Lock Screen"),
|
||||
section: "lockLayout"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Lock Screen Behaviour"),
|
||||
keywords: ["dbus", "systemd", "lock", "behavior", "fingerprint"],
|
||||
tabIndex: 11,
|
||||
icon: "lock",
|
||||
category: I18n.tr("Lock Screen"),
|
||||
section: "lockBehavior"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Lock Screen Display"),
|
||||
keywords: ["display", "screen", "oled", "dpms", "monitor"],
|
||||
tabIndex: 11,
|
||||
icon: "monitor",
|
||||
category: I18n.tr("Lock Screen"),
|
||||
section: "lockDisplay"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Plugins"),
|
||||
keywords: ["extension", "addon", "widget"],
|
||||
tabIndex: 12,
|
||||
icon: "extension",
|
||||
category: I18n.tr("Plugins"),
|
||||
section: "plugins"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("About"),
|
||||
keywords: ["version", "info", "credits"],
|
||||
tabIndex: 13,
|
||||
icon: "info",
|
||||
category: I18n.tr("About"),
|
||||
section: "about"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Typography"),
|
||||
keywords: ["font", "family", "text", "typeface"],
|
||||
tabIndex: 14,
|
||||
icon: "text_fields",
|
||||
category: I18n.tr("Typography & Motion"),
|
||||
section: "typography"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Animation Speed"),
|
||||
keywords: ["motion", "speed", "transition", "duration"],
|
||||
tabIndex: 14,
|
||||
icon: "animation",
|
||||
category: I18n.tr("Typography & Motion"),
|
||||
section: "animationSpeed"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("System Sounds"),
|
||||
keywords: ["audio", "effects", "notification", "theme", "volume"],
|
||||
tabIndex: 15,
|
||||
icon: "volume_up",
|
||||
category: I18n.tr("Sounds"),
|
||||
section: "systemSounds",
|
||||
condition: () => AudioService.soundsAvailable
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Media Player"),
|
||||
keywords: ["mpris", "music", "controls", "style", "scroll"],
|
||||
tabIndex: 16,
|
||||
icon: "music_note",
|
||||
category: I18n.tr("Media Player"),
|
||||
section: "mediaPlayer"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Notification Popups"),
|
||||
keywords: ["toast", "alert", "message", "position"],
|
||||
tabIndex: 17,
|
||||
icon: "notifications",
|
||||
category: I18n.tr("Notifications"),
|
||||
section: "notificationPopups"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Do Not Disturb"),
|
||||
keywords: ["dnd", "quiet", "silent", "notification"],
|
||||
tabIndex: 17,
|
||||
icon: "notifications_off",
|
||||
category: I18n.tr("Notifications"),
|
||||
section: "doNotDisturb"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Notification Timeouts"),
|
||||
keywords: ["duration", "dismiss", "popup", "low", "normal", "critical"],
|
||||
tabIndex: 17,
|
||||
icon: "timer",
|
||||
category: I18n.tr("Notifications"),
|
||||
section: "notificationTimeouts"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("On-screen Displays"),
|
||||
keywords: ["osd", "volume", "brightness", "indicator", "position"],
|
||||
tabIndex: 18,
|
||||
icon: "tune",
|
||||
category: I18n.tr("On-screen Displays"),
|
||||
section: "osd"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Running Apps"),
|
||||
keywords: ["taskbar", "window", "active", "style"],
|
||||
tabIndex: 19,
|
||||
icon: "apps",
|
||||
category: I18n.tr("Running Apps"),
|
||||
section: "runningApps",
|
||||
condition: () => CompositorService.isNiri || CompositorService.isHyprland
|
||||
},
|
||||
{
|
||||
label: I18n.tr("System Updater"),
|
||||
keywords: ["package", "update", "upgrade", "widget"],
|
||||
tabIndex: 20,
|
||||
icon: "refresh",
|
||||
category: I18n.tr("System Updater"),
|
||||
section: "systemUpdater"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Idle Settings"),
|
||||
keywords: ["suspend", "hibernate", "idle", "timeout", "lock", "dpms"],
|
||||
tabIndex: 21,
|
||||
icon: "schedule",
|
||||
category: I18n.tr("Power & Sleep"),
|
||||
section: "idleSettings"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Power Menu"),
|
||||
keywords: ["shutdown", "reboot", "logout", "layout"],
|
||||
tabIndex: 21,
|
||||
icon: "power_settings_new",
|
||||
category: I18n.tr("Power & Sleep"),
|
||||
section: "powerMenu"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Power Confirmation"),
|
||||
keywords: ["hold", "confirm", "safety"],
|
||||
tabIndex: 21,
|
||||
icon: "check_circle",
|
||||
category: I18n.tr("Power & Sleep"),
|
||||
section: "powerConfirmation"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Custom Power Actions"),
|
||||
keywords: ["lock", "logout", "suspend", "script", "command"],
|
||||
tabIndex: 21,
|
||||
icon: "developer_mode",
|
||||
category: I18n.tr("Power & Sleep"),
|
||||
section: "customPowerActions"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Power Advanced"),
|
||||
keywords: ["battery", "charge", "limit", "inhibit", "caffeine"],
|
||||
tabIndex: 21,
|
||||
icon: "tune",
|
||||
category: I18n.tr("Power & Sleep"),
|
||||
section: "powerAdvanced"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Bar Widgets"),
|
||||
keywords: ["dankbar", "customize", "order", "left", "center", "right"],
|
||||
tabIndex: 22,
|
||||
icon: "widgets",
|
||||
category: I18n.tr("Dank Bar"),
|
||||
section: "widgets"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Clipboard"),
|
||||
keywords: ["copy", "paste", "cliphist", "history"],
|
||||
tabIndex: 23,
|
||||
icon: "content_paste",
|
||||
category: I18n.tr("System"),
|
||||
section: "clipboard",
|
||||
condition: () => DMSService.isConnected && DMSService.apiVersion >= 23
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Monitor Configuration"),
|
||||
keywords: ["display", "resolution", "refresh"],
|
||||
tabIndex: 24,
|
||||
icon: "display_settings",
|
||||
category: I18n.tr("Displays"),
|
||||
section: "displayConfig"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Gamma Control"),
|
||||
keywords: ["brightness", "color", "temperature", "night", "blue"],
|
||||
tabIndex: 25,
|
||||
icon: "brightness_6",
|
||||
category: I18n.tr("Displays"),
|
||||
section: "gammaControl"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Display Widgets"),
|
||||
keywords: ["monitor", "position", "screen"],
|
||||
tabIndex: 26,
|
||||
icon: "widgets",
|
||||
category: I18n.tr("Displays"),
|
||||
section: "displayWidgets"
|
||||
},
|
||||
{
|
||||
label: I18n.tr("Desktop Widgets"),
|
||||
keywords: ["clock", "monitor", "conky", "desktop"],
|
||||
tabIndex: 27,
|
||||
icon: "widgets",
|
||||
category: I18n.tr("Desktop Widgets"),
|
||||
section: "desktopWidgets"
|
||||
}
|
||||
]
|
||||
function checkCondition(item) {
|
||||
if (!item.conditionKey)
|
||||
return true;
|
||||
const condFn = conditionMap[item.conditionKey];
|
||||
if (!condFn)
|
||||
return true;
|
||||
return condFn();
|
||||
}
|
||||
|
||||
function translateItem(item) {
|
||||
return {
|
||||
section: item.section,
|
||||
label: I18n.tr(item.label),
|
||||
tabIndex: item.tabIndex,
|
||||
category: I18n.tr(item.category),
|
||||
keywords: item.keywords || [],
|
||||
icon: item.icon || "settings",
|
||||
description: item.description ? I18n.tr(item.description) : "",
|
||||
conditionKey: item.conditionKey
|
||||
};
|
||||
}
|
||||
|
||||
function search(text) {
|
||||
query = text;
|
||||
@@ -662,11 +143,12 @@ Singleton {
|
||||
const scored = [];
|
||||
|
||||
for (const item of settingsIndex) {
|
||||
if (item.condition && !item.condition())
|
||||
if (!checkCondition(item))
|
||||
continue;
|
||||
|
||||
const labelLower = item.label.toLowerCase();
|
||||
const categoryLower = item.category.toLowerCase();
|
||||
const translated = translateItem(item);
|
||||
const labelLower = translated.label.toLowerCase();
|
||||
const categoryLower = translated.category.toLowerCase();
|
||||
let score = 0;
|
||||
|
||||
if (labelLower === queryLower) {
|
||||
@@ -708,7 +190,7 @@ Singleton {
|
||||
|
||||
if (score > 0) {
|
||||
scored.push({
|
||||
item: item,
|
||||
item: translated,
|
||||
score: score
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user