我需要为两个 Bash 列表(文件)记录中的每一个显示一些文本以及项目(大约 15 个值)。在同一屏幕上,我需要呈现三向选择(按钮、滚动选择窗口等)。
我是一个 Ubuntu(11.04) 脚本菜鸟,刚刚开始在脚本中使用 Zenity。我的朋友推荐了YAD。
我可以在 YAD 中完成所有这些还是使用我们不知道的其他简单的 GUI 工具?
.
I\xe2\x80\x99m 正在寻找使用zenity或yad来维护记录列表的bash 模板。该模板可以是带有打印选项的购物清单,也可以是用于监视 ping 时间的服务器列表。无论哪种情况,我\xe2\x80\x99d 都喜欢采用该代码并采用它来满足我的需要。
\n\n这是一个示例对话框模型:
\n\n\n\n该对话框允许选择记录并单击以下按钮:
\n\nInsert before(在所选记录之前插入)。安装了一个新的输入表单来输入字段。Edit(编辑选定的记录)。安装与“插入之前”相同的表单,但显示现有值。Delete(删除选定的记录)。显示现有记录的内容并请求确认。Run- 运行一个冗长的更新过程,用 \xe2\x80\x9cMatcheOK / Different / Error\xe2\x80\x9d 更新状态列。系统会提示用户对所选记录或所有记录运行更新。所有记录处理完毕后显示进度显示栏。Cancel ALL- 不要保存任何更改并退出 bash 脚本。按下Escape或通过单击关闭窗口X执行相同的操作。如果有任何记录发生更改,请确认。Save- 将更改保存到磁盘并退出 bash 脚本。注意:看来 zenity 只允许重新标记 \xe2\x80\x9cOK\xe2\x80\x9d 和 \xe2\x80\x9cCancel\xe2\x80\x9d 按钮。无法在 zenity 中定义新按钮。因此 yad ( Y et A another D)就是最佳选择。然而,zenity 仍然是一个问题,因为基于它的脚本可以很容易地转换为 yad。
\n\n我\xe2\x80\x99已经用谷歌搜索了现有的例子,这些是最接近的,但仍然远远不够令人满意:
\n\nYAD是 Zenity 分叉。
我有这个yad脚本:
#!/bin/bash
yad --text="Execute the file? (press 'Cancel' to open in text editor)"
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
Run Code Online (Sandbox Code Playgroud)
与作为应用程序启动器的桌面文件相关联,它可用于在单击文件(例如脚本等)时显示一个窗口。
在 zenity 中,可以编辑标签的名称:
Zenity 的相同脚本应如下所示:
#!/bin/bash
zenity --question --text="What to do?" \
--ok-label=Run \
--cancel-label=Edit
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
Run Code Online (Sandbox Code Playgroud)
而Run与Edit可以改变的。
我认为这里说的是yad编辑标签的方法:
--button=Button:ID
Run Code Online (Sandbox Code Playgroud)Add the dialog button. May be used multiply times. ID is an exit code …
我有一个名为lock-screen-timer的 bash 脚本,它调用yad挂载一个 GUI 对话框。在 Windows 10 和适用于 Linux 的 Windows 子系统 (WSL) 下,我可以从 bash 提示符运行它(注意必须先安装 VcXsrv)。我不知道如何在 Windows 10 中创建一个有效的桌面快捷方式。我可以在 Windows 10 桌面上创建快捷方式 OK...
...当我点击它时它不会运行。我看了很多网站都没有运气。
我需要一个脚本来检查yad(和其他程序)版本号是否 >= 特定数字。例如我有:
$ yad --version
0.40.0 (GTK+ 3.24.8)
$ gedit --version
gedit - Version 3.32.0
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
并非所有程序(如 bash)都存在环境变量:
$ echo $BASH_VERSION
5.0.3(1)-release
Run Code Online (Sandbox Code Playgroud) 我有一个半古怪的东西我正在摆弄。我正在寻找一种方法,可以更轻松地将 MPV(视频播放器)启动到视频链接。MPV 的默认行为是mpv https://url.of.video在终端中启动,或将 URL 拖放到 MPV 窗口。我不认为这个犹太洁食者是一个以键盘为中心的人。相反,我想启动一个弹出框,粘贴 URL,按 Enter,然后让 MPV 将视频启动到该 URL。这样我就可以将此命令绑定到键盘快捷键,使整个过程变得非常简单。我有这个完整的,但有一个小剪纸 - gnome-terminal 窗口悬而未决。这是一个简单的单线:
URL=$(yad --entry) && gnome-terminal -- bash -c "mpv $URL"
Run Code Online (Sandbox Code Playgroud)
如果我启动该命令,由于 YAD,我会收到一个弹出框。此时,我粘贴 URL,按 Enter,然后在 1-2 秒内打开该视频的 MPV 窗口。惊人的。正是我想要的。
我提到的剪纸是 gnome-terminal 保持运行的事实。不是什么大问题,但我想弄清楚上面的这个命令是否有办法启动 gnome-terminal,调用 MPV,附加变量(URL),然后让 gnome-terminal 在不结束视频的情况下自行关闭溪流。
好奇是否有人有任何想法。非常感谢!
我正在编写一个不起眼的文件管理器,正在寻找不同文件类型的列表以及 Ubuntu 用来打开它们的默认应用程序。
到目前为止,我只知道用gedit.打开“文本” ,用eog(侏儒之眼)打开“图像”,用ogg123. 我不确定是否ogg123是默认应用程序。
我很感激在下面的代码中扩展列表的一些帮助:
function OpenFileWithMagic () {
local FileType
FileType=$(file -i "$DfName/$2" | grep -oP '(?<=: ).*?(?=/)')
logger "bafman - OpenFileWithMagic - FileType: $FileType DfName: - $DfName parm 1: $1 2: $2 3: $3 4: $4"
case $FileType in
text)
# TODO: expand list of file types and associated applications to open them with
if [[ $4 == root ]]; then
gsu gedit $DfName/$2
else
gedit $DfName/$2
fi …Run Code Online (Sandbox Code Playgroud)