当前位置: 首页 > news >正文

x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法

目录

    • 简介
    • 快速上手
      • 安装
      • 使用
    • 功能特点
    • 竞品和相关作品
    • 进一步探索

简介

gum 是由 Charm 团队于 2022 年使用 Go 开发的终端 UI 组件工具箱,能帮用户在终端中快速构建交互式 TUI 界面(如表单、菜单、提示框等),简化命令行应用程序的开发。

相比于同类工具,gum 容易上手,且设计更加美观、现代化,能在 Linux、macOS、Windows 等主流操作系统上运行,适合想在脚本中添加交互表单、配置向导、信息提示等交互界面的用户

在这里插入图片描述

快速上手

安装

eval "$(curl https://get.x-cmd.com)"        # 安装 x-cmd
x env use gum                               # 使用 x-cmd 安装 gum

使用

  1. 美化文本或用于生成 log 日志:

    # 为文本添加颜色或边框
    gum style --border normal --foreground 212 'Hello world!'
    gum style --border normal --border-foreground 30 "Hello, there! Welcome to $(gum style --italic --foreground 99 'x-cmd')."# 生成 log 日志
    gum log -s -t ansic -l error "Unable to create file." name file.txt
    
  2. 构建输入框:

    gum input --placeholder "Summary of this change"# 适合长文本的输出框
    gum write --placeholder "Details of this change"
    
  3. 构建选项对话框:

    # 操作确认框
    gum confirm "Is the game over?"# 文件选择框
    gum file --directory -a --height 5 "$HOME"# 选项列表
    gum choose --no-limit 'red' 'blue' 'green'
    printf "%s\n" 'red' 'blue' 'green' 'yellow' 'orange' | gum filter --prompt "color: "
    

功能特点

  1. 开箱即用:无需任何配置即可使用,简单易上手。
  2. 组件多样:提供输入框、选择框、确认框、文件筛选、分页阅读器、旋转加载器等多种组件,能应对绝大部分场景。
  3. 定制化:支持通过命令行参数调整组件的颜色、样式、功能,以满足定制化需求。

竞品和相关作品

  1. dialog:于 1994 年发布的终端 UI 组件工具箱,用于在终端中创建文本用户界面。它基于 curses/ncurses 库,支持多种类型的对话框,如输入框、菜单、消息框和确认框。
  2. whiptail:类似于 dialog,首次发布于 1998 年,兼容 dialog,更加轻量。

进一步探索

  • gum 源代码 - gum 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 gum 和参与社区贡献。
  • gum 使用示例 - 由官方提供的一系列应用场景。

更多内容请查阅 : pkg/gum

转载请标明原文链接 :https://www.x-cmd.com/pkg/gum

相关文章:

x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法

目录 简介快速上手安装使用 功能特点竞品和相关作品进一步探索 简介 gum 是由 Charm 团队于 2022 年使用 Go 开发的终端 UI 组件工具箱,能帮用户在终端中快速构建交互式 TUI 界面(如表单、菜单、提示框等),简化命令行应用程序的开…...

WMS系统打通仓储全链条数据势在必行,该如何做呢

一、引言 在当今竞争激烈的商业环境中,高效的仓储管理对于企业的生存和发展至关重要。仓储管理系统(WMS)作为现代仓储管理的核心工具,其作用不仅仅是简单地记录库存数量和位置,更在于打通仓储全链条数据,实…...

基于Python的校园爱心帮扶管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

如何基于pdf2image实现pdf批量转换为图片

最近为了将pdf报告解析成为文本和图片,需要将大量多页的pdf文件拆分下单独的一页一页的图像,以便后续进行OCR和图像处理,因此就需要实现将pdf2image,本文主要结合开源的pdf2image和poppler,实现了pdf转换为png格式图片…...

Tomcat(1) 什么是Tomcat?

Tomcat是一个开源的Web服务器和Servlet容器,它实现了Java Servlet、JavaServer Pages (JSP)、WebSocket和Java EL等Java EE规范。Tomcat由Apache软件基金会维护,是Java应用程序的常用部署平台。 深入理解Tomcat 1. 架构 Tomcat的核心组件包括&#xf…...

商务礼仪与职场沟通

知人者智,自知者明。胜人者有力,自胜者强。知足者富,强行者有志,不失其所者久,死而不亡者寿。 ——《道德经(第三十三章)》 认知先行——意识塑造 职业化——标准化,规范化&#…...

C语言必做30道练习题

C语言练习30题(分支循环,数组,函数,递归,操作符) 目录 分支循环1.闰年的判断2.阅读代码,计算代码输出的结果3.输入一个1~7的数字,打印对应的星期几4.输入任意一个整数值,…...

Linux信号_信号的产生

信号概念 信号是进程之间事件异步通知的一种方式,属于软中断。 异步:在异步操作中,任务可以独立执行。一个任务的开始或完成不依赖于其他任务的状态。 同步:在同步操作中,任务之间的执行是相互依赖的。一个任务必须等待…...

