{"id":13599174,"url":"https://github.com/sarub0b0/kubetui","last_synced_at":"2025-10-23T02:29:23.695Z","repository":{"id":36993431,"uuid":"339574757","full_name":"sarub0b0/kubetui","owner":"sarub0b0","description":"An intuitive Terminal User Interface (TUI) tool for real-time monitoring and exploration of Kubernetes resources","archived":false,"fork":false,"pushed_at":"2025-10-19T04:54:05.000Z","size":31726,"stargazers_count":309,"open_issues_count":11,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-19T11:47:36.876Z","etag":null,"topics":["kubernetes","kubetui","monitor","ratatui","rust","terminal","tui","tui-rs"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sarub0b0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-17T00:58:11.000Z","updated_at":"2025-10-19T04:46:18.000Z","dependencies_parsed_at":"2023-10-04T14:00:37.547Z","dependency_job_id":"17fa11f7-bb21-4fdb-9a4d-aa77fbc169d1","html_url":"https://github.com/sarub0b0/kubetui","commit_stats":null,"previous_names":[],"tags_count":62,"template":false,"template_full_name":null,"purl":"pkg:github/sarub0b0/kubetui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarub0b0%2Fkubetui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarub0b0%2Fkubetui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarub0b0%2Fkubetui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarub0b0%2Fkubetui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sarub0b0","download_url":"https://codeload.github.com/sarub0b0/kubetui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sarub0b0%2Fkubetui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280200870,"owners_count":26289477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kubernetes","kubetui","monitor","ratatui","rust","terminal","tui","tui-rs"],"created_at":"2024-08-01T17:01:00.478Z","updated_at":"2025-10-21T03:58:37.734Z","avatar_url":"https://github.com/sarub0b0.png","language":"Rust","funding_links":[],"categories":["Rust","\u003ca name=\"devops\"\u003e\u003c/a\u003eDevOps","Table of Contents","💻 Apps"],"sub_categories":["👨‍💻 System Administration"],"readme":"# kubetui\n\n[![Release](https://img.shields.io/github/v/release/sarub0b0/kubetui)]()\n[![Test](https://github.com/sarub0b0/kubetui/actions/workflows/test.yml/badge.svg)](https://github.com/sarub0b0/kubetui/actions/workflows/test.yml)\n\nKubetui is a terminal user interface (TUI) tool designed for monitoring Kubernetes resources.  \nIt provides an easy-to-use interface for developers and operators to access important information about their applications and infrastructure.\n\n\u003cdetails\u003e\n\u003csummary\u003eTable of Contents\u003c/summary\u003e\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Homebrew on macOS and Linux](#homebrew-on-macos-and-linux)\n  - [Pacman on Arch Linux](#pacman-on-arch-linux)\n  - [Scoop on Windows](#scoop-on-windows)\n  - [WinGet on Windows](#winget-on-windows)\n  - [Chocolatey on Windows](#chocolatey-on-windows)\n  - [openSUSE Tumbleweed](#opensuse-tumbleweed)\n  - [Using `cargo install`](#using-cargo-install)\n  - [Downloading the binary](#downloading-the-binary)\n- [Usage](#usage)\n  - [Pod Column Customization](#pod-column-customization)\n    - [Define presets in config.yaml](#define-presets-in-configyaml)\n    - [Example config](#example-config)\n  - [Shell Completion](#shell-completion)\n  - [Custom Configuration](#custom-configuration)\n- [Log Query](#log-query)\n  - [Usage Example](#usage-example)\n  - [Supported Queries](#supported-queries)\n  - [Query String Escaping](#query-string-escaping)\n- [Key Bindings](#key-bindings)\n  - [General](#general)\n  - [Key Map](#key-map)\n  - [View Control](#view-control)\n  - [Text View](#text-view)\n  - [Search Mode](#search-mode)\n  - [Table View](#table-view)\n  - [Dialog](#dialog)\n  - [Input Form](#input-form)\n  - [Container Logs View](#container-logs-view)\n- [Contributing](#contributing)\n- [License](#license)\n\n\u003c/details\u003e\n\n![Demo](./assets/demo.webp)\n\n\u003cdetails\u003e\n\u003csummary\u003eDemo slow version\u003c/summary\u003e\n\n![Demo slow version](./assets/demo-slow.webp)\n\n\u003c/details\u003e\n\n## Features\n\nKubetui offers the following features to help you monitor and manage your Kubernetes resources:\n\n- **Pods List and Container Logs**:\n  - View a list of pods and their container logs.\n  - JSON logs display mode switching: toggle between pretty print and single-line display using the \u003ckbd\u003ef\u003c/kbd\u003e or \u003ckbd\u003ep\u003c/kbd\u003e keys.\n  - **Customizable pod columns (via CLI flags or config presets)**: Use `--pod-columns` or `--pod-columns-preset` to control which columns appear in the pod list view. Also supports dynamic selection at runtime.\n  - **Dynamic column selection**: You can now customize pod columns at runtime using a column selection dialog. Press \u003ckbd\u003et\u003c/kbd\u003e while the pod table is focused to open the dialog. Selected columns are immediately applied.\n- **ConfigMap and Secret Watching**: Monitor ConfigMaps and secrets, and decode their data.\n- **Network-related Resources**: Explore a list of network-related resources and their descriptions.\n- **Events Watching**: Stay updated with a real-time view of Kubernetes events.\n- **Specific Resources Watching (List / YAML)**: View specific resources in list or YAML format.\n- **Namespace Multiple Selections**: Select and view multiple namespaces simultaneously.\n- **Context Selection**: Change the Kubernetes context you want to operate on.\n- **Clipboard Support (Text Copy)**: Copy text conveniently using mouse actions.\n- **Mouse Event Support**: Leverage mouse events for a smoother user experience.\n- **Search Functionality**: Easily search for specific keywords within the interface.\n- **Item Filtering**: Filter items based on multiple keywords separated by spaces.\n- **(beta) Customizable UI Appearance**: Modify the appearance of the UI, including border styles, colors, and text attributes.\n\nOverall, kubetui is a powerful tool designed to provide a safe and efficient way to access and monitor your Kubernetes resources. With its user-friendly interface and comprehensive features, it simplifies the process of managing your applications and infrastructure.\n\n## Installation\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/kubetui.svg)](https://repology.org/project/kubetui/versions)\n\nTo install kubetui, you can use the following methods:\n\n### [Homebrew](https://brew.sh/) on macOS and Linux\n\nKubetui is available on homebrew, the package manager for macOS and Linux. Install it by running the following command:\n\n```shell\nbrew install kubetui\n```\n\n### [Pacman](https://wiki.archlinux.org/title/pacman) on Arch Linux\n\nKubetui is available in the [official repositories](https://archlinux.org/packages/extra/x86_64/kubetui/). Install it by running the following command:\n\n```shell\npacman -S kubetui\n```\n\n### [Scoop](https://scoop.sh/) on Windows\n\nIf you are using Windows with scoop, you can add the necessary buckets and install kubetui with the following commands:\n\n```shell\n# Add the 'extras' bucket for vcredist2022\nscoop bucket add extras\nscoop bucket add \u003cbucket\u003e https://github.com/sarub0b0/scoop-bucket\nscoop install \u003cbucket\u003e/kubetui\n```\n\n### [WinGet](https://github.com/microsoft/winget-cli) on Windows\n\nIf you prefer using winget, the Windows package manager, you can install kubetui with the following command:\n\n```shell\nwinget install kubetui\n```\n\n### [Chocolatey](https://community.chocolatey.org/packages/kubetui/) on Windows\n\nKubetui is available on Chocolatey, the package manager for Windows. Install it by running the following command:\n\n```shell\nchoco install kubetui\n```\n\n### openSUSE Tumbleweed\n\nFor openSUSE Tumbleweed, you can install kubetui using the `zypper` package manager. Run the following command to install:\n\n```shell\nzypper install kubetui\n```\n\n### Using `cargo install`\n\nKubetui is available on [crates.io](https://crates.io/crates/kubetui), the official Rust package registry. Install it by running the following command:\n\n```shell\ncargo install kubetui\n```\n\nMake sure you have [Rust](https://www.rust-lang.org/tools/install) and [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) installed before running the command.\n\n### Downloading the binary\n\nAlternatively, you can download the precompiled binary from the [GitHub Release page](https://github.com/sarub0b0/kubetui/releases) that matches your operating system. Once downloaded, you can run the binary directly without any additional installation steps.\n\nChoose the method that suits your needs and preferences.\n\n## Usage\n\n```sh\nkubetui\n```\n\n```sh\n$ kubetui -h\nAn intuitive Terminal User Interface (TUI) tool for real-time monitoring and exploration of Kubernetes resources.\n\nUsage: kubetui [OPTIONS] [COMMAND]\n\nCommands:\n  completion  Generate completion script\n\nOptions:\n  -h, --help                                     Print help\n  -V, --version                                  Print version\n  -A, --all-namespaces[=\u003ctrue|false\u003e]            Select all namespaces [default: false]\n  -c, --context \u003cCONTEXT\u003e                        Context\n  -C, --kubeconfig \u003cKUBECONFIG\u003e                  kubeconfig path\n      --config-file \u003cCONFIG_FILE\u003e                Config file path\n  -l, --logging                                  Logging\n  -n, --namespaces \u003cNAMESPACES\u003e                  Namespaces (e.g. -n val1,val2,val3 | -n val1 -n val2 -n val3)\n      --pod-columns \u003cPOD_COLUMNS\u003e                Comma-separated list of columns to show in pod table (e.g. name,status,ip). Use \"full\" to show all available columns\n      --pod-columns-preset \u003cPOD_COLUMNS_PRESET\u003e  Preset name for pod columns (e.g. \"default\", \"full\"). If both are specified, `--pod-columns` overrides this\n  -s, --split-direction \u003cv|h\u003e                    Window split direction [default: v]\n```\n\n### Pod Column Customization\n\nUse `--pod-columns` to customize the columns displayed in the pod table.\n\n- Specify columns using a comma-separated list:  \n  `--pod-columns=ready,status,age`\n\n- Use `full` to show all available columns:  \n  `--pod-columns=full`\n\nNotes:\n\n- The `Name` column is always included even if not specified.\n- The `full` keyword cannot be combined with other columns.\n\nYou can also customize columns dynamically at runtime:\n\n- Press \u003ckbd\u003et\u003c/kbd\u003e in the pod view to open the column selection dialog.\n- Use \u003ckbd\u003eSpace\u003c/kbd\u003e/\u003ckbd\u003eEnter\u003c/kbd\u003e to toggle visibility and \u003ckbd\u003eJ\u003c/kbd\u003e/\u003ckbd\u003eK\u003c/kbd\u003e to reorder columns.\n- Required columns like `NAME` are always enabled and fixed.\n\n#### Define presets in config.yaml\n\nYou can define reusable column presets under `pod.column_presets` in your config file, and set a default preset with `pod.default_preset`.\n\n#### Example config\n\n```yaml\ntheme:\n  pod:\n    # Name of the default preset to use at startup (optional)\n    default_preset: minimal\n\n    # Define named presets of pod columns\n    column_presets:\n      default:\n        - name\n        - status\n        - age\n        - ip\n        - node\n      minimal:\n        - name\n        - status\n        - age\n```\n\nTo use a preset defined in your config file at runtime:\n\n```sh\nkubetui --pod-columns-preset=default\n```\n\nThis will apply the preset named \"default\" defined in your configuration file.\n\nIf both `--pod-columns` and `--pod-columns-preset` are specified, `--pod-columns` takes precedence.\nIf neither is specified, the preset defined in `pod.default_preset` (if any) is used.\n\n### Shell Completion\n\nKubetui supports shell completion for Bash and Zsh. You can enable the completion by adding the following to your shell configuration file:\n\nFor Bash (add to `~/.bashrc` or `~/.bash_profile`):\n\n```bash\nsource \u003c(kubetui completion bash)\n```\n\nFor Zsh (add to `~/.zshrc`):\n\n```bash\nsource \u003c(kubetui completion zsh)\n```\n\n### Custom Configuration\n\nYou can customize the UI appearance by specifying a configuration file using the `--config-file` flag:\n\n```sh\nkubetui --config-file /path/to/your/config.yaml\n```\n\nThe configuration file can also be located at `~/.config/kubetui/config.yaml` or `$XDG_CONFIG_FILE/kubetui/config.yaml`.\n\nThe configuration file allows you to modify various aspects of the UI, including:\n\n- **Border Styles**: Customize the border styles of different UI components.\n- **Colors**: Change the colors of text, backgrounds, and borders.\n- **Text Attributes**: Modify text attributes such as bold, italic, and underline.\n\nA sample configuration file is available at `examples/config.yaml` to help you get started with customizing the UI.\n\n## Log Query\n\nThe Log Query feature empowers you to retrieve logs from multiple Pods and their containers. Using regular expressions, selectors, and specified resources, you can precisely define the log retrieval targets. This functionality also allows you to filter logs using regular expressions, providing a powerful and flexible log querying experience.\n\n### Usage Example\n\n```\npod:app container:nginx log:401\n```\n\n```\npod:api log:error jq:.message\n```\n\n```\npod:api log:error jmespath:message\n```\n\nWhen entering `?` or `help` in the log query form, the help dialog will be displayed.\n\n### Supported Queries\n\n| Query               | Alias                | Description                                                                                                    |\n| ------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------- |\n| pod:\\\u003cregex\u003e        | pods, po, p          | Include Pods that match the regular expression in log retrieval target.                                        |\n| !pod:\\\u003cregex\u003e       | !pods, !po, !p       | Exclude Pods that match the regular expression from log retrieval target. Can be defined multiple times.       |\n| container:\\\u003cregex\u003e  | containers, co, c    | Include containers that match the regular expression in log retrieval target.                                  |\n| !container:\\\u003cregex\u003e | !containers, !co, !c | Exclude containers that match the regular expression from log retrieval target. Can be defined multiple times. |\n| log:\\\u003cregex\u003e        | logs, lo, l          | Retrieve logs that match the regular expression. Can be defined multiple times.                                |\n| !log:\\\u003cregex\u003e       | !logs, !lo, !l       | Exclude logs that match the regular expression. Can be defined multiple times.                                 |\n| label:\\\u003cselector\u003e   | labels               | Include Pods with labels matching the selector in log retrieval target. Cannot be specified with resource.     |\n| field:\\\u003cselector\u003e   | fields               | Include Pods with fields matching the selector in log retrieval target.                                        |\n| jq:\\\u003cexpr\u003e          |                      | Apply jq filter to JSON logs. Extract fields or restructure output (e.g., `jq:.message`, `jq:{ts:.time}`).    |\n| jmespath:\\\u003cexpr\u003e    | jmes, jm             | Apply JMESPath filter to JSON logs. Simpler syntax for common queries (e.g., `jmespath:message`, `jm:data.id`). |\n| \\\u003cresource\u003e/\\\u003cname\u003e |                      | Include Pods belonging to the specified resource in log retrieval target. Cannot be specified with label.      |\n\nSupported resources:\n\n| Resource    | Alias               |\n| ----------- | ------------------- |\n| pod         | po, pods            |\n| replicaset  | rs, replicasets     |\n| deployment  | deploy, deployments |\n| statefulset | sts, statefulsets   |\n| daemonset   | ds, daemonsets      |\n| job         | jobs                |\n| service     | svc, services       |\n\n### Query String Escaping\n\nWhen including spaces in queries such as `\u003cregex\u003e` or `\u003cselector\u003e`, enclose the string with `\"` or `'`. For example:\n\n```\npod:\"a b\"\nlabel:\"environment in (production, qa)\"\n```\n\nIf you use `\"`, `'`, or `\\` within the quoted string, escape them with `\\`. For example:\n\n```\npod:\"a\\\\b\"\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eQuery Syntax\u003c/summary\u003e\n\n```\n**Lexer and Parser**\n\nLOG_QUERIES = QUERY ( \" \"+ QUERY )*\n\nQUERY = POD\n        | EXCLUDE_POD\n        | CONTAINER\n        | EXCLUDE_CONTAINER\n        | LOG\n        | EXCLUDE_LOG\n        | LABEL\n        | FIELD\n        | JQ\n        | JMESPATH\n        | SPECIFIED_RESOURCE\n\nPOD = ( \"pods\" | \"pod\" | \"po\" | \"p\" ) \":\" REGEX\nEXCLUDE_POD = \"!\" POD\n\nCONTAINER = ( \"containers\" | \"container\" | \"co\" | \"c\" ) \":\" REGEX\nEXCLUDE_CONTAINER = \"!\" CONTAINER\n\nLOG = ( \"logs\" | \"log\" | \"lo\" | \"l\" ) \":\" REGEX\nEXCLUDE_LOG = \"!\" LOG\n\nREGEX = QUOTED_STRING | UNQUOTED_STRING\n\nLABEL = ( \"labels\" | \"label\" ) \":\" SELECTOR\nFIELD = ( \"fields\" | \"field\" ) \":\" SELECTOR\n\nSELECTOR = QUOTED_STRING | UNQUOTED_STRING\n\nJQ = \"jq\" \":\" EXPR\n\nJMESPATH = ( \"jmespath\" | \"jmes\" | \"jm\" ) \":\" EXPR\n\nEXPR = QUOTED_STRING | UNQUOTED_STRING\n\nSPECIFIED_RESOURCE = RESOURCE \"/\" NAME\n\nRESOURCE = ( \"pods\" | \"pod\" | \"po\" )\n           | ( \"replicasets\" | \"replicaset\" | \"rs\" )\n           | ( \"deployments\" | \"deployment\" | \"deploy\" )\n           | ( \"statefulsets\" | \"statefulset\" | \"sts\" )\n           | ( \"daemonsets\" | \"daemonset\" | \"ds\" )\n           | ( \"services\" | \"service\" | \"svc\" )\n           | ( \"jobs\" | \"job\" )\n\nNAME = ALPHANUMERIC ( ALPHANUMERIC | \"-\" | \".\" )* ALPHANUMERIC\n\nUNQUOTED_STRING = ~['\" \\t\\r\\n] ( ~[ \\t\\r\\n] )* // without spaces\n\nQUOTED_STRING = \"\\\"\" ESCAPED_STRING \"\\\"\" | \"'\" ESCAPED_STRING \"'\"\n\nESCAPED_STRING = ( ESCAPED_CHAR | ~[\\\"'] )\\*\n\nESCAPED_CHAR = \"\\\\\" | \"\\\"\" | \"\\'\"\n```\n\n\u003c/details\u003e\n\n## Key Bindings\n\n### General\n\n| Key                                  | Description                                                         |\n| ------------------------------------ | ------------------------------------------------------------------- |\n| \u003ckbd\u003eh\u003c/kbd\u003e, \u003ckbd\u003e?\u003c/kbd\u003e           | Open the dialog for help                                            |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e                     | Select an item and trigger an event                                 |\n| \u003ckbd\u003en\u003c/kbd\u003e                         | Open the dialog for selecting the namespace                         |\n| \u003ckbd\u003eN\u003c/kbd\u003e                         | Open the dialog for selecting multiple namespaces                   |\n| \u003ckbd\u003ec\u003c/kbd\u003e                         | Open the dialog for selecting the context                           |\n| \u003ckbd\u003ey\u003c/kbd\u003e                         | Open the dialog for yaml                                            |\n| \u003ckbd\u003eTab\u003c/kbd\u003e, \u003ckbd\u003eShift+Tab\u003c/kbd\u003e | Change the focus of the view within the active tab                  |\n| \u003ckbd\u003enumber\u003c/kbd\u003e                    | Switch to the tab (number: 1~6)                                     |\n| \u003ckbd\u003eESC\u003c/kbd\u003e                       | Close the window or terminate the app (when the dialog is not open) |\n| \u003ckbd\u003eq\u003c/kbd\u003e                         | Terminate the app                                                   |\n| \u003ckbd\u003ef\u003c/kbd\u003e                         | Open the dialog for selecting multiple API resources                |\n| \u003ckbd\u003eShift+s\u003c/kbd\u003e                   | Toggle the split direction between vertical and horizontal          |\n\n### Key Map\n\n| Source                                  | Destination       |\n| --------------------------------------- | ----------------- |\n| \u003ckbd\u003eCtrl+p\u003c/kbd\u003e                       | \u003ckbd\u003eUp\u003c/kbd\u003e     |\n| \u003ckbd\u003eCtrl+n\u003c/kbd\u003e                       | \u003ckbd\u003eDown\u003c/kbd\u003e   |\n| \u003ckbd\u003eCtrl+f\u003c/kbd\u003e                       | \u003ckbd\u003eRight\u003c/kbd\u003e  |\n| \u003ckbd\u003eCtrl+b\u003c/kbd\u003e                       | \u003ckbd\u003eLeft\u003c/kbd\u003e   |\n| \u003ckbd\u003eCtrl+u\u003c/kbd\u003e                       | \u003ckbd\u003ePgUp\u003c/kbd\u003e   |\n| \u003ckbd\u003eCtrl+d\u003c/kbd\u003e                       | \u003ckbd\u003ePgDn\u003c/kbd\u003e   |\n| \u003ckbd\u003eCtrl+h\u003c/kbd\u003e, \u003ckbd\u003eBackspace\u003c/kbd\u003e | \u003ckbd\u003eDelete\u003c/kbd\u003e |\n| \u003ckbd\u003eCtrl+a\u003c/kbd\u003e                       | \u003ckbd\u003eHome\u003c/kbd\u003e   |\n| \u003ckbd\u003eCtrl+e\u003c/kbd\u003e                       | \u003ckbd\u003eEnd\u003c/kbd\u003e    |\n| \u003ckbd\u003eCtrl+[\u003c/kbd\u003e                       | \u003ckbd\u003eEsc\u003c/kbd\u003e    |\n\n### View Control\n\n| Key                                                                                          | Description                                        |\n| -------------------------------------------------------------------------------------------- | -------------------------------------------------- |\n| \u003ckbd\u003ej\u003c/kbd\u003e, \u003ckbd\u003ek\u003c/kbd\u003e, \u003ckbd\u003eDown\u003c/kbd\u003e, \u003ckbd\u003eUp\u003c/kbd\u003e, \u003ckbd\u003ePgDn\u003c/kbd\u003e, \u003ckbd\u003ePgUp\u003c/kbd\u003e | Change the selected item / Scroll the view         |\n| \u003ckbd\u003eLeft\u003c/kbd\u003e, \u003ckbd\u003eRight\u003c/kbd\u003e                                                            | Scroll horizontally in the view                    |\n| \u003ckbd\u003eg\u003c/kbd\u003e                                                                                 | Go to the first item / Go to the top of the view   |\n| \u003ckbd\u003eG\u003c/kbd\u003e                                                                                 | Go to the last item / Go to the bottom of the view |\n\n### Text View\n\n| Key                          | Description                                                                    |\n| ---------------------------- | ------------------------------------------------------------------------------ |\n| \u003ckbd\u003e/\u003c/kbd\u003e                 | Activate search mode and open the search form                                  |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e             | Confirm the input                                                              |\n| \u003ckbd\u003eq\u003c/kbd\u003e, \u003ckbd\u003eEsc\u003c/kbd\u003e | Disable search mode and close the search form (**when search mode is active**) |\n\n### Search Mode\n\n| Key                          | Description                     |\n| ---------------------------- | ------------------------------- |\n| \u003ckbd\u003en\u003c/kbd\u003e, \u003ckbd\u003eN\u003c/kbd\u003e   | Go to the next / previous match |\n| \u003ckbd\u003eq\u003c/kbd\u003e, \u003ckbd\u003eEsc\u003c/kbd\u003e | Disable search mode             |\n\n### Table View\n\n| Key                              | Description           |\n| -------------------------------- | --------------------- |\n| \u003ckbd\u003e/\u003c/kbd\u003e                     | Open the filter form  |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e, \u003ckbd\u003eESC\u003c/kbd\u003e | Close the filter form |\n\n### Dialog\n\n| Key                                                              | Description                                                         |\n| ---------------------------------------------------------------- | ------------------------------------------------------------------- |\n| \u003ckbd\u003eDown\u003c/kbd\u003e, \u003ckbd\u003eUp\u003c/kbd\u003e, \u003ckbd\u003ePgDn\u003c/kbd\u003e, \u003ckbd\u003ePgUp\u003c/kbd\u003e | Change the selected item / Scroll the view                          |\n| \u003ckbd\u003eTab\u003c/kbd\u003e, \u003ckbd\u003eShift+Tab\u003c/kbd\u003e                             | Change the focus of the view within the active tab                  |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e                                                 | Select an item and trigger an event                                 |\n| \u003ckbd\u003eESC\u003c/kbd\u003e                                                   | Close the window or terminate the app (when the dialog is not open) |\n\n#### Context Dialog\n\n| Key                   | Description                                                    |\n| --------------------- | -------------------------------------------------------------- |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e      | Switch context and use previously cached namespaces            |\n| \u003ckbd\u003eCtrl+Space\u003c/kbd\u003e | Switch context and preserve current namespaces (if available)  |\n\n### Input Form\n\n| Key                               | Description                                      |\n| --------------------------------- | ------------------------------------------------ |\n| \u003ckbd\u003eHome\u003c/kbd\u003e                   | Move the cursor to the beginning                 |\n| \u003ckbd\u003eEnd\u003c/kbd\u003e                    | Move the cursor to the end                       |\n| \u003ckbd\u003eCtrl+w\u003c/kbd\u003e                 | Delete text from the cursor to the beginning     |\n| \u003ckbd\u003eCtrl+k\u003c/kbd\u003e                 | Delete text from the cursor to the end           |\n| \u003ckbd\u003eLeft\u003c/kbd\u003e, \u003ckbd\u003eRight\u003c/kbd\u003e | Move the cursor to the previous / next character |\n\n### Container Logs View\n\n| Key                          | Description                                                        |\n| ---------------------------- | ------------------------------------------------------------------ |\n| \u003ckbd\u003ef\u003c/kbd\u003e, \u003ckbd\u003ep\u003c/kbd\u003e   | Toggle between pretty print and single-line display for JSON logs. |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e             | Insert a blank line.                                               |\n\n## Contributing\n\nBug reports and pull requests are welcome.\n\n## License\n\nThis software is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarub0b0%2Fkubetui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsarub0b0%2Fkubetui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarub0b0%2Fkubetui/lists"}