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

Linux Shell 脚本使用YAD工具实现Shell图形化界面

1. YAD (Yet Another Dialog)工具介绍

简介:
YAD 是 zenity 的增强分支,基于 GTK+ 的图形化工具,用于增强 Shell 脚本的交互性。它功能强大且支持多种窗口部件(如对话框、表单、进度条等),提供丰富的图形控件,适合需要复杂交互的脚本。

特点:

  • 高度灵活:支持多种控件(表格、树形视图、进度条、日历、滑块等)。
  • 脚本友好:通过命令行参数配置,与 Shell 脚本无缝集成。
  • 自定义界面:支持窗口尺寸、主题、图标等细节调整。
  • 事件驱动:可通过 --button 和 --form 处理复杂交互。

优点:

功能强大,适合复杂界面。

文档详细(man yad 或在线资源)。

缺点:

学习曲线较陡(参数较多)。

依赖 GTK+ 库。

2.Linux Debian系统安装YAD
# Debian/Ubuntu
sudo apt install yad

在这里插入图片描述


3.以下是获取 yad 详细文档的途径及基本使用方法:

1). 查看本地文档

  • 通过 man 手册
    安装 yad 后,可直接通过终端查看其完整文档:

    man yad
    

    若未找到手册,可能需要额外安装文档包(如 yad-doc)。

  • 命令行帮助
    运行 yad --helpyad --help-all 可查看所有支持的选项和参数列表。例如:

    yad --help-all | less
    

2). 在线文档与资源

  • 官方仓库与 Wiki
    yad 的代码托管在 GitHub,其 Wiki 页面提供了详细的使用说明和示例。
  • 社区教程
    开发者社区和博客(如 CSDN)常有 yad 的教程,可通过搜索关键词 “yad shell 图形化” 查找相关文章。

4. 基本用法示例

以下是一些常见功能的简单示例,供参考:

消息框

yad --title "提示" --text "操作已完成!" --button="确定"

文件选择

file=$(yad --title "选择文件" --file)
echo "所选文件: $file"

表单输入

yad --form --title "用户信息" \
    --field="用户名" \
    --field="密码:H" \
    --field="年龄:NUM" '18' '!100' '1'

进度条

for i in {1..100}; do
  echo $i
  sleep 0.1
done | yad --progress --title "进度" --text "正在处理..." --auto-close

5.创建Linux Shell脚本文件test.sh,写入下面简单输入框的测试代码:
#!/bin/bash
result=$(yad --title="输入示例" --form --field="姓名:" --field="年龄:NUM")
echo "输入内容:$result"
6.赋予test.sh执行权限
sudo chmod 755 test.sh
7.运行test.sh
./test.sh

在这里插入图片描述

如果出现下面报错:

(yad:35909): dbind-WARNING **: 11:27:58.421: AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files

需要安装at-spi2-core

sudo apt install at-spi2-core

在这里插入图片描述

8.再次运行test.sh,Linux Shell脚本成功实现图形化界面
./test.sh

在这里插入图片描述


9.以下是使用yad工具实现的图形化Shell脚本,用于将指定文件夹中的图片转换为PDF文件

img2pdf.sh

#!/bin/bash

# 检查yad是否安装
if ! command -v yad &>/dev/null; then
    echo "错误:yad未安装。请先安装yad。"
    echo "在Ubuntu/Debian上可以使用:sudo apt install yad"
    exit 1
fi

# 检查ImageMagick是否安装
if ! command -v convert &>/dev/null; then
    yad --error --text="ImageMagick未安装。请先安装ImageMagick(例如:sudo apt install imagemagick)"
    exit 1
fi

# 选择源文件夹
selected_dir=$(yad --title="选择图片文件夹" --file --directory --width=600 --height=400)
[ -z "$selected_dir" ] && exit 1

# 查找支持的图片文件
mapfile -t image_files < <(find "$selected_dir" -maxdepth 1 -type f \( \
    -iname "*.jpg" -o \
    -iname "*.jpeg" -o \
    -iname "*.png" -o \
    -iname "*.gif" -o \
    -iname "*.webp" \) | sort -V)

# 检查找到的文件数量
if [ ${#image_files[@]} -eq 0 ]; then
    yad --error --text="未找到支持的图片文件!\n支持格式:JPG/PNG/GIF/WEBP"
    exit 1
fi

# 选择输出文件路径
output_pdf=$(yad --file --save \
    --title="保存PDF文件" \
    --filename="$selected_dir/output.pdf" \
    --confirm-overwrite \
    --width=600 \
    --height=400 \
    --file-filter="PDF文件 | *.pdf")

[ -z "$output_pdf" ] && exit 1

# 显示进度对话框
(
    for ((i=0; i<=100; i++)); do
        echo $i
        sleep 0.1
    done
) | yad --progress \
    --title="转换进度" \
    --text="正在生成PDF文件..." \
    --percentage=0 \
    --auto-close \
    --width=300 \
    --no-cancel

# 执行转换命令
if convert "${image_files[@]}" -quality 90 "$output_pdf"; then
    yad --info --text="PDF文件创建成功!\n保存路径:$output_pdf" --width=300
else
    yad --error --text="文件转换失败,请检查文件格式!" --width=300
fi

赋予执行权限,并运行img2pdf.sh效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



http://www.kler.cn/a/613697.html

相关文章:

  • SpringSecurity过滤器链:核心过滤器的执行顺序与职责
  • spring security设置多个数据源和登录验证码
  • 故障识别 | 基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别,matlab代码
  • MySQL Explain 分析 SQL 执行计划
  • 数据设计(范式、步骤)
  • 2025跳槽学习计划
  • 速卖通历史价格数据获取:API合规调用与爬虫方案风险对比
  • Maven版本统一管理
  • Cursor生成的UI太丑?如何减少UI拉扯?
  • WEB或移动端常用交互元素及组件 | Axure / 元件类型介绍(表单元件、菜单和表格 、流程元件、标记元件)
  • 一文详解k8s体系架构知识
  • 【Kafka】Kafka4.0在windows上启动
  • Android 蓝牙/Wi-Fi通信协议之:经典蓝牙(BT 2.1/3.0+)介绍
  • STM32 IIC通信
  • uWebSockets开发入门
  • ZW3D二次开发_非模板表单_创建
  • C#TCP通讯封装服务器工具类
  • Dify 0.15.3版本 本地部署指南
  • 【Spiffo】光速项目:LVGL v9框架下的MIPI简易相机_Part1
  • Unity中的MaterialPropertyBlock的作用和 Material 的区别