<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>gloss</title><link>https://nimbleterminal.com/gloss/docs/</link><description>Recent content on gloss</description><generator>Hugo</generator><language>en</language><atom:link href="https://nimbleterminal.com/gloss/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Install</title><link>https://nimbleterminal.com/gloss/docs/guide/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/install/</guid><description>&lt;h1 id="install"&gt;Install&lt;a class="anchor" href="#install"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;With &lt;a href="https://brew.sh"&gt;Homebrew&lt;/a&gt;, on macOS or Linux:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install --cask nimbleterminal/tap/gloss&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Homebrew installation note includes &lt;code&gt;gloss skill install&lt;/code&gt; for AI agents,&#10;and two tools for video, which gloss needs only for that:&#10;&lt;a href="https://formulae.brew.sh/formula/mpv"&gt;mpv&lt;/a&gt;, whose library plays videos in the&#10;viewer, and &lt;a href="https://formulae.brew.sh/formula/ffmpeg"&gt;FFmpeg&lt;/a&gt;, whose &lt;code&gt;ffprobe&lt;/code&gt;&#10;and &lt;code&gt;ffmpeg&lt;/code&gt; describe them and draw their frames for previews, thumbnails and&#10;exports. Without mpv a video does not play; without FFmpeg it plays, without&#10;details or a still. On Debian or Ubuntu, install the &lt;code&gt;libmpv2&lt;/code&gt; (or &lt;code&gt;mpv&lt;/code&gt;) and&#10;&lt;code&gt;ffmpeg&lt;/code&gt; packages; on Windows, put &lt;code&gt;libmpv-2.dll&lt;/code&gt; and FFmpeg on your &lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Using gloss</title><link>https://nimbleterminal.com/gloss/docs/guide/using/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/using/</guid><description>&lt;h1 id="using-gloss"&gt;Using gloss&lt;a class="anchor" href="#using-gloss"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;gloss shows the files you name, or the contents of a folder, or what you pipe into it. With no file it opens empty: drop files on it, or press &lt;code&gt;o&lt;/code&gt; to browse. An &lt;code&gt;http://&lt;/code&gt; or &lt;code&gt;https://&lt;/code&gt; address in place of a file is downloaded first, then shown like the file it is; see &lt;a href="#opening-a-web-address"&gt;Opening a web address&lt;/a&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss photo.png drawing.svg report.pdf model.stl&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --menu photo.png report.pdf model.stl &lt;span style="color:#75715e"&gt;# a menu to choose among them&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --preview photo.png report.pdf model.stl &lt;span style="color:#75715e"&gt;# the menu, with a preview pane&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Kitty graphics are selected automatically on supporting terminals, with colored&#10;half-block glyphs as a fallback. The program uses the alternate screen and&#10;restores the terminal on exit. With &lt;code&gt;-X&lt;/code&gt; (&lt;code&gt;--no-alt-screen&lt;/code&gt;, as in &lt;code&gt;less&lt;/code&gt;) it&#10;draws on the main screen instead: the scrollback is left alone, and the last&#10;view stays where it was drawn when you quit. The choice can wait until you&#10;quit: &lt;code&gt;q&lt;/code&gt; quits as launched, and &lt;code&gt;Q&lt;/code&gt; quits leaving the last view in the&#10;scrollback either way, so a picture worth keeping beside the next command&#10;stays, and one that is not does not. Direct graphics transport works over SSH; no shared&#10;filesystem or external converter is needed. In tmux, enable passthrough with&#10;&lt;code&gt;set -g allow-passthrough on&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Controls</title><link>https://nimbleterminal.com/gloss/docs/guide/controls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/controls/</guid><description>&lt;h1 id="controls"&gt;Controls&lt;a class="anchor" href="#controls"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Action&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;q&lt;/code&gt;, &lt;code&gt;Ctrl-C&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Quit&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;q&lt;/code&gt;, &lt;code&gt;Q&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Quit / quit leaving the last view in the scrollback, whatever &lt;code&gt;-X&lt;/code&gt; said&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;?&lt;/code&gt;, &lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Show help (including the build version) / dismiss help&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;f&lt;/code&gt; in typeset text&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview font pairs: arrows select, Enter keeps, Esc restores; &lt;code&gt;+&lt;/code&gt;/&lt;code&gt;-&lt;/code&gt; still zoom&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;T&lt;/code&gt; over a document&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview themes: arrows select, Enter keeps, Esc restores&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;F2&lt;/code&gt; over a document&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview languages: arrows select, Enter keeps, Esc, &lt;code&gt;q&lt;/code&gt; or &lt;code&gt;F2&lt;/code&gt; restores. &lt;strong&gt;System&lt;/strong&gt; follows the locale&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Back to the file list, with previews, from a document&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;t&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;In the file list, show the files as a grid of thumbnails, and back&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;m&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Open the file-selection menu&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;o&lt;/code&gt;, &lt;code&gt;O&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Browse folders for a file to open&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;?&lt;/code&gt; with an empty browser filter, or &lt;code&gt;F1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Show file-browser help; Esc/F1 returns to the same filter and selection&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;w&lt;/code&gt;, &lt;code&gt;W&lt;/code&gt;, &lt;code&gt;E&lt;/code&gt;; Alt+Enter in the browser&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Open with the default app / choose an app / edit with the default editor; Alt+Enter opens the chooser on &lt;strong&gt;Open with&lt;/strong&gt;. In the chooser Tab switches &lt;strong&gt;Open with&lt;/strong&gt; and &lt;strong&gt;Edit with&lt;/strong&gt;, &lt;code&gt;d&lt;/code&gt; saves the default for that kind and verb, &lt;code&gt;m&lt;/code&gt; manages apps (Space toggles, Enter/Esc returns)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;]&lt;/code&gt; / &lt;code&gt;[&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Next / previous file. &lt;code&gt;Tab&lt;/code&gt; / &lt;code&gt;Shift-Tab&lt;/code&gt; do the same, except in rendered Markdown, where they move between pictures, links and tables&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;a&lt;/code&gt;, &lt;code&gt;Shift-F10&lt;/code&gt;; right-click&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="#actions"&gt;Actions&lt;/a&gt; for the picture, video, link, table or spreadsheet cell under the pointer or highlighted&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;n&lt;/code&gt;, &lt;code&gt;Space&lt;/code&gt;, &lt;code&gt;PageDown&lt;/code&gt; / &lt;code&gt;p&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;PageUp&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Next / previous PDF page, sheet, or Grist table; next / previous file for other formats&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Search text in the current document; &lt;code&gt;Enter&lt;/code&gt; submits, &lt;code&gt;Esc&lt;/code&gt; cancels editing&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;n&lt;/code&gt; / &lt;code&gt;N&lt;/code&gt;, while searching&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Next / previous result, wrapping at the ends; &lt;code&gt;Esc&lt;/code&gt; clears the search&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;t&lt;/code&gt; on Markdown, text, source or JSON&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toggle normal text / typeset view&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;t&lt;/code&gt; on an HTML page&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toggle its text / the page as its CSS lays it out&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/&lt;/code&gt; in typeset mode&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Open the text/source view and search&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;s&lt;/code&gt; in typeset mode&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toggle the typeset view and text/source&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Show or hide file line numbers, in text and typeset views of plain text, source, JSON and Markdown source&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;:&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Go to a line: type its number, &lt;code&gt;Enter&lt;/code&gt; goes there, &lt;code&gt;Esc&lt;/code&gt; cancels; a number past the end goes to the last line&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;S&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Chop long lines at the right edge instead of wrapping them, as &lt;code&gt;less -S&lt;/code&gt; does, and back; chopped, &lt;code&gt;←&lt;/code&gt;/&lt;code&gt;→&lt;/code&gt; and &lt;code&gt;h&lt;/code&gt;/&lt;code&gt;l&lt;/code&gt; scroll sideways and &lt;code&gt;Home&lt;/code&gt; returns to the left edge&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Home&lt;/code&gt; / &lt;code&gt;End&lt;/code&gt;, &lt;code&gt;G&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;First / last PDF page&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Arrows, &lt;code&gt;h j k l&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Move about a spreadsheet by row and column&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Click a cell&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Select it in a spreadsheet; a row number keeps the column, a column letter the row; a second click on a cell with an address opens it, as &lt;code&gt;Enter&lt;/code&gt; does&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;x&lt;/code&gt;, &lt;code&gt;X&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hide the column under the cursor / show every column&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;List the columns, to show and hide them: &lt;code&gt;Space&lt;/code&gt; toggles, &lt;code&gt;a&lt;/code&gt; all, &lt;code&gt;n&lt;/code&gt; none&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Enter&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;With &lt;code&gt;--fetch&lt;/code&gt;, open the web address under the cursor&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;u&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Show a QR code for the selected table URL; &lt;code&gt;Esc&lt;/code&gt; or &lt;code&gt;u&lt;/code&gt; closes it, &lt;code&gt;g&lt;/code&gt; switches graphics, &lt;code&gt;e&lt;/code&gt; exports the QR&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Close a fetched file, or a table opened in gloss, and return to where you were&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;+&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Zoom in / out&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Arrows, &lt;code&gt;h j k l&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pan zoomed images; orbit meshes&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;f&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fit image / reset camera&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;g&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toggle Kitty / glyph output when Kitty is supported&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;R&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Reload file from disk&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Export the current page as a PNG in the working directory (a download in a browser)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;i&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Show or hide a box of details about the current file and the terminal&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;r&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toggle mesh auto-rotation; reload other formats&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Toggle mesh orthographic / perspective projection&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;List the parts of a 3MF: &lt;code&gt;Space&lt;/code&gt; shows or hides one, &lt;code&gt;Enter&lt;/code&gt; focuses on it, &lt;code&gt;a&lt;/code&gt; all, &lt;code&gt;n&lt;/code&gt; only it&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;X&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Show every part of a 3MF again&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pick a color for a mesh: &lt;code&gt;Tab&lt;/code&gt; between palette, sliders, and hex; &lt;code&gt;Space&lt;/code&gt; applies the swatch, &lt;code&gt;Enter&lt;/code&gt; chooses the swatch you have moved to and closes, &lt;code&gt;r&lt;/code&gt; (the Reset button) restores the file&amp;rsquo;s colors, &lt;code&gt;s&lt;/code&gt; paints all faces or only plain ones, &lt;code&gt;Esc&lt;/code&gt; undoes&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;B&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pick the background color behind a mesh, with the same picker as &lt;code&gt;C&lt;/code&gt;: &lt;code&gt;r&lt;/code&gt; restores the default, &lt;code&gt;Enter&lt;/code&gt; chooses the swatch you have moved to and closes, &lt;code&gt;Esc&lt;/code&gt; undoes&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Click, in the &lt;code&gt;C&lt;/code&gt; / &lt;code&gt;B&lt;/code&gt; picker&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Click a tab, swatch, or slider bar; a swatch applies at once and a second click on it chooses it and closes; drag along a slider&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drag / Shift-drag / wheel&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mesh (STL, 3MF, OBJ, PLY) orbit / pan / zoom&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Arrows or &lt;code&gt;hjkl&lt;/code&gt;, &lt;code&gt;+&lt;/code&gt;/&lt;code&gt;-&lt;/code&gt;, drag, wheel&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Map (GeoJSON, GPX, PMTiles): pan, zoom; &lt;code&gt;f&lt;/code&gt; or &lt;code&gt;0&lt;/code&gt; frames the whole file again&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Map: find a place by name and center on it, with &lt;code&gt;--fetch&lt;/code&gt; and a provider named in &lt;code&gt;GLOSS_GEOCODER&lt;/code&gt; (see &lt;a href="../formats/#online-maps"&gt;Online maps&lt;/a&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drag, then &lt;code&gt;y&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Typeset text: select, then copy to the clipboard; &lt;code&gt;Esc&lt;/code&gt; clears&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Drop files, or paste their paths&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Add files to the list; one opens at once, several open the menu&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;At a PDF boundary, page navigation stays on that page. Use &lt;code&gt;[&lt;/code&gt; and &lt;code&gt;]&lt;/code&gt; to change&#10;files. Loading and rendering run asynchronously; errors appear in the viewer&#10;with retry and next-file controls.&lt;/p&gt;</description></item><item><title>Opening and viewing</title><link>https://nimbleterminal.com/gloss/docs/command/view/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/view/</guid><description>&lt;h1 id="opening-and-viewing"&gt;Opening and viewing&lt;a class="anchor" href="#opening-and-viewing"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;How gloss starts and what it draws with: the file menu and preview pane, terminal graphics, the screen it uses, which files it finds, and what it may fetch. gloss fetches only an http(s) address you name on the command line, or one you choose inside a document with &amp;ndash;fetch; GLOSS_NO_FETCH in the environment forbids both.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Option&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Argument&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--strict&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;require OS confinement for supported document loads (still images, SVG, Mermaid, PDF)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-m&lt;/code&gt;, &lt;code&gt;--menu&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;start with the file-selection menu&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-P&lt;/code&gt;, &lt;code&gt;--preview&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;start with the file menu and a preview pane&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-r&lt;/code&gt;, &lt;code&gt;--render&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;auto&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;terminal graphics: auto, kitty, glyph&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--theme&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;auto&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Colors: auto, catppuccin-latte, catppuccin-mocha, dark, dracula, gruvbox-dark, gruvbox-light, light, monokai, nord, one-dark, rose-pine, solarized-dark, solarized-light, tokyo-night, or theme JSON file&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--lang&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;language of gloss&amp;rsquo;s own words and number formats (BCP 47 or POSIX, e.g. es, zh-Hans, de_DE); options stay English&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-X&lt;/code&gt;, &lt;code&gt;--no-alt-screen&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;draw on the main screen: scrollback is kept, and the last view stays after quitting&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--print&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;print one content viewport to stdout and exit; pictures use ANSI-colored half-blocks, no terminal required&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--print-width&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;with &amp;ndash;print, viewport columns (1–512; default terminal width or 80)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--print-height&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;with &amp;ndash;print, viewport rows (1–256; default terminal height or 24)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--qr&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show this text, such as a URL, as a QR code instead of a file, to scan with a phone or tablet; with &amp;ndash;serve, on a web page; nothing is fetched&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-t&lt;/code&gt;, &lt;code&gt;--type&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;force input type: image, svg, pdf, stl, 3mf, obj, ply, docx, xlsx, grist, csv, json (or jsonl, ndjson), ipynb, html, text, markdown (or md), mermaid, video, geojson, gpx, pmtiles&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--glob&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;stringArray&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;search the folders named, or the current one, for files: a glob, an extension, or a kind such as images (repeatable)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--fetch&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;allow opening a dropped URL or a table address with Enter, and the map provider named in GLOSS_MAP_TILES and GLOSS_GEOCODER; an address named on the command line needs no option, and GLOSS_NO_FETCH forbids both&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--user-agent&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;what downloads send as their User-Agent; else $GLOSS_USER_AGENT, else gloss and its version&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Print one view into captured shell output&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --print --print-width &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt; photo.png&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Hand a link to a phone: show it as a QR code on a web page&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --serve --qr https://example.com/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Look at some files, with a menu to choose among them&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --menu photo.png report.pdf model.stl&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# A menu with a preview pane&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --preview *.png&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Every image under the current folder&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --glob images&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# A file whose name does not say what it is&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --type markdown notes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Documents, pages and tables</title><link>https://nimbleterminal.com/gloss/docs/command/documents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/documents/</guid><description>&lt;h1 id="documents-pages-and-tables"&gt;Documents, pages and tables&lt;a class="anchor" href="#documents-pages-and-tables"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Choosing the page of a PDF or the sheet of a workbook, how finely a PDF is drawn, typesetting text, and which columns of a table to show.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Option&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Argument&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-p&lt;/code&gt;, &lt;code&gt;--page&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;1&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PDF page or workbook sheet, from 1; for an export or text into a folder, a range such as 2-5, or all&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-d&lt;/code&gt;, &lt;code&gt;--dpi&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;150&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PDF rasterization DPI (36–600)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--markdown&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;text&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Markdown renderer: text, typeset (direct graphics)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--typeset&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Typeset Markdown, HTML, plain text, source code, and JSON as graphics&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--font&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;readable&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Typeset font pair: readable, editorial, technical, compact&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--mono&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Override typeset code face: jetbrains&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-N&lt;/code&gt;, &lt;code&gt;--line-numbers&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;number the lines of plain text, source code, JSON and Markdown source (# toggles, : goes to a line)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-S&lt;/code&gt;, &lt;code&gt;--chop-long-lines&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;cut long lines at the right edge instead of wrapping them, as less -S does (S toggles, arrows scroll sideways)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--cols&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show only these columns of a table, by header or letter: name,name&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--coln&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show only these columns of a table, counted from 1: 2,4-6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# The third page of a PDF&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --page &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; report.pdf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Sharper pages&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --dpi &lt;span style="color:#ae81ff"&gt;300&lt;/span&gt; report.pdf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Only some columns of a sheet, by header or by number&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --cols name,total sales.xlsx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --coln 2,4-6 sales.csv&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Meshes: STL, 3MF, OBJ and PLY</title><link>https://nimbleterminal.com/gloss/docs/command/mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/mesh/</guid><description>&lt;h1 id="meshes-stl-3mf-obj-and-ply"&gt;Meshes: STL, 3MF, OBJ and PLY&lt;a class="anchor" href="#meshes-stl-3mf-obj-and-ply"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;How a model is drawn and posed: the renderer, the camera or a named view, the projection, its paint, and which parts of a 3MF are shown. These apply to exports as well as to the viewer.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Option&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Argument&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--3d&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;auto&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;mesh renderer: auto, software, wireframe&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--view&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;views of a mesh: front, back, left, right, top, bottom, iso, all; several, as front,top, export as one sheet&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--camera&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;camera for a mesh, as elevation,azimuth or elevation,azimuth,distance in degrees&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--projection&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;&amp;quot;ortho&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;projection of a mesh: ortho, perspective&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--up&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the axis a mesh file treats as up: y or z; STL defaults to z, OBJ and PLY to y&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--color&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;paint the faces of a mesh its file left plain: #rrggbb or a name such as orange&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--parts&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show only these parts of a 3MF, by name: name,name&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--partn&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show only these parts of a 3MF, counted from 1: 2,4-6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Start from the front, in perspective&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --view front --projection perspective model.stl&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# An OBJ exported Z-up, stood upright&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --up z model.obj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Paint the faces the file left plain&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --color orange model.stl&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Two parts of a 3MF, by name or by number&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --parts lid,base lantern.3mf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --partn 1,3 lantern.3mf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Videos</title><link>https://nimbleterminal.com/gloss/docs/command/video/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/video/</guid><description>&lt;h1 id="videos"&gt;Videos&lt;a class="anchor" href="#videos"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Frames of a video for a model to look at, drawn by ffmpeg without playing it: at the times named, or a number spread through it, as one labelled sheet or a file each. With &lt;code&gt;--json&lt;/code&gt; each frame comes with its time and the subtitle shown then. &lt;code&gt;--text&lt;/code&gt; gives a video&amp;rsquo;s subtitles, with their times: an SRT or WebVTT file named after it beside it, or its own text subtitles.&lt;/p&gt;</description></item><item><title>Exporting images</title><link>https://nimbleterminal.com/gloss/docs/command/export/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/export/</guid><description>&lt;h1 id="exporting-images"&gt;Exporting images&lt;a class="anchor" href="#exporting-images"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Writing PNGs without a terminal, sized for the vision models that will read them. Export never overwrites a file; it numbers the name instead. &lt;code&gt;--max-edge&lt;/code&gt; is the stable way to size an image; &lt;code&gt;--vision-profile&lt;/code&gt; is only an alias for one.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Option&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Argument&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-o&lt;/code&gt;, &lt;code&gt;--output&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;export one input as PNG; &amp;lsquo;-&amp;rsquo; writes PNG to stdout&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-O&lt;/code&gt;, &lt;code&gt;--output-dir&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;export each input as a numbered PNG in this directory&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-s&lt;/code&gt;, &lt;code&gt;--max-edge&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;1536&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;maximum exported image edge in pixels (1–4096)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--vision-profile&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;alias for a &amp;ndash;max-edge, which is stable where these go stale: claude-high, claude-standard, openai-high&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# One page, as a PNG&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --page &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; --output page2.png report.pdf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Every page, into a folder&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --page all --output-dir pages report.pdf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# A contact sheet of a model&amp;#39;s views, to a pipe&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --view front,top,iso --output - model.stl &amp;gt; sheet.png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Text and details</title><link>https://nimbleterminal.com/gloss/docs/command/extract/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/extract/</guid><description>&lt;h1 id="text-and-details"&gt;Text and details&lt;a class="anchor" href="#text-and-details"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Reading a file without drawing it: its text, or what it says about itself, or where a PDF says something. All work without a terminal and write only the answer to standard output. With &lt;code&gt;--json&lt;/code&gt;, a PDF page&amp;rsquo;s text comes with &lt;code&gt;chars&lt;/code&gt; and &lt;code&gt;images&lt;/code&gt;, and &lt;code&gt;sparse&lt;/code&gt; when it is a picture with next to no text, better exported with &lt;code&gt;--output&lt;/code&gt;. &lt;code&gt;--grep&lt;/code&gt; prints each match&amp;rsquo;s page and a line around it, not the document.&lt;/p&gt;</description></item><item><title>The file browser</title><link>https://nimbleterminal.com/gloss/docs/guide/browser/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/browser/</guid><description>&lt;h1 id="the-file-browser"&gt;The file browser&lt;a class="anchor" href="#the-file-browser"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The file browser is how you find a file to open without leaving gloss. It is a&#10;fast, keyboard-first chooser with a mouse as well: it filters as you type,&#10;completes paths with &lt;code&gt;Tab&lt;/code&gt;, lays folders out in columns like a file manager, and&#10;keeps a sidebar of places. Everything it offers has a key, and none of it changes&#10;a file: it only looks, and hands back what you choose.&lt;/p&gt;</description></item><item><title>Handing files over, and showing them</title><link>https://nimbleterminal.com/gloss/docs/command/handoff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/handoff/</guid><description>&lt;h1 id="handing-files-over-and-showing-them"&gt;Handing files over, and showing them&lt;a class="anchor" href="#handing-files-over-and-showing-them"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Asking the user for a file, or showing them one, when the caller has no terminal of its own: an agent, for instance. &lt;code&gt;--pick&lt;/code&gt; prints the paths the user sends; &lt;code&gt;--serve&lt;/code&gt; shows them a page. Without a terminal on standard input both detach, print one line of JSON, and are answered later with &lt;code&gt;--resume&lt;/code&gt;, which waits for the answer. &lt;code&gt;--status&lt;/code&gt; asks at once, as JSON, how the pick stands, and changes nothing; it still answers after &lt;code&gt;--resume&lt;/code&gt;. &lt;code&gt;--cancel&lt;/code&gt; ends the session, deleting its folder. All three take the resume token, not the one in the page&amp;rsquo;s address.&lt;/p&gt;</description></item><item><title>Steering a running viewer</title><link>https://nimbleterminal.com/gloss/docs/command/remote/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/remote/</guid><description>&lt;h1 id="steering-a-running-viewer"&gt;Steering a running viewer&lt;a class="anchor" href="#steering-a-running-viewer"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;A viewer started with &lt;code&gt;--socket NAME&lt;/code&gt; answers other programs on a Unix socket, &lt;code&gt;gloss-NAME.sock&lt;/code&gt; in the temporary folder (or at the path given). &lt;code&gt;gloss --remote NAME FILE&lt;/code&gt; opens the file in that viewer, whatever it is doing: help, a search, a picker or the file browser gets out of the way. With &lt;code&gt;--reload&lt;/code&gt; the viewer loads its file again, with &lt;code&gt;--quit&lt;/code&gt; it ends, and with nothing it prints the file it shows; &lt;code&gt;--json&lt;/code&gt; gives the viewer&amp;rsquo;s whole answer. The socket is the user&amp;rsquo;s alone, and the viewer treats what arrives as paths to probe, as it does a drop. On Unix, &lt;code&gt;SIGUSR1&lt;/code&gt; reloads too. An editor or terminal multiplexer keeps one gloss pane and points it at each file in turn.&lt;/p&gt;</description></item><item><title>Teaching agents: gloss skill</title><link>https://nimbleterminal.com/gloss/docs/command/agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/agents/</guid><description>&lt;h1 id="teaching-agents-gloss-skill"&gt;Teaching agents: gloss skill&lt;a class="anchor" href="#teaching-agents-gloss-skill"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;gloss skill&lt;/code&gt; has no options of its own. gloss carries a skill that teaches an agent its headless surface, so it always matches the flags this binary has. &lt;code&gt;gloss skill&lt;/code&gt; prints help; &lt;code&gt;gloss skill show&lt;/code&gt; prints the skill; &lt;code&gt;gloss skill install&lt;/code&gt;, or &lt;code&gt;gloss skill install agent&lt;/code&gt;, writes it where the agents on this machine look, or into the skills folder named. &lt;code&gt;gloss skill install rex&lt;/code&gt; writes the Lua that joins gloss to the Rex terminal multiplexer into Rex&amp;rsquo;s config folder: the &lt;code&gt;gloss_companion&lt;/code&gt; action (&lt;code&gt;cmd+shift+g&lt;/code&gt;), a gloss split that follows the shell and editor beside it over &lt;code&gt;--socket&lt;/code&gt;, and &lt;code&gt;gloss_push&lt;/code&gt;; it adds &lt;code&gt;require(&amp;quot;gloss&amp;quot;)&lt;/code&gt; to &lt;code&gt;init.lua&lt;/code&gt; once and has Rex reload.&lt;/p&gt;</description></item><item><title>General</title><link>https://nimbleterminal.com/gloss/docs/command/general/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/command/general/</guid><description>&lt;h1 id="general"&gt;General&lt;a class="anchor" href="#general"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Help and version. &lt;code&gt;gloss help&lt;/code&gt; is the usage, and &lt;code&gt;gloss help skill&lt;/code&gt; that of a command.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Option&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Argument&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-h&lt;/code&gt;, &lt;code&gt;--help&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show help&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-V&lt;/code&gt;, &lt;code&gt;--version&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;print version&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item><item><title>Asking for a file</title><link>https://nimbleterminal.com/gloss/docs/guide/handoff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/handoff/</guid><description>&lt;h1 id="asking-for-a-file"&gt;Asking for a file&lt;a class="anchor" href="#asking-for-a-file"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;A program that cannot show a terminal, such as an agent working for you, can&#10;still ask you for a file, or show you one:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --serve --pick &lt;span style="color:#75715e"&gt;# prints the paths you send, one to a line&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --serve report.pdf &lt;span style="color:#75715e"&gt;# shows you the file; prints nothing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --pick &lt;span style="color:#75715e"&gt;# the same question, asked in the terminal&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--serve&lt;/code&gt; starts a temporary server on this machine, opens the viewer on a page&#10;in your browser, and ends when you quit the viewer or close the tab. The page is&#10;the native viewer, not the demo: &lt;code&gt;o&lt;/code&gt; browses your own folders, and a pasted path&#10;is read from your disk. Files dropped on the page are handed to gloss.&lt;/p&gt;</description></item><item><title>Steering a running viewer</title><link>https://nimbleterminal.com/gloss/docs/guide/remote/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/remote/</guid><description>&lt;h1 id="steering-a-running-viewer"&gt;Steering a running viewer&lt;a class="anchor" href="#steering-a-running-viewer"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;A gloss that is already open can be told what to show by another program on&#10;the same machine: an editor, a terminal multiplexer that keeps a preview pane,&#10;a build script, or another gloss. Start the viewer with a socket name, and&#10;point it at files from anywhere:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --socket preview README.md &lt;span style="color:#75715e"&gt;# in one pane: a viewer that takes requests&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --remote preview notes.pdf --page &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; &lt;span style="color:#75715e"&gt;# from another: show this, on page 3&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --remote preview --reload &lt;span style="color:#75715e"&gt;# the file was rewritten: load it again&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --remote preview &lt;span style="color:#75715e"&gt;# which file is it showing? (prints its path)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss --remote preview --quit &lt;span style="color:#75715e"&gt;# close it&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--socket NAME&lt;/code&gt; makes the viewer listen on a Unix domain socket,&#10;&lt;code&gt;gloss-NAME.sock&lt;/code&gt; in the temporary folder (&lt;code&gt;$TMPDIR&lt;/code&gt;, or &lt;code&gt;/tmp&lt;/code&gt;); a name with a&#10;slash in it is used as the socket&amp;rsquo;s path. A name is letters, digits, dots,&#10;dashes and underscores. The socket is readable by your user alone, and a stale&#10;one left by a viewer that crashed is replaced; a name another viewer is still&#10;listening on is an error.&lt;/p&gt;</description></item><item><title>Markdown</title><link>https://nimbleterminal.com/gloss/docs/guide/markdown/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/markdown/</guid><description>&lt;h1 id="markdown"&gt;Markdown&lt;a class="anchor" href="#markdown"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Open &lt;code&gt;.md&lt;/code&gt;, &lt;code&gt;.markdown&lt;/code&gt;, or &lt;code&gt;.mdown&lt;/code&gt; files, or pipe text with &lt;code&gt;--type markdown&lt;/code&gt;.&#10;Glamour renders headings, lists, tables, and syntax-highlighted code. Local&#10;Markdown image references (including reference-style links) use the existing&#10;raster and SVG renderers, shown as block figures following their text line.&#10;Paths resolve relative to the Markdown file, or the working directory for stdin.&#10;Missing and remote images show placeholders. README HTML images (&lt;code&gt;&amp;lt;img src=&amp;quot;…&amp;quot;&amp;gt;&lt;/code&gt;),&#10;including &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; links inside &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;, use the same local-image and GIF&#10;playback path as Markdown images. Relative paths resolve beside the Markdown&#10;file. Numeric &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; (1–4096 pixels) bound the image without&#10;stretching; &lt;code&gt;align=&amp;quot;left|center|right&amp;quot;&lt;/code&gt; on the image or wrapper positions it.&#10;Terminal text rounds sizes to cells and retains its inline-image height limit.&#10;CSS, event handlers, &lt;code&gt;srcset&lt;/code&gt;, scripts, and remote/data images are not enabled.&#10;This is an image subset, not general HTML layout; source view retains the markup.&lt;/p&gt;</description></item><item><title>For agents</title><link>https://nimbleterminal.com/gloss/docs/guide/agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/agents/</guid><description>&lt;h1 id="for-agents"&gt;For agents&lt;a class="anchor" href="#for-agents"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;&lt;a href="../for-llms/"&gt;&lt;code&gt;skills/gloss/SKILL.md&lt;/code&gt;&lt;/a&gt; teaches an agent gloss&amp;rsquo;s&#10;headless surface, in the order an agent needs it: &lt;code&gt;--text&lt;/code&gt;, a sized PNG export,&#10;&lt;code&gt;--info --json&lt;/code&gt;, then &lt;code&gt;--pick&lt;/code&gt; or &lt;code&gt;--serve&lt;/code&gt;. The&#10;binary carries it, so it always matches the flags it was built with:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss skill install &lt;span style="color:#75715e"&gt;# install it for the agents on this machine (gloss skill install agent)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss skill install agent ~/.claude/skills &lt;span style="color:#75715e"&gt;# or into the skills folder named&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gloss skill show &lt;span style="color:#75715e"&gt;# print it, to place it by hand&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Installation always writes the shared &lt;code&gt;~/.agents/skills&lt;/code&gt; folder, which Codex&#10;and other agents read but do not create, and the folder of each agent found by&#10;its home: Claude Code (&lt;code&gt;~/.claude/skills&lt;/code&gt;) and Kimi Code (&lt;code&gt;~/.kimi-code/skills&lt;/code&gt;,&#10;or &lt;code&gt;$KIMI_CODE_HOME&lt;/code&gt;). It reports each agent and skill path once in the&#10;terminal. Redirected stdout contains just the installed paths, one per line,&#10;for scripts; progress messages go to stderr.&lt;/p&gt;</description></item><item><title>Formats and limits</title><link>https://nimbleterminal.com/gloss/docs/guide/formats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/formats/</guid><description>&lt;h1 id="formats-and-limits"&gt;Formats and limits&lt;a class="anchor" href="#formats-and-limits"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;PNG, JPEG, WebP, BMP, TIFF: first frame/page, up to 32 megapixels.&#10;AVIF isn&amp;rsquo;t supported.&lt;/li&gt;&#10;&lt;li&gt;GIF and animated WebP: automatic playback with transparency, partial frames,&#10;disposal, and the file&amp;rsquo;s loop count. &lt;strong&gt;Space&lt;/strong&gt; pauses/resumes (or restarts after the last loop);&#10;&lt;code&gt;&amp;lt;&lt;/code&gt;/&lt;code&gt;&amp;gt;&lt;/code&gt; select 0.25×, 0.5×, 1×, 2×, or 4× speed; Backspace restores 1×.&#10;&lt;code&gt;r&lt;/code&gt; reloads from the beginning at 1×. The status bar shows the frame, speed,&#10;and playback state. &lt;code&gt;e&lt;/code&gt; exports the current full frame as PNG; zoom/pan still work.&#10;Canvas size is limited to 32 MP and animation to 1,000 frames. A GIF&amp;rsquo;s&#10;indexed frames are decoded up front, within 64 Mi frame pixels in total,&#10;checked before decoding. A WebP&amp;rsquo;s frames stay compressed and are decoded as&#10;they are shown, so a long full-canvas clip costs its canvas and one frame,&#10;not every frame; a large lossy frame can take longer to decode than its&#10;delay, in which case playback runs slower rather than skipping. A WebP frame&#10;that fails to decode is skipped. Alpha, blend and dispose-to-background&#10;settings are honored.&#10;Delays below 20 ms use 100 ms before the speed multiplier is applied; other&#10;delays are scaled directly (minimum 5 ms at 4×). Rendering can&#10;slow playback on large images or slow terminals; frames are not queued up.&#10;File-list previews, notebook images, and headless &lt;code&gt;--output&lt;/code&gt;&#10;use the first frame on the full logical canvas. Frames are not &lt;code&gt;--page&lt;/code&gt;s.&#10;Embedded Markdown GIFs and WebPs animate when visible: at most eight distinct&#10;destinations and 64 MiB of animation storage per document (decoded GIF&#10;frames; a WebP&amp;rsquo;s canvas plus its retained compressed container); excess animations&#10;remain still.&lt;/li&gt;&#10;&lt;li&gt;Video: MP4, M4V, MOV, WebM, MKV, Ogg (&lt;code&gt;.ogv&lt;/code&gt;, Theora), AVI, MPEG, WMV and&#10;FLV, by name or by their first bytes (Ogg audio is not a video). The&#10;viewer plays them through &lt;a href="https://mpv.io"&gt;mpv&lt;/a&gt;&amp;rsquo;s library, found when a&#10;video is opened (&lt;code&gt;brew install mpv&lt;/code&gt; or your system&amp;rsquo;s mpv package); it opens&#10;paused on the first frame. Details (&lt;code&gt;i&lt;/code&gt;, &lt;code&gt;--info&lt;/code&gt;) come from &lt;code&gt;ffprobe&lt;/code&gt;, and&#10;the first frame, for previews, thumbnails, &lt;code&gt;--output&lt;/code&gt; and &lt;code&gt;--print&lt;/code&gt;, from&#10;&lt;code&gt;ffmpeg&lt;/code&gt;, both from FFmpeg. Without mpv a video does not play and says so;&#10;without FFmpeg it plays but has no details or first frame. A video is never&#10;read into gloss: it may be up to 2 GiB and 4096×4096, from a local file&#10;only, not a URL. In the browser demo and app, a video plays in the&#10;browser&amp;rsquo;s own video player, laid over gloss&amp;rsquo;s cells, with the same keys:&#10;whatever the browser can decode, within the app&amp;rsquo;s 128 MiB file limit.&#10;There it has no details, preview or thumbnail, which come from FFmpeg.&#10;Subtitles: files beside a video and named after it (&lt;code&gt;clip.srt&lt;/code&gt;,&#10;&lt;code&gt;clip.en.srt&lt;/code&gt;, &lt;code&gt;clip.vtt&lt;/code&gt;, &lt;code&gt;clip.fr.ass&lt;/code&gt;), up to 16 of 2 MiB each, the one&#10;with no language first, then by name; and the video&amp;rsquo;s own subtitle streams.&#10;mpv draws them into the picture; drawn with glyphs, where they could not be&#10;read, they are terminal text over it instead. In the browser, SRT is&#10;converted to WebVTT and ASS/SSA are left out. &lt;code&gt;--text&lt;/code&gt; prints a video&amp;rsquo;s&#10;subtitles with their times: the first SRT or WebVTT file beside it, else&#10;its own text subtitles (FFmpeg); &lt;code&gt;--info&lt;/code&gt; lists those. &lt;code&gt;--at&lt;/code&gt; and&#10;&lt;code&gt;--frames&lt;/code&gt; export frames at chosen times; see&#10;&lt;a href="../using/#frames-of-a-video"&gt;Frames of a video&lt;/a&gt;.&lt;/li&gt;&#10;&lt;li&gt;HEIC/HEIF: primary still image, up to 32 megapixels, with container rotation&#10;and mirroring. Uses the &lt;a href="https://github.com/gen2brain/h265"&gt;pure-Go h265 decoder&lt;/a&gt;,&#10;without CGO or external converters. Unsupported HEVC features report decoder&#10;errors. HEIC works in Markdown, previews, PNG exports, and the browser demo.&lt;/li&gt;&#10;&lt;li&gt;JPEG XL: the first frame of a bare codestream or a &lt;code&gt;.jxl&lt;/code&gt; container, lossless&#10;or lossy, up to 32 megapixels, oriented as the file asks. Uses the&#10;&lt;a href="https://github.com/gen2brain/jxl"&gt;pure-Go jxl decoder&lt;/a&gt;, without CGO or&#10;external converters; embedded ICC profiles are not applied, and animated&#10;files show their first frame. Exif in the container feeds the info box. JPEG&#10;XL works in Markdown, previews, PNG exports, and the browser demo.&lt;/li&gt;&#10;&lt;li&gt;SVG: ntsvg&amp;rsquo;s pure-Go SVG renderer, rasterized to a 2400-pixel maximum edge.&#10;SVG support follows the underlying oksvg renderer, not a full browser engine.&#10;Rendering runs in an isolated worker that is stopped after 15 seconds.&lt;/li&gt;&#10;&lt;li&gt;Mermaid: a &lt;code&gt;.mmd&lt;/code&gt; or &lt;code&gt;.mermaid&lt;/code&gt; file is one diagram, drawn as Markdown&amp;rsquo;s&#10;&lt;code&gt;mermaid&lt;/code&gt; fences are (see &lt;a href="../markdown/#mermaid-diagrams"&gt;Markdown&lt;/a&gt;), in the&#10;theme&amp;rsquo;s light or dark palette, and shown like a picture. Recognized by&#10;name only: the same text in a &lt;code&gt;.txt&lt;/code&gt; file stays text. The source is limited&#10;to 64 KiB. &lt;code&gt;--text&lt;/code&gt; gives the source; a diagram that does not parse is an&#10;error that names the line.&lt;/li&gt;&#10;&lt;li&gt;PDF: PDFium via embedded WebAssembly; no Poppler, MuPDF, CGO, or external&#10;runtime installation. Pages render at 150 DPI by default (&lt;code&gt;--dpi 36..600&lt;/code&gt;),&#10;with a 32-megapixel raster budget and a 10,000-page limit. Password-protected&#10;PDFs aren&amp;rsquo;t supported. Decoded streams are limited to 256 MiB per decoding&#10;stage and 1 GiB of total decoding work. Stream lengths, chained filters, and&#10;predictor buffers are checked before opening. Ambiguous lengths, indirect&#10;filters/decode parameters, and unbudgeted filters (including LZW, JPEG 2000,&#10;and JBIG2) are rejected. PDF metadata and text parsing run in isolated&#10;workers with a 15-second deadline; timed-out workers are stopped.&#10;&lt;code&gt;/&lt;/code&gt; searches the text layer and jumps to matching&#10;pages with excerpts; it does not highlight the raster or perform OCR.&lt;/li&gt;&#10;&lt;li&gt;STL: ASCII and binary, flat-shaded triangles, up to 932,067 faces: nt3d&amp;rsquo;s&#10;mesh limit. Normals are recomputed from vertex winding; binary STL face&#10;colors using the VisCAM/SolidView or Materialise Magics convention are&#10;honored. GPU&#10;rendering falls back to software and then wireframe. Software draws at full&#10;size for Kitty output, smaller only while its frames are slow, and samples&#10;meshes above 20,000 triangles; wireframe samples above 2,000 triangles, so&#10;large models can lose detail in fallback modes.&lt;/li&gt;&#10;&lt;li&gt;Mesh color: an STL, and the faces of a 3MF, OBJ or PLY its file leaves plain, are drawn&#10;in one default blue. &lt;code&gt;C&lt;/code&gt; opens a color picker over the mesh: a palette of&#10;swatches, one slider per channel, or a hex number typed in, each change&#10;painted as it is made; &lt;code&gt;Enter&lt;/code&gt; chooses the swatch you have moved to (or keeps&#10;the color set) and closes, changing nothing if you have not moved; &lt;code&gt;Esc&lt;/code&gt;&#10;undoes it. A 3MF with colors of its own is recolored whole, and the picker&amp;rsquo;s&#10;Reset button (or &lt;code&gt;r&lt;/code&gt;) gives its colors back; &lt;code&gt;s&lt;/code&gt; limits the paint to the faces&#10;its file left plain. &lt;code&gt;--color #rrggbb&lt;/code&gt;, or a name such as &lt;code&gt;orange&lt;/code&gt;,&#10;paints the viewer and exports alike.&lt;/li&gt;&#10;&lt;li&gt;3MF parts: what the build places is listed by name, from the model or the&#10;slicer&amp;rsquo;s settings, and &lt;code&gt;c&lt;/code&gt; opens that list over the mesh: &lt;code&gt;Space&lt;/code&gt; shows or&#10;hides a part, &lt;code&gt;Enter&lt;/code&gt; shows it alone with the camera fitted to it, &lt;code&gt;n&lt;/code&gt; keeps&#10;only it, &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;X&lt;/code&gt; bring all back. &lt;code&gt;--parts name,name&lt;/code&gt; and &lt;code&gt;--partn 2,4-6&lt;/code&gt;&#10;choose parts for the viewer, an export, or &lt;code&gt;--info&lt;/code&gt;, so an agent can pose&#10;one part of an assembly. The triangle limit applies to the parts shown, so a&#10;project too large to draw whole can be seen part by part.&lt;/li&gt;&#10;&lt;li&gt;3MF: the core specification&amp;rsquo;s meshes, components, and build transforms;&#10;colors from base materials and color groups; objects kept in separate parts&#10;of the package, as slicers write them. Projects from Bambu Studio and its&#10;relatives are drawn in their filament colors, which those programs keep in&#10;settings of their own; colors painted onto faces are not read. Textures, beam lattices, slices, and&#10;encrypted content are not read. The same 932,067-face limit applies: a larger&#10;model is shown by its embedded thumbnail, and described by &lt;code&gt;i&lt;/code&gt;. A package may&#10;hold 4,096 entries and unpack to 128 MiB; one that unpacks to more is shown&#10;by its thumbnail too, and described by what its root model says.&lt;/li&gt;&#10;&lt;li&gt;OBJ: Wavefront OBJ triangles and polygons (concave ones split), polylines,&#10;vertex colors, the diffuse colors (&lt;code&gt;Kd&lt;/code&gt;) of the materials its &lt;code&gt;.mtl&lt;/code&gt;&#10;libraries give, and their PNG or JPEG textures (&lt;code&gt;map_Kd&lt;/code&gt;), repeating as OBJ&#10;textures do. Side files are read only from beside the model or a folder&#10;below it, never for standard input: at most 32, libraries of up to 1 MiB,&#10;textures of up to 16 MiB and 16 megapixels each, 64 megapixels together.&#10;A texture that is refused or cannot be read leaves its faces in the&#10;material&amp;rsquo;s color, and &lt;code&gt;i&lt;/code&gt; says why. Textured faces keep their texture when&#10;the mesh is painted with &lt;code&gt;C&lt;/code&gt;. Faces with their own normals are&#10;smooth-shaded. The same 932,067-face limit applies.&lt;/li&gt;&#10;&lt;li&gt;PLY: Stanford PLY, ASCII or binary: faces with vertex or face colors, a&#10;scanner&amp;rsquo;s range grid joined into a surface, or, with no faces, a cloud of up&#10;to 500,000 points drawn as discs sized to the spacing of their neighbors.&#10;A texture the file names is not read.&lt;/li&gt;&#10;&lt;li&gt;OBJ and PLY files do not say which way is up; gloss takes Y as up, as most&#10;tools write them, and turns them to the Z-up that STL, 3MF and the named&#10;views (&lt;code&gt;--view top&lt;/code&gt;) use. A model that comes out lying on its side was&#10;written the other way: &lt;code&gt;--up z&lt;/code&gt; reads an OBJ or PLY as Z-up, and &lt;code&gt;--up y&lt;/code&gt;&#10;stands up a Y-up STL. &lt;code&gt;i&lt;/code&gt; says which axis was taken. 3MF is Z-up by its&#10;specification.&lt;/li&gt;&#10;&lt;li&gt;GeoJSON (&lt;code&gt;.geojson&lt;/code&gt;) and GPX (&lt;code&gt;.gpx&lt;/code&gt;, or any file whose root element is&#10;&lt;code&gt;&amp;lt;gpx&amp;gt;&lt;/code&gt;): what the file holds is drawn on a plain background, framed to fit,&#10;and nothing is fetched. Points and GPX waypoints are pins, lines, routes and&#10;track segments are lines (one per segment), and polygons are drawn as&#10;thinner outlines, holes included. GeoJSON is known only by its name, so a&#10;&lt;code&gt;.json&lt;/code&gt; file stays JSON; &lt;code&gt;--type geojson&lt;/code&gt; reads one as a map. A file may&#10;hold up to a million positions and 100,000 features, nested at most 64&#10;deep; elevation, times and other properties are not read. A file with no&#10;positions in it is an error.&lt;/li&gt;&#10;&lt;li&gt;PMTiles (&lt;code&gt;.pmtiles&lt;/code&gt;, or a file that begins as one): an archive of map tiles,&#10;shown as a map you can pan and zoom, framed on the bounds it declares. It&#10;is not read whole, as other files are: its tiles are read from the file as&#10;the map needs them, so the 128 MiB limit does not apply (except to a&#10;downloaded or piped archive). Only raster archives, of PNG or JPEG tiles,&#10;with uncompressed or gzip directories, can be drawn; a vector (MVT) archive&#10;is described and refused. Each read is bounded: a directory or the metadata&#10;at most 16 MiB, a tile at most 8 MiB and 4096 pixels a side. The archive&amp;rsquo;s&#10;attribution is drawn along the map&amp;rsquo;s foot.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="online-maps"&gt;Online maps&lt;a class="anchor" href="#online-maps"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;gloss has no map service of its own: it never asks one for anything unless&#10;you name it. In the viewer, with &lt;code&gt;--fetch&lt;/code&gt;, these settings in the environment&#10;add one:&lt;/p&gt;</description></item><item><title>Development</title><link>https://nimbleterminal.com/gloss/docs/guide/development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/development/</guid><description>&lt;!-- Generated from DEVELOP.md by internal/tools/docsite: edit that, not this. --&gt;&#10;&lt;h1 id="development"&gt;Development&lt;a class="anchor" href="#development"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;gloss is written in Go on &lt;a href="https://github.com/charmbracelet/bubbletea"&gt;Bubble Tea&lt;/a&gt;&#10;with &lt;a href="https://github.com/NimbleTerminal/ntpicture"&gt;ntpicture&lt;/a&gt;,&#10;&lt;a href="https://github.com/NimbleTerminal/ntsvg"&gt;ntsvg&lt;/a&gt;,&#10;&lt;a href="https://github.com/NimbleTerminal/ntpdf"&gt;ntpdf&lt;/a&gt;, and&#10;&lt;a href="https://github.com/NimbleTerminal/nt3d"&gt;nt3d&lt;/a&gt;. The user&#10;documentation is on the &lt;a href="https://nimbleterminal.com/gloss/docs/"&gt;documentation site&lt;/a&gt;;&#10;this file is for working on gloss itself. &lt;a href="https://github.com/NimbleTerminal/gloss/blob/main/AGENTS.md"&gt;AGENTS.md&lt;/a&gt; is the same&#10;ground for coding agents.&lt;/p&gt;&#10;&lt;h2 id="go-module-path"&gt;Go module path&lt;a class="anchor" href="#go-module-path"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The root module is &lt;code&gt;nimbleterminal.dev/gloss&lt;/code&gt;. Self-imports and the separate&#10;&lt;code&gt;examples/demo&lt;/code&gt; module uses that prefix; its local&#10;replacement still points at the root checkout. GitHub remains the source host.&#10;Consumers moving from the GitHub module path must update their imports and use&#10;a version published after the migration. Existing tags are unchanged.&lt;/p&gt;</description></item><item><title>For LLMs</title><link>https://nimbleterminal.com/gloss/docs/guide/for-llms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nimbleterminal.com/gloss/docs/guide/for-llms/</guid><description>&lt;!-- Generated from skills/gloss/SKILL.md by internal/tools/docsite: edit that, not this. --&gt;&#10;&lt;h1 id="for-llms"&gt;For LLMs&lt;a class="anchor" href="#for-llms"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;This is the skill gloss carries for agents. The binary prints it with &lt;code&gt;gloss skill&lt;/code&gt;, and &lt;code&gt;gloss skill install&lt;/code&gt; puts it where the agents on a machine look, so it always matches the flags that binary has.&lt;/p&gt;&#10;&lt;blockquote class='book-hint '&gt;&#10;&lt;p&gt;&amp;ldquo;Inspect local files with gloss: extract document text and tables, export images, PDF pages, SVG, and meshes as PNGs for vision, read metadata, or ask a human to choose or view files. Use for file inspection and local file handoffs, not document creation or editing.&amp;rdquo;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item></channel></rss>