数据库基础(7) . DML-基本操作

3.3.DML DML 是 “Data Manipulation Language”(数据操作语言)的缩写,在数据库管理系统(DBMS)中用来处理已存在的数据库中的数据。 它主要包含用于插入(INSERT)、更新(UPDATE&…...

windows运行ffmpeg的脚本报错:av_ts2str、av_ts2timestr、av_err2str => E0029 C4576

问题描述 我目前的环境是: 编辑器: Microsoft Visual Studio Community 2022 (64 位) 运行的脚本是ffmpeg自带的remux样例,只不过我想用c语言执行这个样例。在执行的过程中报错如下图: C4576 后跟初始值设定项列表的带圆括…...

[mysql]mysql的DML数据操作语言增删改,以及新特性计算列,阿里巴巴开发手册mysql相关

1DML数据操作语言,增加删除改数据 插入数据INSERT 插入添加数据,两种方法 方式1:VALUES添加数据 #准备工作 USE atguigudb; CREATE TABLE IF NOT EXISTS emp1( id INT, name VARCHAR(15), hire_data DATE, salary DOUBLE(10,2)); SELECT * FROM emp1 INSERT INTO em…...

Github 2024-11-07 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10HTML项目1Kubernetes: 容器化应用程序管理系统 创建周期:3618 天开发语言:Go协议类型:Apache License 2.0Star数量:106913 个Fork数…...

【黑盒测试】等价类划分法及实例

本文主要介绍黑盒测试之等价类划分法,如什么是等价类划分法,以及如何划分,设计等价类表。以及关于三角形案例的等价类划分法。 文章目录 一、什么是等价类划分法 二、划分等价类和列出等价类表 三、确定等价类的原则 四、建立等价类表 …...

LeetCode17. 电话号码的字母组合(2024秋季每日一题 59)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” 输出:[“…...

SQLite数据库是什么?DB Browser for SQLite是什么?

‌SQLite是一个轻量级的嵌入式数据库,它是一个遵守ACID原则的关系型数据库管理系统‌。SQLite的主要特点是占用资源少、无需配置、支持多种操作系统和编程语言,并且具有高性能和跨平台特性。 SQLite的基本概念和特性 ‌轻量级‌:SQLite的数据…...

核心概念解析Caffeine 缓存模型与策略

1. 简介 什么是 Caffeine Caffeine 是一个高性能的 Java 缓存库,专为提高内存缓存的效率和灵活性而设计。它由 Google 的 Guava Cache 项目启发,并提供了更高的性能和更丰富的功能集。Caffeine 以其卓越的缓存命中率和内存管理能力而广受欢迎&#xff…...

ubuntu 22.04 防火墙

Ubuntu(22.04)云主机SSH安全加固 https://blog.csdn.net/qq_44846097/article/details/141098092 ubuntu22.04防火墙策略 https://blog.csdn.net/sunyuhua_keyboard/article/details/139493464 Ubuntu 22.04 防火墙设置和开放端口命令 https://blog.c…...

【数据结构-合法括号字符串】力扣678. 有效的括号字符串

给你一个只包含三种字符的字符串,支持的字符类型分别是 ‘(’、‘)’ 和 ‘*’。请你检验这个字符串是否为有效字符串,如果是 有效 字符串返回 true 。 有效 字符串符合如下规则: 任何左括号 ‘(’ 必须有相应的右括号 ‘)’。 任何右括号 …...

ThreadX在STM32上的移植:F1,F4通用启动文件tx_initialize_low_level.s

在嵌入式系统开发中,实时操作系统(RTOS)的选择对于系统性能和稳定性至关重要。ThreadX是一种广泛使用的RTOS,它以其小巧、快速和可靠而闻名。在本文中,我们将探讨如何将ThreadX移植到STM32微控制器上,特别是…...

【算法】递归+深搜:814.二叉树剪枝

目录 1、题目链接 2、题目 3、解法(后序遍历) 4、代码 1、题目链接 814.二叉树剪枝(LeetCode) 2、题目 3、解法(后序遍历) 我们这次不使用宏观的观察法,而是从具体实现开始。 题目要求我们,去掉不含1的子树。 对于子树这个…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络&#xff08;如 RNN&#xff09;的自动分词在原理、实现方式和效果上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 实现原理对比 对比维度手动分词&#xff08;规则 / 词典驱动&#xff09;神经网络 RNN 分词&#xff08;数据驱动&#xff09…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

Java设计模式:责任链模式

一、什么是责任链模式&#xff1f; 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种 行为型设计模式&#xff0c;它通过将请求沿着一条处理链传递&#xff0c;直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者&#xff0c;…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起&#xff0c;为了跨网段推流&#xff0c;千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...

Xcode 16.2 版本 pod init 报错

Xcode 版本升级到 16.2 后&#xff0c;项目执行 pod init 报错&#xff1b; ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchron…...