From 074247e86599fde24162f642ed2d3e19e34863ef Mon Sep 17 00:00:00 2001 From: Yuuto <95591108+Reiling-Jeff@users.noreply.github.com> Date: Sun, 26 Jul 2026 14:39:45 +0200 Subject: [PATCH] add calculator plugin (#104) * feat: add calculator plugin * add MIT license * fix(calculator): typo * fix(calculator): wrong PANEL_ID * remove LICENSE --- calculator/README.md | 99 ++++ calculator/bar.luau | 94 ++++ calculator/panel.luau | 863 ++++++++++++++++++++++++++++++++ calculator/plugin.toml | 59 +++ calculator/thumbnail.webp | Bin 0 -> 77058 bytes calculator/translations/de.json | 38 ++ calculator/translations/en.json | 38 ++ 7 files changed, 1191 insertions(+) create mode 100644 calculator/README.md create mode 100644 calculator/bar.luau create mode 100644 calculator/panel.luau create mode 100644 calculator/plugin.toml create mode 100644 calculator/thumbnail.webp create mode 100644 calculator/translations/de.json create mode 100644 calculator/translations/en.json diff --git a/calculator/README.md b/calculator/README.md new file mode 100644 index 0000000..448a677 --- /dev/null +++ b/calculator/README.md @@ -0,0 +1,99 @@ +# Calculator + +A calculator for the Noctalia bar. It evaluates whole expressions with operator +precedence, offers both a keypad and a typed input line in its panel, and keeps +the last result visible in the bar. + +## Plugin + +| Field | Value | +| --- | --- | +| ID | `yuuto/calculator` | +| Entries | Bar widget: `bar`; panel: `panel` | + +The `panel` entry owns the calculator model and publishes it through Noctalia's +per-plugin state channel. The `bar` widget is a thin client: it reads that state +and opens the panel. + +## Usage + +Add the `bar` bar widget to your bar. It shows a calculator glyph, plus the last +result once there is one. Left click opens the panel, right click clears the +calculator. On a vertical bar only the glyph is shown, with the current +expression as its tooltip. + +The panel evaluates as you type. The small line shows the expression, the large +line the live result, and the copy button next to it puts the result on the +clipboard. + +Enter expressions either with the keypad or by typing into the input line, where +Enter evaluates. Pressing `=` keeps the result in the input, so the next +operator continues from it. The keypad uses plain text labels (`AC`, `+/-`, +`DEL`, `*`, `/`) rather than symbol glyphs, so it renders with any bar font. + +Open the panel over IPC: + +```sh +noctalia msg panel-toggle yuuto/calculator:panel +``` + +### Expression syntax + +Operators are `+`, `-`, `*`, `/` and `^`, with parentheses and the usual +precedence; `^` is right associative. A trailing `%` divides by 100, so +`200*15%` is `30`. The typed input also accepts `×`, `÷` and `−`. + +Available constants: `pi`, `tau`, `e`. + +Available functions: `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `atan2`, +`sinh`, `cosh`, `tanh`, `ln`, `log`, `log2`, `log10`, `exp`, `sqrt`, `cbrt`, +`abs`, `floor`, `ceil`, `round`, `trunc`, `sign`, `mod`, `pow`, `hypot`, `min`, +`max`. + +`log(x)` is base 10; `log(x, b)` is base `b`. `mod(a, b)` is the remainder, since +`%` means percent here. The trigonometric functions follow the angle unit +setting, shown in the panel header as `RAD` or `DEG`. + +## Settings + +### Plugin + +| Setting | Type | Default | Description | +| --- | --- | --- | --- | +| `precision` | `int` | `8` | Maximum decimals used when formatting results, 0 to 10. | +| `angle_unit` | `select` | `rad` | Angle unit for the trigonometric functions. | + +### Bar Widget + +| Setting | Type | Default | Description | +| --- | --- | --- | --- | +| `show_bar_value` | `bool` | `true` | Shows the last result next to the calculator glyph. | +| `max_bar_length` | `int` | `9` | Longer results are shortened with a trailing `~`. | + +## IPC + +Beyond opening the panel, the `panel` entry accepts three events. The `all` +target addresses every live instance. + +```sh +noctalia msg plugin yuuto/calculator:panel all eval "2+3*4" +noctalia msg plugin yuuto/calculator:panel all insert "+8" +noctalia msg plugin yuuto/calculator:panel all clear +``` + +`eval` replaces the expression and evaluates it, `insert` appends to the current +expression, and `clear` resets the calculator. + +## Notes + +Expressions are tokenized and parsed by the plugin itself, so evaluating never +runs a shell command and no external tool is required. Results reach the +clipboard through `noctalia.copyToClipboard`. + +The panel keeps its model in the plugin state channel rather than in script +locals, so clearing from the bar widget and reopening the panel stay in sync. + +## Credits + +Keypad layout and feature set are modelled on the v4 Quickshell calculator plugin +by pir0c0pter0 (MIT). diff --git a/calculator/bar.luau b/calculator/bar.luau new file mode 100644 index 0000000..b36a46c --- /dev/null +++ b/calculator/bar.luau @@ -0,0 +1,94 @@ +--!nonstrict + +local PANEL_ID = "yuuto/calculator:panel" + +local result = "0" +local expression = "" +local hasError = false + +local function maxLength() + local value = noctalia.getConfig("max_bar_length") + if type(value) ~= "number" then + return 9 + end + return math.clamp(math.floor(value), 3, 20) +end + +local function compact(text) + local limit = maxLength() + if #text <= limit then + return text + end + return text:sub(1, math.max(1, limit - 1)) .. "~" +end + +local function badge() + if noctalia.getConfig("show_bar_value") == false then + return "" + end + if hasError then + return noctalia.tr("state.error") + end + if result == "" or result == "0" then + return "" + end + return compact(result) +end + +local function render() + local container = barWidget.isVertical() and ui.column or ui.row + local text = badge() + local color = hasError and "error" or "on_surface" + + barWidget.setTooltip(expression ~= "" and expression or noctalia.tr("bar.tooltip")) + + local children = { + ui.glyph({ name = "calculator", color = color }), + } + + if text ~= "" and not barWidget.isVertical() then + table.insert(children, ui.label({ text = text, fontWeight = "bold", color = color })) + end + + barWidget.render(container({ gap = 6, align = "center" }, children)) +end + +function update() + render() +end + +noctalia.state.watch("calc.result", function(value) + if type(value) == "string" then + result = value + render() + end +end) + +noctalia.state.watch("calc.expression", function(value) + if type(value) == "string" then + expression = value + render() + end +end) + +noctalia.state.watch("calc.error", function(value) + hasError = value == true + render() +end) + +function onClick() + noctalia.togglePanel(PANEL_ID) +end + +function onRightClick() + noctalia.state.set("calc.result", "0") + noctalia.state.set("calc.expression", "") + noctalia.state.set("calc.last_expression", "") + noctalia.state.set("calc.error", false) +end + +function onIpc(event, _payload) + if event == "toggle" then + noctalia.togglePanel(PANEL_ID) + end +end diff --git a/calculator/panel.luau b/calculator/panel.luau new file mode 100644 index 0000000..4ff8c95 --- /dev/null +++ b/calculator/panel.luau @@ -0,0 +1,863 @@ +--!nonstrict + +local DEG = math.pi / 180 + +local WIDE_OPERATORS = { + ["\u{00d7}"] = "*", + ["\u{00f7}"] = "/", + ["\u{2212}"] = "-", + ["\u{2013}"] = "-", + ["\u{00b7}"] = "*", +} + +local CONSTANTS = { + pi = math.pi, + tau = math.pi * 2, + e = math.exp(1), +} + +local ARITY = { + atan2 = 2, + mod = 2, + pow = 2, + hypot = 2, +} + +local function sinh(x) + return (math.exp(x) - math.exp(-x)) / 2 +end + +local function cosh(x) + return (math.exp(x) + math.exp(-x)) / 2 +end + +local function tanh(x) + if x > 20 then + return 1 + end + if x < -20 then + return -1 + end + local a, b = math.exp(x), math.exp(-x) + return (a - b) / (a + b) +end + +local function isDigit(c) + return c >= "0" and c <= "9" +end + +local function isAlpha(c) + return (c >= "a" and c <= "z") or (c >= "A" and c <= "Z") or c == "_" +end + +local function tokenize(src) + local tokens = {} + local i = 1 + local n = #src + + while i <= n do + local wide = WIDE_OPERATORS[src:sub(i, i + 1)] or WIDE_OPERATORS[src:sub(i, i + 2)] + if wide ~= nil then + table.insert(tokens, { kind = "op", text = wide }) + i += WIDE_OPERATORS[src:sub(i, i + 1)] ~= nil and 2 or 3 + continue + end + + local c = src:sub(i, i) + + if c == " " or c == "\t" then + i += 1 + elseif isDigit(c) or (c == "." and isDigit(src:sub(i + 1, i + 1))) then + local start = i + while i <= n and isDigit(src:sub(i, i)) do + i += 1 + end + if src:sub(i, i) == "." then + i += 1 + while i <= n and isDigit(src:sub(i, i)) do + i += 1 + end + end + local mark = i + if src:sub(i, i):lower() == "e" then + local j = i + 1 + local sign = src:sub(j, j) + if sign == "+" or sign == "-" then + j += 1 + end + if isDigit(src:sub(j, j)) then + i = j + while i <= n and isDigit(src:sub(i, i)) do + i += 1 + end + else + i = mark + end + end + local value = tonumber(src:sub(start, i - 1)) + if value == nil then + return nil + end + table.insert(tokens, { kind = "num", value = value }) + elseif isAlpha(c) then + local start = i + while i <= n and (isAlpha(src:sub(i, i)) or isDigit(src:sub(i, i))) do + i += 1 + end + table.insert(tokens, { kind = "name", text = src:sub(start, i - 1):lower() }) + elseif c == "(" or c == ")" then + table.insert(tokens, { kind = c }) + i += 1 + elseif c == "," or c == ";" then + table.insert(tokens, { kind = "," }) + i += 1 + elseif c == "+" or c == "-" or c == "*" or c == "/" or c == "^" or c == "%" then + table.insert(tokens, { kind = "op", text = c }) + i += 1 + else + return nil + end + end + + return tokens +end + +local function makeFunctions(degrees) + local toAngle = degrees and function(x) + return x * DEG + end or function(x) + return x + end + + local fromAngle = degrees and function(x) + return x / DEG + end or function(x) + return x + end + + return { + sin = function(a) + return math.sin(toAngle(a[1])) + end, + cos = function(a) + return math.cos(toAngle(a[1])) + end, + tan = function(a) + return math.tan(toAngle(a[1])) + end, + asin = function(a) + return fromAngle(math.asin(a[1])) + end, + acos = function(a) + return fromAngle(math.acos(a[1])) + end, + atan = function(a) + if #a >= 2 then + return fromAngle(math.atan2(a[1], a[2])) + end + return fromAngle(math.atan(a[1])) + end, + atan2 = function(a) + return fromAngle(math.atan2(a[1], a[2])) + end, + sinh = function(a) + return sinh(a[1]) + end, + cosh = function(a) + return cosh(a[1]) + end, + tanh = function(a) + return tanh(a[1]) + end, + ln = function(a) + return math.log(a[1]) + end, + log = function(a) + if #a >= 2 then + return math.log(a[1]) / math.log(a[2]) + end + return math.log(a[1], 10) + end, + log2 = function(a) + return math.log(a[1], 2) + end, + log10 = function(a) + return math.log(a[1], 10) + end, + exp = function(a) + return math.exp(a[1]) + end, + sqrt = function(a) + return math.sqrt(a[1]) + end, + cbrt = function(a) + local x = a[1] + if x < 0 then + return -((-x) ^ (1 / 3)) + end + return x ^ (1 / 3) + end, + abs = function(a) + return math.abs(a[1]) + end, + floor = function(a) + return math.floor(a[1]) + end, + ceil = function(a) + return math.ceil(a[1]) + end, + round = function(a) + return math.round(a[1]) + end, + trunc = function(a) + local x = a[1] + return x >= 0 and math.floor(x) or math.ceil(x) + end, + sign = function(a) + return math.sign(a[1]) + end, + mod = function(a) + return a[1] % a[2] + end, + pow = function(a) + return a[1] ^ a[2] + end, + hypot = function(a) + return math.sqrt(a[1] * a[1] + a[2] * a[2]) + end, + min = function(a) + return math.min(table.unpack(a)) + end, + max = function(a) + return math.max(table.unpack(a)) + end, + } +end + +local function evaluate(source, degrees) + local tokens = tokenize(source) + if tokens == nil or #tokens == 0 then + return nil + end + + local functions = makeFunctions(degrees) + local pos = 1 + local failed = false + + local function peek() + return tokens[pos] + end + + local function fail() + failed = true + return 0 + end + + local parseExpression + local parseUnary + + local function parsePrimary() + local token = peek() + if token == nil then + return fail() + end + + if token.kind == "num" then + pos += 1 + return token.value + end + + if token.kind == "(" then + pos += 1 + local value = parseExpression() + local closing = peek() + if closing == nil or closing.kind ~= ")" then + return fail() + end + pos += 1 + return value + end + + if token.kind == "name" then + pos += 1 + local name = token.text + local following = peek() + + if following ~= nil and following.kind == "(" then + local fn = functions[name] + if fn == nil then + return fail() + end + pos += 1 + local args = {} + if peek() ~= nil and peek().kind ~= ")" then + table.insert(args, parseExpression()) + while peek() ~= nil and peek().kind == "," do + pos += 1 + table.insert(args, parseExpression()) + end + end + local closing = peek() + if closing == nil or closing.kind ~= ")" then + return fail() + end + pos += 1 + if #args < (ARITY[name] or 1) then + return fail() + end + return fn(args) + end + + local constant = CONSTANTS[name] + if constant ~= nil then + return constant + end + return fail() + end + + return fail() + end + + local function parsePostfix() + local value = parsePrimary() + while true do + local token = peek() + if token ~= nil and token.kind == "op" and token.text == "%" then + pos += 1 + value /= 100 + else + break + end + end + return value + end + + local function parsePower() + local base = parsePostfix() + local token = peek() + if token ~= nil and token.kind == "op" and token.text == "^" then + pos += 1 + return base ^ parseUnary() + end + return base + end + + function parseUnary() + local token = peek() + if token ~= nil and token.kind == "op" and (token.text == "-" or token.text == "+") then + pos += 1 + local value = parseUnary() + return token.text == "-" and -value or value + end + return parsePower() + end + + local function parseTerm() + local value = parseUnary() + while true do + local token = peek() + if token ~= nil and token.kind == "op" and (token.text == "*" or token.text == "/") then + pos += 1 + local rhs = parseUnary() + if token.text == "*" then + value *= rhs + else + if rhs == 0 then + return fail() + end + value /= rhs + end + elseif token ~= nil and token.kind == "(" then + value *= parseUnary() + else + break + end + end + return value + end + + function parseExpression() + local value = parseTerm() + while true do + local token = peek() + if token ~= nil and token.kind == "op" and (token.text == "+" or token.text == "-") then + pos += 1 + local rhs = parseTerm() + if token.text == "+" then + value += rhs + else + value -= rhs + end + else + break + end + end + return value + end + + local ok, value = pcall(parseExpression) + if not ok or failed or pos <= #tokens then + return nil + end + if type(value) ~= "number" or value ~= value or value == math.huge or value == -math.huge then + return nil + end + return value +end + +local function formatNumber(value, precision) + if value == 0 then + return "0" + end + + local magnitude = math.abs(value) + if magnitude >= 1e16 or magnitude < 1e-9 then + local text = string.format("%." .. math.min(precision, 8) .. "e", value) + local mantissa, exponent = text:match("^(.-)e([-+]%d+)$") + if mantissa ~= nil then + if mantissa:find("%.") then + mantissa = mantissa:gsub("0+$", ""):gsub("%.$", "") + end + local sign, digits = exponent:match("^([-+])0*(%d+)$") + return mantissa .. "e" .. (sign == "-" and "-" or "") .. digits + end + return text + end + + local text = string.format("%." .. precision .. "f", value) + if text:find("%.") then + text = text:gsub("0+$", ""):gsub("%.$", "") + end + if text == "-0" then + return "0" + end + return text +end + +local expression = "" +local lastExpression = "" +local result = "0" +local lastPreview = nil +local hasError = false +local inputKey = 0 + +local function precision() + local value = noctalia.getConfig("precision") + if type(value) ~= "number" then + return 8 + end + return math.clamp(math.floor(value), 0, 10) +end + +local function useDegrees() + return noctalia.getConfig("angle_unit") == "deg" +end + +local function restore() + local storedResult = noctalia.state.get("calc.result") + if type(storedResult) == "string" and storedResult ~= "" then + result = storedResult + end + local storedExpression = noctalia.state.get("calc.expression") + if type(storedExpression) == "string" then + expression = storedExpression + end + local storedLast = noctalia.state.get("calc.last_expression") + if type(storedLast) == "string" then + lastExpression = storedLast + end + hasError = noctalia.state.get("calc.error") == true + lastPreview = nil +end + +local function publish() + noctalia.state.set("calc.result", result) + noctalia.state.set("calc.expression", expression) + noctalia.state.set("calc.last_expression", lastExpression) + noctalia.state.set("calc.error", hasError) +end + +local function preview() + if expression == "" then + return nil + end + local value = evaluate(expression, useDegrees()) + if value == nil then + return nil + end + return formatNumber(value, precision()) +end + +local function displayValue() + if hasError then + return noctalia.tr("state.error") + end + if expression == "" then + return result + end + local current = preview() + if current ~= nil then + lastPreview = current + end + return current or lastPreview or result +end + +local function toggleSign() + if expression == "" then + expression = "-" + return + end + + local head, tail = expression:match("^(.-)([%d%.]+)$") + if tail == nil then + local last = expression:sub(-1) + if last:match("[%+%-%*/%^%(]") then + expression ..= "-" + end + return + end + + local before = head:sub(-1) + if before == "-" then + local previous = head:sub(-2, -2) + if head == "-" or previous:match("[%+%-%*/%^%(,]") then + expression = head:sub(1, -2) .. tail + return + end + end + expression = head .. "-" .. tail +end + +local render + +local function clearAll() + expression = "" + lastExpression = "" + result = "0" + lastPreview = nil + hasError = false + inputKey += 1 +end + +local function commit() + if expression == "" then + return + end + + local value = evaluate(expression, useDegrees()) + if value == nil then + hasError = true + lastExpression = expression + expression = "" + lastPreview = nil + inputKey += 1 + return + end + + result = formatNumber(value, precision()) + lastPreview = result + lastExpression = expression + expression = result + hasError = false + inputKey += 1 +end + +local function press(action, literal) + if hasError and action ~= "clear" then + hasError = false + expression = "" + lastExpression = "" + end + + if action == "clear" then + clearAll() + elseif action == "delete" then + expression = expression:sub(1, -2) + inputKey += 1 + elseif action == "sign" then + toggleSign() + inputKey += 1 + elseif action == "equals" then + commit() + else + expression ..= literal + inputKey += 1 + end + + publish() + render() +end + +local KEYPAD = { + { + { label = "AC", handler = "onCalcClear", variant = "destructive" }, + { label = "+/-", handler = "onCalcSign", variant = "secondary" }, + { label = "%", handler = "onCalcPercent", variant = "secondary" }, + { label = "DEL", handler = "onCalcDelete", variant = "secondary" }, + }, + { + { label = "7", handler = "onCalcSeven" }, + { label = "8", handler = "onCalcEight" }, + { label = "9", handler = "onCalcNine" }, + { label = "/", handler = "onCalcDivide", variant = "secondary" }, + }, + { + { label = "4", handler = "onCalcFour" }, + { label = "5", handler = "onCalcFive" }, + { label = "6", handler = "onCalcSix" }, + { label = "*", handler = "onCalcMultiply", variant = "secondary" }, + }, + { + { label = "1", handler = "onCalcOne" }, + { label = "2", handler = "onCalcTwo" }, + { label = "3", handler = "onCalcThree" }, + { label = "-", handler = "onCalcMinus", variant = "secondary" }, + }, + { + { label = "0", handler = "onCalcZero", grow = 2 }, + { label = ".", handler = "onCalcDecimal" }, + { label = "+", handler = "onCalcPlus", variant = "secondary" }, + }, + { + { label = "(", handler = "onCalcOpen", variant = "ghost" }, + { label = ")", handler = "onCalcClose", variant = "ghost" }, + { label = "=", handler = "onCalcEquals", variant = "primary", grow = 2 }, + }, +} + +local function keypadRow(row, rowIndex) + local buttons = {} + for index, spec in ipairs(row) do + table.insert( + buttons, + ui.button({ + key = "k" .. rowIndex .. "-" .. index, + text = spec.label, + variant = spec.variant or "default", + fontSize = 15, + height = 34, + flexGrow = spec.grow or 1, + onClick = spec.handler, + }) + ) + end + return ui.row({ key = "row" .. rowIndex, gap = 6 }, buttons) +end + +function render() + local shown = displayValue() + local hint = hasError and lastExpression or (expression ~= "" and expression or lastExpression) + local atRest = shown == "0" and expression == "" and lastExpression == "" + local canCopy = not hasError and shown ~= "" and not atRest + + local keypad = {} + for index, row in ipairs(KEYPAD) do + table.insert(keypad, keypadRow(row, index)) + end + + panel.render(ui.column({ gap = 10, padding = 14 }, { + ui.row({ gap = 8, align = "center" }, { + ui.glyph({ name = "calculator", size = 16, color = "primary" }), + ui.label({ + text = noctalia.tr("panel.title"), + fontSize = 15, + fontWeight = "bold", + color = "on_surface", + flexGrow = 1, + }), + ui.label({ + text = noctalia.tr(useDegrees() and "panel.deg" or "panel.rad"), + fontSize = 11, + color = "on_surface/0.55", + }), + }), + + ui.column({ gap = 2, padding = 10, fill = "primary/0.08", radius = 10 }, { + ui.label({ + text = hint, + fontSize = 11, + color = "on_surface/0.6", + textAlign = "right", + maxLines = 1, + }), + ui.row({ gap = 6, align = "center" }, { + ui.label({ + text = shown, + fontSize = 30, + fontWeight = "bold", + color = hasError and "error" or "on_surface", + textAlign = "right", + maxLines = 1, + flexGrow = 1, + }), + ui.button({ + key = "copy", + glyph = "copy", + glyphSize = 15, + variant = "ghost", + controlSize = "sm", + contentAlign = "center", + tooltip = noctalia.tr("panel.copy"), + visible = canCopy, + onClick = "onCalcCopy", + }), + }), + }), + + ui.input({ + key = "expr-" .. inputKey, + value = expression, + placeholder = noctalia.tr("panel.placeholder"), + fontSize = 13, + controlSize = "sm", + focus = true, + onChange = "onCalcInputChange", + onSubmit = "onCalcInputSubmit", + }), + + ui.column({ gap = 6 }, keypad), + })) +end + +function onCalcClear() + press("clear") +end + +function onCalcSign() + press("sign") +end + +function onCalcPercent() + press("append", "%") +end + +function onCalcDelete() + press("delete") +end + +function onCalcZero() + press("append", "0") +end + +function onCalcOne() + press("append", "1") +end + +function onCalcTwo() + press("append", "2") +end + +function onCalcThree() + press("append", "3") +end + +function onCalcFour() + press("append", "4") +end + +function onCalcFive() + press("append", "5") +end + +function onCalcSix() + press("append", "6") +end + +function onCalcSeven() + press("append", "7") +end + +function onCalcEight() + press("append", "8") +end + +function onCalcNine() + press("append", "9") +end + +function onCalcDecimal() + press("append", ".") +end + +function onCalcPlus() + press("append", "+") +end + +function onCalcMinus() + press("append", "-") +end + +function onCalcMultiply() + press("append", "*") +end + +function onCalcDivide() + press("append", "/") +end + +function onCalcOpen() + press("append", "(") +end + +function onCalcClose() + press("append", ")") +end + +function onCalcEquals() + press("equals") +end + +function onCalcCopy() + local shown = displayValue() + if hasError or shown == "" then + return + end + if noctalia.copyToClipboard(shown, "text/plain") then + noctalia.notify(noctalia.tr("panel.title"), noctalia.tr("panel.copied", { value = shown })) + end +end + +function onCalcInputChange(value) + expression = value + hasError = false + publish() + render() +end + +function onCalcInputSubmit() + press("equals") +end + +function onOpen(_context) + restore() + inputKey += 1 + render() +end + +function onIpc(event, payload) + if event == "clear" then + clearAll() + elseif event == "eval" and type(payload) == "string" then + expression = payload + commit() + elseif event == "insert" and type(payload) == "string" then + expression ..= payload + inputKey += 1 + else + return + end + publish() + render() +end + +noctalia.state.watch("calc.expression", function(value) + if type(value) ~= "string" or value == expression then + return + end + restore() + inputKey += 1 + render() +end) + +restore() +publish() diff --git a/calculator/plugin.toml b/calculator/plugin.toml new file mode 100644 index 0000000..33ceef9 --- /dev/null +++ b/calculator/plugin.toml @@ -0,0 +1,59 @@ +id = "yuuto/calculator" +name = "Calculator" +version = "1.0.0" +plugin_api = 3 +author = "yuuto" +license = "MIT" +icon = "calculator" +description = "A theme-aware calculator with a bar widget and a panel: full expression evaluation, a button grid, and typed input." +dependencies = [] +tags = ["utility", "productivity", "bar", "panel"] + +[[setting]] +key = "precision" +type = "int" +label_key = "settings.precision.label" +description_key = "settings.precision.description" +default = 8 +min = 0 +max = 10 + +[[setting]] +key = "angle_unit" +type = "select" +label_key = "settings.angle_unit.label" +description_key = "settings.angle_unit.description" +default = "rad" +options = [ + { value = "rad", label_key = "settings.angle_unit.options.rad" }, + { value = "deg", label_key = "settings.angle_unit.options.deg" }, +] + +[[widget]] +id = "bar" +entry = "bar.luau" + + [[widget.setting]] + key = "show_bar_value" + type = "bool" + label_key = "settings.show_bar_value.label" + description_key = "settings.show_bar_value.description" + default = true + + [[widget.setting]] + key = "max_bar_length" + type = "int" + label_key = "settings.max_bar_length.label" + description_key = "settings.max_bar_length.description" + default = 9 + min = 3 + max = 20 + +[[panel]] +id = "panel" +entry = "panel.luau" +width = 320 +height = 452 +placement = "attached" +position = "auto" +open_near_click = true diff --git a/calculator/thumbnail.webp b/calculator/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..a373d7337eb06d66829dfd6f9de18f7b358e703e GIT binary patch literal 77058 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/oxb>bmKyLkqwA17P=c=3A)Q}1R0rf()C3GWnt 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