<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tutorials on kvx</title><link>https://oakwood-commons.github.io/kvx/docs/tutorials/</link><description>Recent content in Tutorials on kvx</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://oakwood-commons.github.io/kvx/docs/tutorials/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Started</title><link>https://oakwood-commons.github.io/kvx/docs/tutorials/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oakwood-commons.github.io/kvx/docs/tutorials/getting-started/</guid><description>&lt;h1 id="getting-started-with-kvx"&gt;Getting Started with kvx&lt;a class="anchor" href="#getting-started-with-kvx"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This tutorial walks you through installing kvx, loading your first data file, and exploring the output formats.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;a class="anchor" href="#installation"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="homebrew-macos--linux"&gt;Homebrew (macOS / Linux)&lt;a class="anchor" href="#homebrew-macos--linux"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install oakwood-commons/tap/kvx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="windows-winget"&gt;Windows (winget)&lt;a class="anchor" href="#windows-winget"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;winget install OakwoodCommons.kvx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="from-source"&gt;From Source&lt;a class="anchor" href="#from-source"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go install github.com/oakwood-commons/kvx@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="from-release-binaries"&gt;From Release Binaries&lt;a class="anchor" href="#from-release-binaries"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Download the latest binary for your platform from &lt;a href="https://github.com/oakwood-commons/kvx/releases"&gt;GitHub Releases&lt;/a&gt;, extract it, and add it to your &lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;macOS note:&lt;/strong&gt; You may need to remove the quarantine attribute:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xattr -dr &lt;span style="color:#a5d6ff"&gt;&amp;#39;com.apple.quarantine&amp;#39;&lt;/span&gt; /usr/local/bin/kvx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="first-run"&gt;First Run&lt;a class="anchor" href="#first-run"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Create a sample file &lt;code&gt;data.yaml&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Interactive Mode</title><link>https://oakwood-commons.github.io/kvx/docs/tutorials/interactive-mode/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oakwood-commons.github.io/kvx/docs/tutorials/interactive-mode/</guid><description>&lt;h1 id="interactive-mode"&gt;Interactive Mode&lt;a class="anchor" href="#interactive-mode"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The interactive TUI lets you navigate, search, filter, and evaluate expressions against your data in a full-screen terminal interface.&lt;/p&gt;
&lt;h2 id="launching-the-tui"&gt;Launching the TUI&lt;a class="anchor" href="#launching-the-tui"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx data.yaml -i&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Override terminal size detection:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx data.yaml -i --width &lt;span style="color:#a5d6ff"&gt;120&lt;/span&gt; --height &lt;span style="color:#a5d6ff"&gt;40&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="panels"&gt;Panels&lt;a class="anchor" href="#panels"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The TUI is organized into panels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data panel&lt;/strong&gt; — Main table view. The bottom border shows the current CEL path (tail is kept when the path is long). The lower-right corner shows &lt;code&gt;n/x&lt;/code&gt; for selection/visible rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input panel&lt;/strong&gt; — Single-line bordered input. Title reflects the current mode (Expression or Search). Hidden until activated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Info panel&lt;/strong&gt; — One row, borderless. Right-justified when input is hidden. Left-justified and recolored when input is shown.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer&lt;/strong&gt; — Always visible. Left shows &lt;code&gt;? - Help&lt;/code&gt;, right shows rows/cols.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Help popup&lt;/strong&gt; — Hidden by default. Press &lt;code&gt;?&lt;/code&gt; to toggle help content.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="navigation"&gt;Navigation&lt;a class="anchor" href="#navigation"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;kvx defaults to &lt;strong&gt;vim&lt;/strong&gt; keybindings:&lt;/p&gt;</description></item><item><title>CEL Expressions</title><link>https://oakwood-commons.github.io/kvx/docs/tutorials/expressions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oakwood-commons.github.io/kvx/docs/tutorials/expressions/</guid><description>&lt;h1 id="cel-expressions"&gt;CEL Expressions&lt;a class="anchor" href="#cel-expressions"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;kvx uses the &lt;a href="https://cel.dev/"&gt;Common Expression Language (CEL)&lt;/a&gt; for dynamic querying, filtering, and transformation. This tutorial covers the expression syntax and common patterns.&lt;/p&gt;
&lt;h2 id="basics"&gt;Basics&lt;a class="anchor" href="#basics"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The root variable is always &lt;code&gt;_&lt;/code&gt;. Use &lt;code&gt;-e&lt;/code&gt; on the CLI or &lt;code&gt;:&lt;/code&gt; in the TUI to evaluate expressions.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Access a field&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx data.yaml -e &lt;span style="color:#a5d6ff"&gt;&amp;#39;_.metadata.name&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Array index&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx data.yaml -e &lt;span style="color:#a5d6ff"&gt;&amp;#39;_.items[0]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Nested field access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx data.yaml -e &lt;span style="color:#a5d6ff"&gt;&amp;#39;_.items[0].name&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="path-syntax"&gt;Path Syntax&lt;a class="anchor" href="#path-syntax"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;kvx supports two path styles:&lt;/p&gt;</description></item><item><title>Configuration &amp; Themes</title><link>https://oakwood-commons.github.io/kvx/docs/tutorials/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oakwood-commons.github.io/kvx/docs/tutorials/configuration/</guid><description>&lt;h1 id="configuration--themes"&gt;Configuration &amp;amp; Themes&lt;a class="anchor" href="#configuration--themes"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This tutorial covers configuring kvx, selecting themes, using schema-driven column hints, and setting up shell completion.&lt;/p&gt;
&lt;h2 id="config-file"&gt;Config File&lt;a class="anchor" href="#config-file"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;kvx merges built-in defaults with your config file at &lt;code&gt;~/.config/kvx/config.yaml&lt;/code&gt; (or &lt;code&gt;$XDG_CONFIG_HOME/kvx/config.yaml&lt;/code&gt;). Override the config path with &lt;code&gt;--config-file&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="viewing-configuration"&gt;Viewing Configuration&lt;a class="anchor" href="#viewing-configuration"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Show merged config (defaults + your overrides)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx config get
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Output as JSON, YAML, or table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx config get -o json
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx config get -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx config get -o table
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Interactive TUI view&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx config get -i
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Print merged config without reading input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx --config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="using-a-specific-config-file"&gt;Using a Specific Config File&lt;a class="anchor" href="#using-a-specific-config-file"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx config get --config-file ~/.config/kvx/config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kvx data.yaml --config-file /path/to/custom-config.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="themes"&gt;Themes&lt;a class="anchor" href="#themes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Themes control the colors, borders, and styling of both TUI and CLI output.&lt;/p&gt;</description></item></channel></rss>