From 273700dad362496aeb5be420b71952987ab84efe Mon Sep 17 00:00:00 2001 From: Ian Ribeiro <133624505+oldirtty@users.noreply.github.com> Date: Wed, 15 Jul 2026 00:42:37 -0300 Subject: [PATCH] feat: Color Picker plugin (#12) * feat: add color picker panel (WIP - render bug) * docs: update README and add thumbnail * fix: rgb and hex options label key * fix: current swatch not loading on open * Modify plugin.toml metadata for color picker Updated plugin metadata fields including tags. --------- Co-authored-by: Lemmy --- color_picker/README.md | 69 +++++ color_picker/panel.luau | 385 +++++++++++++++++++++++++++ color_picker/plugin.toml | 104 ++++++++ color_picker/service.luau | 286 ++++++++++++++++++++ color_picker/thumbnail.webp | Bin 0 -> 81160 bytes color_picker/translations/en.json | 31 +++ color_picker/translations/pt-BR.json | 31 +++ color_picker/widget.luau | 26 ++ 8 files changed, 932 insertions(+) create mode 100644 color_picker/README.md create mode 100644 color_picker/panel.luau create mode 100644 color_picker/plugin.toml create mode 100644 color_picker/service.luau create mode 100644 color_picker/thumbnail.webp create mode 100644 color_picker/translations/en.json create mode 100644 color_picker/translations/pt-BR.json create mode 100644 color_picker/widget.luau diff --git a/color_picker/README.md b/color_picker/README.md new file mode 100644 index 0000000..8e26623 --- /dev/null +++ b/color_picker/README.md @@ -0,0 +1,69 @@ +# Color Picker + +A screen color picker for Noctalia v5, built on top of [hyprpicker](https://github.com/hyprwm/hyprpicker). + +## Plugin + +| Field | Value | +| ------- | ----- | +| ID | `oldirtty/color_picker` | +| Entries | Service: `service`; bar widget: `widget`; panel: `panel` | + +## Requirements + +Install `hyprpicker` + +- [hyprpicker](https://github.com/hyprwm/hyprpicker) + +## Installation + +The headless `service` triggers `hyprpicker` with arguments set in the plugin's settings. + +Widget controls: + +| Action | Behavior | +| ----------- | -------- | +| Left click | Open plugin's panel. | +| Right click | Sample a color directly, without opening the panel. | + +Panel controls: + +| Action | Behavior | +| ----------- | -------- | +| Click bigger swatch | Open color picker dialog. | + +## Usage + +- **Left-click** the bar widget to open the panel. +- **Right-click** the bar widget to sample a color directly, without opening the panel. +- Inside the panel, click any recent color swatch to select it, or edit the HEX/RGB/HSL fields directly or click the bigger swatch to open color picker dialog. +- Colors picked during a panel session are added to history when the panel closes. + +## Settings + +| setting | type | default | description | +| ---------------------------- | -------- | ----------- | ----------- | +| `hyprpicker-format` | `select` | `"hex"` | Default color format to copy to clipboard (`hex` or `rgb`). | +| `hyprpicker-lowercase` | `bool` | `false` | Outputs the hexcode in lowercase. | +| `swatch-radius` | `int` | `8` | Corner radius of the history swatches and current-color preview. | +| `hyprpicker-no-zoom` | `bool` | `false` | Turns off the magnifying zoom lens while picking. | +| `hyprpicker-scale` | `int` | `10` | Zoom lens magnification, from `1` to `10`. | +| `hyprpicker-radius` | `int` | `100` | Zoom lens circle radius in pixels, from `1` to `1000`. | +| `hyprpicker-disable-preview` | `bool` | `false` | Turns off the live color preview while picking. | +| `hyprpicker-cursor` | `bool` | `false` | Includes the cursor in the frozen screen preview. | +| `glyph` | `glyph` | `"palette"` | Glyph | + +## IPC + +Runs `hyprpicker` with the arguments given in plugin's settings. + +```bash +noctalia msg panel-toggle oldirtty/color_picker:panel + +# Sample a color without opening the panel +noctalia msg plugin oldirtty/color_picker:service all pick +``` + +## Notes + +- There is a known behavior where invoking `hyprpicker` through the plugin's background service imposes a timeout. The picker will close prematurely if a color is not selected within a certain timeframe, rather than staying open indefinitely waiting for a click. diff --git a/color_picker/panel.luau b/color_picker/panel.luau new file mode 100644 index 0000000..0dec221 --- /dev/null +++ b/color_picker/panel.luau @@ -0,0 +1,385 @@ + +-- [[panel]] entry: +-- shows the last/current picked color with a button to +-- pick a new one, a history of the last colors, and +-- color fields with real-time editing. +-- +-- No hyprpicker, no disk, no history mutation here -- that all lives in +-- service.luau. This script only reads noctalia.state and dispatches IPC +-- events to the service for anything that touches picking or persistence. +--!nocheck +--!nolint UnknownGlobal + +--============================================== +-- CONSTANTS +--============================================== +local SERVICE = "oldirtty/color_picker:service" +local swatch_radius = noctalia.getConfig("swatch-radius") +local tr_color_picker = noctalia.tr("color_picker") + +--============================================== +-- TRANSLATION HELPER +--============================================== +local function tr(key: string, subst: table?): string + if subst then + return noctalia.tr(key, subst) + end + return noctalia.tr(key) +end + +--============================================== +-- COLOR CONVERSION +--============================================== + +local function hexToRgb(hex: string) + local r = tonumber(hex:sub(2, 3), 16) + local g = tonumber(hex:sub(4, 5), 16) + local b = tonumber(hex:sub(6, 7), 16) + return r, g, b +end + +local function rgbToHsl(r: number, g: number, b: number) + r, g, b = r / 255, g / 255, b / 255 + local max, min = math.max(r, g, b), math.min(r, g, b) + local h, s, l = 0, 0, (max + min) / 2 + + if max ~= min then + local d = max - min + s = if l > 0.5 then d / (2 - max - min) else d / (max + min) + if max == r then + h = (g - b) / d + (if g < b then 6 else 0) + elseif max == g then + h = (b - r) / d + 2 + else + h = (r - g) / d + 4 + end + h = h / 6 + end + + return math.floor(h * 360 + 0.5), math.floor(s * 100 + 0.5), math.floor(l * 100 + 0.5) +end + +local function formatHex(hex: string, alpha: number): string + if alpha < 1 then + return hex .. string.format("%02x", math.floor(alpha * 255 + 0.5)) + end + return hex +end + +local function formatRgb(hex: string, alpha: number): string + local r, g, b = hexToRgb(hex) + if alpha < 1 then + return string.format("rgba(%d, %d, %d, %.2f)", r, g, b, alpha) + end + return string.format("rgb(%d, %d, %d)", r, g, b) +end + +local function formatHsl(hex: string, alpha: number): string + local r, g, b = hexToRgb(hex) + local h, s, l = rgbToHsl(r, g, b) + if alpha < 1 then + return string.format("hsla(%d, %d%%, %d%%, %.2f)", h, s, l, alpha) + end + return string.format("hsl(%d, %d%%, %d%%)", h, s, l) +end + +local function hexWithAlpha(hex: string, alpha: number): string + if alpha >= 1 then + return hex + end + return hex .. string.format("%02x", math.floor(alpha * 255 + 0.5)) +end + +--============================================== +-- COLOR TEXT PARSING (field input -> hex) +--============================================== + +local function parseRgbText(text: string): string? + local r, g, b = text:match("^%s*(%d+)%s*,%s*(%d+)%s*,%s*(%d+)") + if r == nil then + return nil + end + r, g, b = tonumber(r), tonumber(g), tonumber(b) + if r > 255 or g > 255 or b > 255 then + return nil + end + return string.format("#%02x%02x%02x", r, g, b) +end + +local function parseHslText(text: string): string? + local h, s, l = text:match("^%s*(%d+)%s*,%s*(%d+)%%?%s*,%s*(%d+)%%?") + if h == nil then + return nil + end + h, s, l = tonumber(h), tonumber(s) / 100, tonumber(l) / 100 + + local function hueToRgb(p: number, q: number, t: number): number + if t < 0 then t = t + 1 end + if t > 1 then t = t - 1 end + if t < 1 / 6 then return p + (q - p) * 6 * t end + if t < 1 / 2 then return q end + if t < 2 / 3 then return p + (q - p) * (2 / 3 - t) * 6 end + return p + end + + local r, g, b + if s == 0 then + r, g, b = l, l, l + else + local q = if l < 0.5 then l * (1 + s) else l + s - l * s + local p = 2 * l - q + local hn = h / 360 + r = hueToRgb(p, q, hn + 1 / 3) + g = hueToRgb(p, q, hn) + b = hueToRgb(p, q, hn - 1 / 3) + end + + return string.format( + "#%02x%02x%02x", + math.floor(r * 255 + 0.5), + math.floor(g * 255 + 0.5), + math.floor(b * 255 + 0.5) + ) +end + +local function parseHexText(text: string): string? + local clean = text:match("^#?(%x%x%x%x%x%x)$") + if clean == nil then + return nil + end + return "#" .. clean +end + +--============================================== +-- STATE (read-only view + pure-UI selection) +-- +-- selectedColor / selectedOpacity / colorHistory all live in noctalia.state, +-- owned and mutated by service.luau. This panel only reads them for +-- rendering, except for pure-UI interactions (history swatch click, field +-- edit, opacity drag) that change the *selection* without picking or +-- persisting -- those are cheap enough to set directly here. +--============================================== + +local function getSelectedColor(): string? + return noctalia.state.get("selectedColor") +end + +local function getSelectedOpacity(): number + return tonumber(noctalia.state.get("selectedOpacity")) or 1 +end + +local function setSelected(hex: string, opacity: number) + noctalia.state.set("selectedColor", hex) + noctalia.state.set("selectedOpacity", opacity) +end + +--============================================== +-- SERVICE DISPATCH +--============================================== + +local function sendToService(event: string, payload: string?) + local cmd = "noctalia msg plugin " .. SERVICE .. " all " .. event + if payload ~= nil then + cmd = cmd .. " " .. payload + end + noctalia.runAsync(cmd, function() end) +end + +--============================================== +-- RENDERING +--============================================== + +local function renderRecentItem(color: string, index: number) + return ui.box({ + width = 32, + height = 32, + fill = color, + radius = swatch_radius / 2.5, + border = "outline", + onClick = "onHistoryColorClicked" .. index, + }) +end + +-- Recent-colors row: history positions 2..N. Position 1 is the selected +-- color, already shown by its own preview swatch. +local function renderRecent() + local recent = noctalia.state.get("colorHistory") or {} + + if #recent <= 1 then + return ui.label({ text = tr("no_history"), fontSize = 12, color = "muted" }) + end + + local items = {} + for i = #recent, 2, -1 do + table.insert(items, renderRecentItem(recent[i].hex, i)) + end + + return ui.row({ gap = 8, align = "center" }, items) +end + +local function renderTitlebar() + return ui.row({ align = "center", justify = "space_between", gap = 8 }, { + ui.label({ text = tr("color_picker"), fontSize = 18, fontWeight = "bold", color = "primary", flexGrow = 1 }), + ui.button({ glyph = "color-picker", onClick = "onPickClickedFromPanel" }), + ui.button({ glyph = "close", onClick = "onCloseClicked" }), + }) +end + +local function renderColorspaceColumn(name: string, value: string, onSubmit: string, onCopy: string, keySuffix: string) + local text_align = "left" + if name ~= "HEX" then + value = value:match("%((.-)%)") + text_align = "center" + end + + return ui.column({ gap = 4, flexGrow = 1 }, { + ui.label({ text = name, fontSize = 14, color = "on_surface_variant" }), + ui.row({ gap = 8, align = "center" }, { + ui.input({ + key = name .. "-input-" .. keySuffix, + value = value, + textAlign = text_align, + flexGrow = 1, + onSubmit = onSubmit, + }), + ui.button({ glyph = "copy", variant = "ghost", onClick = onCopy }), + }), + }) +end + +local function render() + local current = getSelectedColor() + local opacity = getSelectedOpacity() + + if current == nil then + panel.render(ui.column({ gap = 12, padding = 16 }, { + renderTitlebar(), + ui.label({ text = tr("no_color_picked"), padding = { top = 8 } }), + renderRecent(), + })) + return + end + + panel.render(ui.column({ gap = 12, padding = 16 }, { + renderTitlebar(), + + ui.row({ gap = 12, align = "stretch" }, { + ui.column({ gap = 8, flexGrow = 2 }, { + ui.label({ text = tr("recent_colors"), fontSize = 14, color = "on_surface_variant" }), + renderRecent(), + }), + ui.column({ gap = 8, flexGrow = 2 }, { + ui.label({ text = tr("opacity"), fontSize = 14, color = "on_surface_variant" }), + ui.slider({ min = 0, max = 1, step = 0.01, value = opacity, onChange = "onOpacityChange", onDragEnd = "onOpacityChange" }), + }), + -- Render current swatch + ui.box({ + width = 128, + height = 64, + fill = hexWithAlpha(current, opacity), + radius = swatch_radius, + border = "outline", + borderWidth = 2, + flexGrow = 1, + onClick = "onNativePickerClicked" + }), + }), + + ui.row({ gap = 12 }, { + renderColorspaceColumn("HEX", formatHex(current, opacity), "onSubmitHex", "onCopyHex", current .. "-" .. opacity), + renderColorspaceColumn("RGB", formatRgb(current, opacity), "onSubmitRgb", "onCopyRgb", current .. "-" .. opacity), + renderColorspaceColumn("HSL", formatHsl(current, opacity), "onSubmitHsl", "onCopyHsl", current .. "-" .. opacity), + }), + })) +end + +--============================================== +-- CALLBACKS: history interaction (pure UI, no service call) +--============================================== + +function handleHistoryClick(index: number) + local history = noctalia.state.get("colorHistory") or {} + local entry = history[index] + if entry then + setSelected(entry.hex, entry.opacity or 1) + render() + end +end + +function onHistoryColorClicked2() handleHistoryClick(2) end +function onHistoryColorClicked3() handleHistoryClick(3) end +function onHistoryColorClicked4() handleHistoryClick(4) end +function onHistoryColorClicked5() handleHistoryClick(5) end +function onHistoryColorClicked6() handleHistoryClick(6) end +function onHistoryColorClicked7() handleHistoryClick(7) end + +--============================================== +-- CALLBACKS: colorspace fields (pure UI, no service call) +--============================================== + +local function processSubmit(parseText: (string) -> string?, text: string) + local color_value = parseText(text) + if color_value == nil then return end + + setSelected(color_value, getSelectedOpacity()) + render() +end + +function onSubmitHex(text: string) processSubmit(parseHexText, text) end +function onSubmitRgb(text: string) processSubmit(parseRgbText, text) end +function onSubmitHsl(text: string) processSubmit(parseHslText, text) end + +local function processCopy(format: (string, number) -> string) + local current = getSelectedColor() + if current == nil then return end + + local text = format(current, getSelectedOpacity()) + noctalia.copyToClipboard(text, "text/plain") + noctalia.notify(tr_color_picker, tr("color_copied", { color = text })) +end + +function onCopyHex() processCopy(formatHex) end +function onCopyRgb() processCopy(formatRgb) end +function onCopyHsl() processCopy(formatHsl) end + +function onOpacityChange(value) + local parsed = tonumber(value) + if parsed == nil then return end + + noctalia.state.set("selectedOpacity", parsed) + render() +end + +--============================================== +-- CALLBACKS: picking (delegates to the service) +--============================================== + +-- Panel's own pick button: asks the service to pick and update the +-- selection only. No history commit until the panel closes. +function onPickClickedFromPanel() + sendToService("pick-panel") +end + +function onNativePickerClicked() + sendToService("picker-dialog") +end + +function onCloseClicked() + panel.close() +end + +-- Panel closed (any path: close button, Esc, click outside). Commits +-- whatever is currently selected to the service's history. +function onClose() + local hex = getSelectedColor() + if hex == nil then return end + + local payload = hex .. ":" .. tostring(getSelectedOpacity()) + sendToService("commit", payload) +end + +function onOpen(context) + noctalia.state.watch("selectedColor", function() render() end) + noctalia.state.watch("colorHistory", function() render() end) + render() +end \ No newline at end of file diff --git a/color_picker/plugin.toml b/color_picker/plugin.toml new file mode 100644 index 0000000..0cabff5 --- /dev/null +++ b/color_picker/plugin.toml @@ -0,0 +1,104 @@ +author = "oldirtty" +id = "oldirtty/color_picker" +name = "Color Picker" +description = "Pick a color from your screen with hyprpicker." +license = "MIT" +version = "1.0.0" +min_noctalia = "5.0.0" +icon = "palette" +dependencies = ["hyprpicker"] +tags = ["theming", "utility", "bar", "panel"] + + +[[setting]] +key = "hyprpicker-format" +type = "select" +default = "hex" +label_key = "settings.hyprpicker_format.label" +description_key = "settings.hyprpicker_format.description" +options = [ + { value = "hex", label_key = "hex" }, + { value = "rgb", label_key = "rgb" } +] + +[[setting]] +key = "hyprpicker-lowercase" +type = "bool" +label_key = "settings.hyprpicker_lowercase.label" +description_key = "settings.hyprpicker_lowercase.description" +visible_when = { key = "hyprpicker-format", values = ["hex"]} +default = false + +[[setting]] +key = "swatch-radius" +type = "int" +label_key = "settings.swatch_radius.label" +description_key = "settings.swatch_radius.description" +default = 8 +min = 0 +max = 64 + +[[setting]] +key = "hyprpicker-no-zoom" +type = "bool" +label_key = "settings.hyprpicker_no_zoom.label" +description_key = "settings.hyprpicker_no_zoom.description" +default = false + +[[setting]] +key = "hyprpicker-scale" +type = "int" +label_key = "settings.hyprpicker_scale.label" +description_key = "settings.hyprpicker_scale.description" +visible_when = { key = "hyprpicker-no-zoom", values = ["false"]} +default = 10 +min = 1 +max = 10 + +[[setting]] +key = "hyprpicker-radius" +type = "int" +label_key = "settings.hyprpicker_radius.label" +description_key = "settings.hyprpicker_radius.description" +visible_when = { key = "hyprpicker-no-zoom", values = ["false"]} +default = 100 +min = 1 +max = 1000 + +[[setting]] +key = "hyprpicker-disable-preview" +type = "bool" +label_key = "settings.hyprpicker_disable_preview.label" +description_key = "settings.hyprpicker_disable_preview.description" +visible_when = { key = "hyprpicker-no-zoom", values = ["false"]} +default = false + +[[setting]] +key = "hyprpicker-cursor" +type = "bool" +label_key = "settings.hyprpicker_cursor.label" +description_key = "settings.hyprpicker_cursor.description" +default = false + +[[widget]] +id = "widget" +entry = "widget.luau" + + [[widget.setting]] + key = "glyph" + type = "glyph" + label_key = "glyph" + default = "palette" + +[[panel]] +id = "panel" +entry = "panel.luau" +width = 720 +height = 240 +placement = "floating" +position = "center" + +# Headless background service: owns the hyprpicker backend +[[service]] +id = "service" +entry = "service.luau" diff --git a/color_picker/service.luau b/color_picker/service.luau new file mode 100644 index 0000000..5aacd0e --- /dev/null +++ b/color_picker/service.luau @@ -0,0 +1,286 @@ +-- [[service]] entry: +-- owns all hyprpicker interaction, color history, and disk persistence. +-- Headless -- no UI. Widget and panel talk to it via onIpc, never touch +-- hyprpicker or the history file directly. +--!nocheck +--!nolint UnknownGlobal + +--============================================== +-- CONSTANTS +--============================================== +local MAX_HISTORY = 7 -- selected color (index 1) + 6 recent +local STATE_DIR = "~/.local/state/noctalia/plugin-cache/color_picker" +local HISTORY_FILE = STATE_DIR .. "/history.json" + +local tr_color_picker = noctalia.tr("color_picker") + +local function tr(key: string, subst: table?): string + if subst then + return noctalia.tr(key, subst) + end + return noctalia.tr(key) +end + +--============================================== +-- HYPRPICKER COMMAND BUILDER +--============================================== + +-- Builds the hyprpicker argv from plugin settings. Returns an array of +-- shell-safe tokens; join with spaces before passing to noctalia.runAsync, +-- which only accepts a single command string. +local function buildHyprpickerArgs(): { string } + local args = { "hyprpicker", "-a" } + + if noctalia.getConfig("hyprpicker-format") == "rgb" then + table.insert(args, "-f") + table.insert(args, "rgb") + end + + if noctalia.getConfig("hyprpicker-cursor") then + table.insert(args, "--cursor") + end + + if noctalia.getConfig("hyprpicker-disable-preview") then + table.insert(args, "--disable-preview") + end + + if noctalia.getConfig("hyprpicker-lowercase") then + table.insert(args, "--lowercase-hex") + end + + if noctalia.getConfig("hyprpicker-no-zoom") then + table.insert(args, "--no-zoom") + return args -- returns earlier since next args apply only when zoom is enabled + end + + local scale = noctalia.getConfig("hyprpicker-scale") + if scale ~= nil then + table.insert(args, "--scale=" .. tostring(scale)) + end + + local radius = noctalia.getConfig("hyprpicker-radius") + if radius ~= nil then + table.insert(args, "--radius=" .. tostring(radius)) + end + + return args +end + +local function hyprpickerCommand(): string + return table.concat(buildHyprpickerArgs(), " ") +end + +local function parsePickerOutput(output: string): string? + -- Tries Hex first + local hex = output:match("#%x%x%x%x%x%x") + if hex then + -- Garante que o retorno é maiúsculo + return hex:upper() + end + + -- Then tries RGB + local r, g, b = output:match("(%d+)%s+(%d+)%s+(%d+)") + if r and g and b then + -- Usa %02X (X MAIÚSCULO) para retornar Hex maiúsculo + return string.format("#%02X%02X%02X", tonumber(r), tonumber(g), tonumber(b)) + end + + return nil +end + +local function formatRgb(hex: string): string + local r = tonumber(hex:sub(2, 3), 16) + local g = tonumber(hex:sub(4, 5), 16) + local b = tonumber(hex:sub(6, 7), 16) + return string.format("rgb(%d, %d, %d)", r, g, b) +end + +--============================================== +-- STATE MODEL +-- +-- selectedColor / selectedOpacity: ephemeral, what the panel is currently +-- showing. Set here on every successful pick; also updated by the panel +-- itself for pure-UI interactions (history swatch click, field edit, +-- opacity slider) that don't touch hyprpicker or disk. +-- +-- colorHistory: persisted list (index 1 = most recently committed color). +-- Only mutated by pushCurrentColor(), called on immediate-commit picks +-- (widget right-click) and on "commit" (panel close). +--============================================== + +local function setSelected(hex: string, opacity: number) + noctalia.state.set("selectedColor", hex) + noctalia.state.set("selectedOpacity", opacity) +end + +-- Moves (or inserts) a color to the front of colorHistory, capped at +-- MAX_HISTORY entries. Memory only -- callers decide when to persist. +local function pushCurrentColor(hex: string, opacity: number) + hex = hex:upper() -- Garante o padrão maiúsculo + local history = noctalia.state.get("colorHistory") or {} + + for i, entry in ipairs(history) do + if entry.hex and entry.hex:upper() == hex then + table.remove(history, i) + break + end + end + + table.insert(history, 1, { hex = hex, opacity = opacity }) + + while #history > MAX_HISTORY do + table.remove(history) + end + + noctalia.state.set("colorHistory", history) +end + +local function loadHistoryFromDisk() + local content = noctalia.readFile(HISTORY_FILE) + if content == nil or content == "" then return end + + local decoded = noctalia.json.decode(content) + if type(decoded) ~= "table" then return end + + noctalia.state.set("colorHistory", decoded) +end + +local function saveHistoryToDisk() + local history = noctalia.state.get("colorHistory") or {} + local encoded = noctalia.json.encode(history) + if encoded ~= nil then + noctalia.writeFile(HISTORY_FILE, encoded) + end +end + +--============================================== +-- PICKING +--============================================== + +-- Runs hyprpicker and invokes onResult(hex) on success. onResult is nil-safe +-- to call with nil (caller decides what "no result" means for that flow). +local function runPicker(onResult: (string?, string?) -> ()) + if not noctalia.commandExists("hyprpicker") then + noctalia.notifyError(tr_color_picker, tr("hyprpicker_not_installed")) + onResult(nil, nil) + return + end + + noctalia.runAsync(hyprpickerCommand(), function(result) + if result.exitCode ~= 0 then + onResult(nil, nil) + return + end + + local hex = parsePickerOutput(result.stdout or "") + if hex == nil then + noctalia.notifyError(tr_color_picker, tr("could_not_parse")) + onResult(nil, nil) + return + end + + local copyText = hex + if noctalia.getConfig("hyprpicker-format") == "rgb" then + copyText = formatRgb(hex) + elseif noctalia.getConfig("hyprpicker-lowercase") then + copyText = hex:lower() + end + + noctalia.copyToClipboard(copyText, "text/plain") + onResult(hex, copyText) + end) +end + +--============================================== +-- IPC +-- +-- "pick" - immediate commit (widget right-click). Picks, pushes to +-- history, saves to disk right away. +-- "pick-panel" - panel's own pick button. Picks and updates the selection +-- only; history/disk are untouched until "commit". +-- "commit" - panel is closing. payload = ":", the +-- selection at close time. Pushes it to history and saves. +--============================================== + +local function handlePick() + runPicker(function(hex, copyText) + if hex == nil then return end + + setSelected(hex, 1) + pushCurrentColor(hex, 1) + saveHistoryToDisk() + noctalia.notify(tr_color_picker, tr("color_picked", { color = copyText })) + end) +end + +local function handlePickFromPanel() + runPicker(function(hex, copyText) + if hex == nil then return end + + setSelected(hex, 1) + noctalia.notify(tr_color_picker, tr("color_picked", { color = copyText })) + end) +end + +local function handleCommit(payload: string?) + if payload == nil then return end + + local hex, opacityStr = payload:match("^(#%x%x%x%x%x%x):([%d%.]+)$") + if hex == nil then return end + + pushCurrentColor(hex, tonumber(opacityStr) or 1) + saveHistoryToDisk() +end + +-- Opens Noctalia's native color picker dialog (canvas + hue slider). +-- Only updates the selection, same as the hyprpicker panel button -- +-- history commit still happens on panel close, not here. The panel +-- re-renders on its own via noctalia.state.watch("selectedColor", ...). +local function handleNativePicker() + local current = noctalia.state.get("selectedColor") or "#FFFFFF" + local accepted = noctalia.openColorPicker(current, function(color) + if color == nil then + return + end + + local copyText = color + if noctalia.getConfig("hyprpicker-format") == "rgb" then + copyText = formatRgb(color) + elseif noctalia.getConfig("hyprpicker-lowercase") then + copyText = color:lower() + end + noctalia.notify(tr_color_picker, tr("color_picked", { color = copyText })) + setSelected(color, noctalia.state.get("selectedOpacity") or 1) + pushCurrentColor(color, 1) + saveHistoryToDisk() + end) + + if not accepted then + noctalia.notify(tr_color_picker, tr("picker_already_open")) + end +end + +function onIpc(event: string, payload: string?) + if event == "pick" then + handlePick() + elseif event == "picker-dialog" then + handleNativePicker() + elseif event == "pick-panel" then + handlePickFromPanel() + elseif event == "commit" then + handleCommit(payload) + end +end + +--============================================== +-- BOOT (runs once at load) +--============================================== + +noctalia.mkdirAll(STATE_DIR) +loadHistoryFromDisk() + +local bootHistory = noctalia.state.get("colorHistory") or {} +local bootTop = bootHistory[1] +if bootTop ~= nil then + setSelected(bootTop.hex, bootTop.opacity or 1) +end \ No newline at end of file diff --git a/color_picker/thumbnail.webp b/color_picker/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..2f2b2af198f0467f7dda373cc3111a1a314df8cc GIT binary patch literal 81160 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