From 7f61c1135eb5f663f26690bb43eec4b9df3c3d13 Mon Sep 17 00:00:00 2001 From: Afonso Neto Date: Tue, 3 Nov 2026 21:37:22 +0000 Subject: [PATCH 1/3] feat: add Show in Large Type root-search row and policy Port onto the restructured omacast tree (flattened layout, flea-search backend). Add fallback:large-type to the root-search fallbacks and answer its open action with a { largeType: query } outcome for the window. core/LargeType.js holds the testable policy: displayText (blank input becomes a no-op, content kept exactly) and fitRange (bounded pixel sizes for the overlay's Text.Fit). No new dependencies. --- Backend.qml | 5 ++++ core/LargeType.js | 49 +++++++++++++++++++++++++++++++++ core/RootSearch.js | 7 +++-- tests/calculator.test.js | 2 +- tests/largetype.test.js | 59 ++++++++++++++++++++++++++++++++++++++++ tests/rootsearch.test.js | 14 +++++++++- 6 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 core/LargeType.js create mode 100644 tests/largetype.test.js diff --git a/Backend.qml b/Backend.qml index 8895670..02b6fc9 100644 --- a/Backend.qml +++ b/Backend.qml @@ -11,6 +11,7 @@ import "core/FleaSearch.js" as FleaSearch import "core/Frecency.js" as Frecency import "core/OmarchyMenu.js" as OmarchyMenu import "core/RootSearch.js" as RootSearch +import "core/LargeType.js" as LargeType import "core/Calculator.js" as Calculator import "services" @@ -477,6 +478,10 @@ Item { } var fallback = RootSearch.FALLBACKS.filter(function(f) { return f.id === (data && data.id) })[0] if (fallback) { + if (fallback.largeType) { + // Blank input comes back empty and the window no-ops on it. + return { largeType: LargeType.displayText(data && data.query) } + } Util.execArgv(["omarchy-launch-browser", RootSearch.fallbackUrl(fallback, data.query)]) return { close: true } } diff --git a/core/LargeType.js b/core/LargeType.js new file mode 100644 index 0000000..a0e74f4 --- /dev/null +++ b/core/LargeType.js @@ -0,0 +1,49 @@ + +// Large Type (Ctrl+L): the launcher query shown across the whole screen, as +// Alfred's Large Type does (ref: alfredapp.com/help/features/large-type). +// This module is policy only — the QML side owns measuring and painting — +// so both the display guard and the font bounds are testable in node. + +// Outer margin as a fraction of the smaller screen edge, so the glyphs keep +// off the bezel at any aspect ratio. +var MARGIN_RATIO = 0.08 + +// Font bounds in px at zoom 1. Text.Fit shrinks from `max` down to `min`; +// past `min` the text is clipped, which beats shrinking to unreadable. +var MIN_PIXEL_SIZE = 24 +var MAX_PIXEL_SIZE = 1024 + +// The text to display, or "" when there is nothing to show. Content is kept +// exactly (case, punctuation, inner spacing, markup included); only outer +// whitespace is dropped, and blank input becomes "" so the caller can no-op +// instead of taking over the screen. +function displayText(query) { + return String(query == null ? "" : query).trim() +} + +// Pixel-size bounds for a Text.Fit inside a screen of w × h. Returns the +// text box (inside the margins) plus the font range. Null when the geometry +// is unusable. Fitting is text-independent: Text.Fit walks the sizes itself, +// so the loop stays inside Qt and these bounds can never be exceeded. +function fitRange(w, h, zoom) { + w = Number(w) + h = Number(h) + if (!(w > 0) || !(h > 0)) return null + var z = zoom > 0 ? Number(zoom) : 1 + var margin = Math.min(w, h) * MARGIN_RATIO + var boxW = Math.max(1, Math.floor(w - margin * 2)) + var boxH = Math.max(1, Math.floor(h - margin * 2)) + var max = Math.max(1, Math.min(Math.round(MAX_PIXEL_SIZE * z), Math.min(boxW, boxH))) + var min = Math.min(Math.max(1, Math.round(MIN_PIXEL_SIZE * z)), max) + return { min: min, max: max, width: boxW, height: boxH } +} + +if (typeof module !== "undefined") { + module.exports = { + MARGIN_RATIO: MARGIN_RATIO, + MIN_PIXEL_SIZE: MIN_PIXEL_SIZE, + MAX_PIXEL_SIZE: MAX_PIXEL_SIZE, + displayText: displayText, + fitRange: fitRange + } +} diff --git a/core/RootSearch.js b/core/RootSearch.js index b424a03..f30a817 100644 --- a/core/RootSearch.js +++ b/core/RootSearch.js @@ -2,8 +2,11 @@ var SUGGESTIONS_LIMIT = 6 var FALLBACKS = [ - { id: "fallback:google", title: "Search Google", icon: "", url: "https://www.google.com/search?q={query}" }, - { id: "fallback:duckduckgo", title: "Search DuckDuckGo", icon: "", url: "https://duckduckgo.com/?q={query}" } + { id: "fallback:google", title: "Search Google", icon: "", url: "https://www.google.com/search?q={query}" }, + { id: "fallback:duckduckgo", title: "Search DuckDuckGo", icon: "", url: "https://duckduckgo.com/?q={query}" }, + // Not a web search: Backend's performAction answers it with a `largeType` + // outcome for the window (core/LargeType.js holds the display policy). + { id: "fallback:large-type", title: "Show in Large Type", icon: "\uf034", subtitle: "Display the query across the screen · Ctrl+L", largeType: true } ] // Web searches as root commands with an inline argument pill (ref 04 §2.2 diff --git a/tests/calculator.test.js b/tests/calculator.test.js index bde8917..677a612 100644 --- a/tests/calculator.test.js +++ b/tests/calculator.test.js @@ -170,7 +170,7 @@ test("root search puts the Calculator section first; ↵ copies, Ctrl ↵ pastes assert.equal(sections[0].id, "calculator") assert.equal(sections[0].rows[0].candidate.calcResult, "4") assert.equal(sections.at(-1).id, "fallback-commands") - assert.deepEqual(sections.at(-1).rows.map((r) => r.candidate.id), ["fallback:google", "fallback:duckduckgo"]) + assert.deepEqual(sections.at(-1).rows.map((r) => r.candidate.id), ["fallback:google", "fallback:duckduckgo", "fallback:large-type"]) const actions = RS.actionsFor({ kind: "calculator" }).map((a) => a.id) assert.deepEqual(actions.slice(0, 2), ["copy-answer", "paste-answer"]) const calcHistory = RS.rootSections(RS.BUILTINS.map(RS.builtinCandidate), "calc hist", { commands: {}, frecency: {}, nowMs: NOW }, deps) diff --git a/tests/largetype.test.js b/tests/largetype.test.js new file mode 100644 index 0000000..de295ca --- /dev/null +++ b/tests/largetype.test.js @@ -0,0 +1,59 @@ +const test = require("node:test") +const assert = require("node:assert/strict") +const LT = require("../core/LargeType.js") + +test("displayText keeps content exactly, including markup and accents", () => { + assert.equal(LT.displayText("Hello, World!"), "Hello, World!") + assert.equal(LT.displayText("Hello"), "Hello") + assert.equal(LT.displayText("Reunião às 15h — até já!"), "Reunião às 15h — até já!") + assert.equal(LT.displayText("a".repeat(4000)), "a".repeat(4000)) +}) + +test("displayText trims outer whitespace only", () => { + assert.equal(LT.displayText(" padded "), "padded") + assert.equal(LT.displayText("keep inner spacing"), "keep inner spacing") +}) + +test("displayText rejects blank input so the overlay never takes over empty", () => { + assert.equal(LT.displayText(""), "") + assert.equal(LT.displayText(" \t\n "), "") + assert.equal(LT.displayText(null), "") + assert.equal(LT.displayText(undefined), "") +}) + +test("fitRange is sane on a desktop-sized screen", () => { + const fit = LT.fitRange(1920, 1080, 1) + assert.ok(fit, "expected a range for 1920x1080") + assert.ok(fit.min >= 1) + assert.ok(fit.max > fit.min) + assert.ok(fit.max <= LT.MAX_PIXEL_SIZE) + assert.ok(fit.width < 1920 && fit.height < 1080, "text box leaves a margin") + assert.ok(fit.width > 0 && fit.height > 0) +}) + +test("fitRange never returns NaN, negatives or an inverted range", () => { + const boxes = [[0, 0, 1], [-10, 500, 1], [500, -10, 1], [1, 1, 1], [1920, 1080, 0], [1920, 1080, -2], [Number.NaN, 1080, 1], [10, Number.NaN, 1.5]] + for (const [w, h, z] of boxes) { + const fit = LT.fitRange(w, h, z) + if (!fit) continue + for (const v of [fit.min, fit.max, fit.width, fit.height]) + assert.ok(Number.isFinite(v) && v >= 1, `bad value ${v} for ${w}x${h} zoom ${z}`) + assert.ok(fit.min <= fit.max, `inverted range for ${w}x${h}`) + } +}) + +test("a tiny box collapses to a valid range instead of failing", () => { + const fit = LT.fitRange(4, 4, 1) + assert.ok(fit) + assert.equal(fit.min, fit.max) + assert.ok(fit.min >= 1) + assert.ok(fit.width >= 1 && fit.height >= 1) +}) + +test("fitRange scales with uiZoom but stays bounded", () => { + // Large enough that the absolute cap, not the screen edge, is binding. + const a = LT.fitRange(4000, 3000, 1) + const b = LT.fitRange(4000, 3000, 1.5) + assert.ok(b.max > a.max) + assert.ok(b.max <= Math.round(LT.MAX_PIXEL_SIZE * 1.5)) +}) diff --git a/tests/rootsearch.test.js b/tests/rootsearch.test.js index f745aa4..0e618d1 100644 --- a/tests/rootsearch.test.js +++ b/tests/rootsearch.test.js @@ -51,7 +51,19 @@ test("a query always ends with the fallback section", () => { assert.equal(sections.length, 1) assert.equal(sections[0].id, "fallback-commands") assert.equal(sections[0].title, "Use “zzzz-nothing” with…") - assert.deepEqual(titles(sections[0]), ["Search Google", "Search DuckDuckGo"]) + assert.deepEqual(titles(sections[0]), ["Search Google", "Search DuckDuckGo", "Show in Large Type"]) +}) + +test("Show in Large Type is a query-level fallback with a display action", () => { + const row = results("meeting at noon").at(-1).rows.at(-1).candidate + assert.equal(row.id, "fallback:large-type") + assert.equal(row.title, "Show in Large Type") + assert.equal(row.kind, "fallback") + assert.ok(!row.url, "large type is not a web search") + assert.deepEqual(RS.actionsFor(row).map(a => a.id), ["open"]) + assert.equal(RS.actionsFor(row)[0].title, "Show in Large Type") + assert.ok(results("").flatMap(s => s.rows).every(r => r.candidate.id !== row.id), "never on the empty root") + assert.ok(RS.submenuSections(candidates(), "trigger", "show me", ctx(), deps).flatMap(s => s.rows).every(r => r.candidate.id !== row.id), "never inside submenus") }) test("an exact alias puts its command on top (Phase 1 accept)", () => { From 3c52a9098156ed4fa174c8fbcf2e47bedd2e5d95 Mon Sep 17 00:00:00 2001 From: Afonso Neto Date: Tue, 3 Nov 2026 21:38:02 +0000 Subject: [PATCH 2/3] feat: Large Type overlay in the launcher window Port onto the restructured omacast tree. Ctrl+L shows the current query across the screen, as Alfred's Large Type does: the card hides and LargeTypeOverlay paints an opaque themed surface with the text fitted by Text.Fit between the core bounds. Esc, a click or Ctrl+L again restores the card with the query and focus intact. The mode resets in closePopups so hide/show cycles never leave it stale, and blank or whitespace-only queries are a no-op. --- ui/LargeTypeOverlay.qml | 52 +++++++++++++++++++++++++++++++++++++++++ ui/LauncherWindow.qml | 52 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 ui/LargeTypeOverlay.qml diff --git a/ui/LargeTypeOverlay.qml b/ui/LargeTypeOverlay.qml new file mode 100644 index 0000000..38d95a8 --- /dev/null +++ b/ui/LargeTypeOverlay.qml @@ -0,0 +1,52 @@ +import QtQuick +import qs.Commons +import "../core/LargeType.js" as LargeType + +// Large Type (Ctrl+L): the query across the whole screen, as Alfred's Large +// Type does. Dynamic text is always PlainText — user input is never markup — +// and Text.Fit walks the sizes itself inside the bounds from +// core/LargeType.js, so fitting stays bounded for any input length. +Rectangle { + id: overlay + + property string text: "" + property var look: null + property real zoom: 1 + + function px(v) { return Math.round(Style.space(v) * overlay.zoom) } + + readonly property var fit: LargeType.fitRange(overlay.width, overlay.height, overlay.zoom) + + color: overlay.look ? overlay.look.background : "#000000" + + Text { + id: display + anchors.centerIn: parent + width: overlay.fit ? overlay.fit.width : parent.width + height: overlay.fit ? overlay.fit.height : parent.height + textFormat: Text.PlainText + text: overlay.text + color: overlay.look ? overlay.look.foreground : "#ffffff" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + wrapMode: Text.WrapAtWordBoundaryOrAnywhere + fontSizeMode: Text.Fit + font.family: overlay.look ? overlay.look.fontFamily : "" + font.pixelSize: overlay.fit ? overlay.fit.max : 64 + minimumPixelSize: overlay.fit ? overlay.fit.min : 8 + clip: true + } + + Text { + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: overlay.px(16) + textFormat: Text.PlainText + text: "Esc to close" + visible: overlay.width >= 500 && overlay.height >= 300 + color: overlay.look ? overlay.look.foreground : "#ffffff" + opacity: 0.4 + font.family: overlay.look ? overlay.look.fontFamily : "" + font.pixelSize: Math.round(Style.font.bodySmall * overlay.zoom) + } +} diff --git a/ui/LauncherWindow.qml b/ui/LauncherWindow.qml index 618a8ad..70ce0fc 100644 --- a/ui/LauncherWindow.qml +++ b/ui/LauncherWindow.qml @@ -5,6 +5,7 @@ import qs.Commons import qs.Commons as Commons import qs.Ui import "../core/RootSearch.js" as RootSearch +import "../core/LargeType.js" as LargeType import "../core/Rows.js" as Rows // Omarchy 4.0.x dropped qs.Ui.OverlayWindow; this is the same full-screen @@ -79,6 +80,10 @@ PanelWindow { property var aboutRows: [] property var alert: null + // Large Type (Ctrl+L): the query across the screen while the card is hidden. + property bool largeTypeOpen: false + property string largeTypeText: "" + // Inline argument pills for the selected command: argFocus -1 is the // search field, 0.. an argument. property var argDefs: [] @@ -88,8 +93,9 @@ PanelWindow { // Navigation bindings (ref 04 §2.8): emacs moves with Ctrl+N (Ctrl+P is the // dropdown); vim-motions with Ctrl+J/K, which moves the action panel to - // Alt+K. Ctrl+B/F and Ctrl+H/L move a text cursor in Raycast; our search - // field has none, so they do nothing here. [D] + // Alt+K. Ctrl+B/F and Ctrl+H move a text cursor in Raycast; our search + // field has none, so they do nothing here, and Ctrl+L shows the query in + // Large Type. [D] readonly property bool vim: window.general.navigationBindings === "vim-motions" readonly property string actionPanelKeys: window.vim ? "Alt K" : "Ctrl K" @@ -119,6 +125,7 @@ PanelWindow { window.toastPanelOpen = false window.aboutOpen = false window.alert = null + window.largeTypeOpen = false } function prepare(payload) { @@ -323,6 +330,7 @@ PanelWindow { var outcome = r.data || {} if (outcome.confirm) { window.alert = { spec: outcome.confirm, payload: payload }; return } if (outcome.push) { window.push(outcome.push); return } + if (outcome.largeType) { window.openLargeType(outcome.largeType); return } if (outcome.close) { if (outcome.hud) window.hud(outcome.hud) window.dismissRequested() @@ -341,6 +349,21 @@ PanelWindow { window.request(payload) } + // Large Type shows the query as-is; blank input is a no-op instead of a + // blank takeover. The text is snapshotted so it can't change while shown. + function openLargeType(text) { + var display = LargeType.displayText(text) + if (!display) return + window.largeTypeText = display + window.largeTypeOpen = true + } + + function closeLargeType() { + window.largeTypeOpen = false + window.largeTypeText = "" + keyCatcher.forceActiveFocus() + } + function performNth(n) { var list = window.actionsForSelected() if (list.length > n) window.perform(list[n].id) @@ -560,6 +583,13 @@ PanelWindow { var key = event.key var enter = key === Qt.Key_Return || key === Qt.Key_Enter + // Large Type is topmost: Esc or Ctrl+L leaves it, and everything else is + // swallowed so typing can't land in the query underneath. + if (window.largeTypeOpen) { + if (key === Qt.Key_Escape || (ctrl && !shift && !alt && key === Qt.Key_L)) window.closeLargeType() + return true + } + if (window.alert) { if (key === Qt.Key_Escape) window.alert = null else if (enter) window.confirmAlert() @@ -594,6 +624,10 @@ PanelWindow { return window.handlePopupKey(event, actionPanel.item, ctrl, alt) } + // Ctrl+L shows the query in Large Type; Raycast used it to move a text + // cursor, which our search field has no use for (see the note above). + if (ctrl && !shift && !alt && !meta && key === Qt.Key_L && LargeType.displayText(window.query)) { window.openLargeType(window.query); return true } + if (window.view.kind === "alias") { if (enter) { window.saveAlias(); return true } if (key === Qt.Key_Space) return true @@ -657,11 +691,15 @@ PanelWindow { MouseArea { anchors.fill: parent - onClicked: if (!window.backend.config.keepVisibleOnFocusLoss) window.dismissRequested() + onClicked: { + if (window.largeTypeOpen) { window.closeLargeType(); return } + if (!window.backend.config.keepVisibleOnFocusLoss) window.dismissRequested() + } } BorderSurface { id: card + visible: !window.largeTypeOpen width: window.cardWidth height: window.compact ? window.headerHeight + card.borderTop + card.borderBottom : window.fullHeight radius: Math.max(Style.cornerRadius, window.px(8)) @@ -1131,4 +1169,12 @@ PanelWindow { } } } + + LargeTypeOverlay { + visible: window.largeTypeOpen + anchors.fill: parent + text: window.largeTypeText + look: window.look + zoom: window.zoom + } } From f3815f6eb11bbcd4f9fcd87127ee566116f1562e Mon Sep 17 00:00:00 2001 From: Afonso Neto Date: Tue, 3 Nov 2026 21:38:42 +0000 Subject: [PATCH 3/3] docs: document Large Type Port onto the restructured omacast tree. Document Ctrl+L and the fallback row in the README keyboard table and a short section with a screenshot, and record the feature in the CLAUDE.md status. --- CLAUDE.md | 8 +++++--- README.md | 14 ++++++++++++++ docs/screenshots/large-type.png | Bin 0 -> 75491 bytes 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 docs/screenshots/large-type.png diff --git a/CLAUDE.md b/CLAUDE.md index b9d6019..57256a4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -116,12 +116,12 @@ Renamed **raylinux → oma-launcher → oma-cast** on 2026-10-19, then **oma-cas Works: - **Root search** ported from ref 02 §4.2–4.6 (`core/Ranker.js`, `core/Frecency.js`, golden tests). Sections (`core/RootSearch.js`): - empty root: Favorites, Suggestions (frecency > 1, top 6), Commands, Applications - - query: Results, then `Use "" with…` (Google, DuckDuckGo fallbacks) + - query: Results, then `Use "" with…` (Google, DuckDuckGo, Show in Large Type fallbacks) - **Providers:** apps from `shell.appLibrary`, the whole Omarchy menu (about 400 items, with breadcrumbs, guards, ✓ state and font/power-profile provider rows), and the built-in "Omarchy Menu". - **Opening an open app [D]:** ↵ on an app focuses its most recently used window, switching to its workspace, and launches only when none is open. Windows match by desktop id, `StartupWMClass`, or the URL Chromium/Brave web app classes are built from (`RootSearch.findAppWindow`). The focus waits for the `omacast` layer to unmap, since Hyprland refuses focus while it holds the keyboard. Focus doesn't raise on Omarchy 4.5's floating workspaces, so the window is then brought to the top, and one minimized to the dock is moved back first, the way the dock does it. Shift+↵ ("Open New Window") always launches. - **Ranking state:** frecency (+100 per launch, 10-day half-life) and learned search terms in `db/frecency.json`. Aliases (exact → top; duplicates rejected), favourites (Ctrl+Shift+F, reorder Ctrl+Alt+↑↓) and disabled commands live in `db/settings.json` `commands`. - **Navigation:** pushed Omarchy submenus (search within them), the alias editor, back with Esc / Ctrl+[ / Backspace on an empty query / the header arrow, and Shift+Esc to pop to root. -- **Keyboard:** Ctrl+K action panel (filterable, per-row shortcuts), ↵ / Ctrl+↵ / Ctrl+Shift+↵ for the first three actions, Ctrl+1–9, Ctrl+↑↓ to jump sections, PageUp/PageDown, ↑ on an empty root for search history, Ctrl+Shift+C copy, Alt+Shift+D disable, Ctrl + / − / 0 zoom. +- **Keyboard:** Ctrl+K action panel (filterable, per-row shortcuts), ↵ / Ctrl+↵ / Ctrl+Shift+↵ for the first three actions, Ctrl+1–9, Ctrl+↑↓ to jump sections, PageUp/PageDown, ↑ on an empty root for search history, Ctrl+Shift+C copy, Alt+Shift+D disable, Ctrl+L Large Type, Ctrl + / − / 0 zoom. - Navigation bindings (`general.navigationBindings`): `emacs` moves down with Ctrl+N; `vim-motions` moves with Ctrl+J/K and puts the action panel on **Alt+K**. Set it with `omacast call settings.updateGeneralSettings '{"navigationBindings":"vim-motions"}'`. - **Ctrl+P** opens the root dropdown (All / Applications / Commands); emacs Ctrl+P = up only works inside popups. - **Ctrl+T** opens the toast's actions (Copy Error Message on failures, Undo after Disable Command). **Ctrl+Shift+K** opens the About panel for the selected row. @@ -150,7 +150,9 @@ Works: ↵ copies the answer (HUD), Ctrl+↵ pastes it (wl-copy on stdin, then Shift+Insert), Ctrl+Shift+C copies "question = answer". Each one saves to **Calculator History** (`db/calculator.json`, 4096 rows / 90 days): a built-in command and pushed view, searchable, Ctrl+D deletes an entry, Ctrl+Shift+D deletes all. RPC: `calculator.calculate|historyGetAll|historyDelete|historyDeleteAll|refreshCurrencies|getCurrencies`. A bare number, word or quantity (`42`, `firefox`, `5 kg`) never produces a row, because the section takes ↵. - **Latency:** show → mapped in 59–66 ms, hide in 24–42 ms on Omarchy 4.0.6 (`tests/smoke.sh`; it was 37–44 ms on the old `OverlayWindow`). -- **Tests:** root search, calculator and privacy coverage (`node --test tests/*.test.js`). +- **Tests:** root search, calculator, Large Type policy and privacy coverage (`node --test tests/*.test.js`). + +**Large Type (fork, 2026-11-03):** Ctrl+L (or the "Show in Large Type" fallback row, which answers with a `{ largeType: query }` outcome from `rootSearch.performAction`) shows the current root-search query across the screen, as Alfred's Large Type does. It is a mode inside `LauncherWindow`, not a second surface: the card hides, `ui/LargeTypeOverlay.qml` paints an opaque theme background with the text, and Esc, a click or Ctrl+L again restores the card with the query and focus intact. Blank or whitespace-only input is a no-op (`core/LargeType.js` `displayText`), the text is snapshotted so it cannot change while shown, and the overlay state resets in `closePopups()` so hide/show cycles never leave it stale. Fitting is Qt's `Text.Fit` between bounds from `core/LargeType.js` (`fitRange`), so sizing stays bounded for any input length; the query renders `Text.PlainText`, never markup. **Default-agent hand-off:** removed 2026-11-02 after the marketplace review; it exposed the question in process arguments (SPEC §2.0). diff --git a/README.md b/README.md index 5900ced..ca9a7d2 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,19 @@ cache and state directories to the `omacast` names. In a development checkout, ` the old plugin link and `~/.local/bin/oma-cast`, and `omacast setup hyprland` moves `oma-cast.lua` to `omacast.lua`, keeping your key. `omacast doctor` reports anything left over. +## Large Type + +Type a message in the launcher and press **Ctrl+L** — it appears in very large +characters across the whole screen, so someone across the room can read it. +**Esc**, a click anywhere, or **Ctrl+L** again brings the launcher back with +your text still in the search field, ready to edit. "Show in Large Type" also +appears under the "Use \"\" with…" fallbacks. + +The overlay follows your Omarchy theme, sizes the text to fit anything from a +word to a wall of text, and renders the query as plain text — never markup. + +![Large Type showing 'Standup in 5 minutes' across the screen](docs/screenshots/large-type.png) + ## Keyboard | Key | Does | @@ -122,6 +135,7 @@ the old plugin link and `~/.local/bin/oma-cast`, and `omacast setup hyprland` mo | `Shift+↵` | Open a new window of an app (`↵` switches to the one already open) | | `Ctrl+K` | Open the action panel | | `Super+V` / `Ctrl+V` / `Ctrl+Shift+V` / `Shift+Insert` | Paste text into the query (also accepts clipboard-history selections) | +| `Ctrl+L` | Show the query in Large Type (`Esc` dismisses) | | `Ctrl+1`…`9` | Pick a result | | `↑` on an empty search | Search history | | `Ctrl+↑` / `Ctrl+↓` | Jump between sections | diff --git a/docs/screenshots/large-type.png b/docs/screenshots/large-type.png new file mode 100644 index 0000000000000000000000000000000000000000..566f76506b324d8ae0a0b5de49ab588382ccd127 GIT binary patch literal 75491 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 z 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 literal 0 HcmV?d00001