问题标签 [zenity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4012 浏览

linux - 带有 Zenity 的 Shell 脚本

使用 Zenity 可以添加按钮,更改字体,除了默认选项之外的任何其他内容?如果没有,还有另一个允许更多自定义的 sh 对话框?

0 投票
10 回答
31412 浏览

python - What's the simplest cross-platform way to pop up graphical dialogs in Python?

I want the simplest possible way to pop up simple dialogs in Python scripts. Ideally, the solution would:

  • Work on Windows, OS X, Gnome, KDE
  • Look like a native dialog on any OS
  • Require minimal code

To pop up a simple standard dialog should require only minimal code. Essentially you're just saying "Pop up a standard dialog with this text", or "Pop up a dialog with question x and feed response into variable y".

This is for simple scripts that would otherwise run on the command line. I don't want to know about GUI frameworks or have to set up code that says "start a GUI thread, register an event handler, configure some window properties, run a loop", etc. I don't want to have to set up a window or close the window afterward. I give it the text to put in the window and/or buttons and/or checkboxes, it returns what the user clicked on. Everything else should be taken care of automatically. For example:

for a standard dialog box with an "Ok" button, or

for a system tray popup balloon, or

and they press one of the two buttons, and then format equals 'JPG', or

and after they type in the box and press Ok, response now equals 'bananas.txt'. No other code required. No ugly command line prompts for the poor user.

I've listed Zenity and EasyGUI as example answers, since they're similar to what I want, but not perfect.

[Previously asked on Python Forum]

0 投票
5 回答
9141 浏览

shell - 我的 shell 脚本如何控制 zenity 窗口的位置?

当我zenity的垃圾邮件过滤器守护程序过滤一组邮件时,我会发布一个简单的通知。目前,此消息发布在屏幕中间,显得突兀。我想把它贴到左上角。但是,zenity它不-geometry支持所有 X 应用程序的标准选项,其文档提供了用于控制窗口高度和宽度的选项,但不提供位置。

有没有办法控制zenity发布窗口的 (x,y) 坐标?

如果没有,有没有办法通过修补 X 资源或窗口管理器(我正在使用fvwm)来解决这个问题?


编辑:以下不适用于~/.fvwm2rcfvwm版本 2.5.26):

正如手册页中所建议的,它们也不适用于-0 -0丢弃的内容。(窗口标题为zenity --info“信息”。)

有趣的zenity是,忽略了我之前的窗口管理器指令,即默认情况下应手动放置窗口。


编辑

在许多其他有趣的信息中,xprop(1)报告了有关zenity窗口的信息:

尽管这个明显令人鼓舞的报告,窗口实际上并没有张贴在位置 0,0 :-(

我知道Style命令正在生效,因为我添加了!Borders选项,果然zenity窗口没有边框……但仍然在该死的屏幕中央!

0 投票
1 回答
4824 浏览

bash - 如何使用 Zenity 在文件的每一行旁边显示带有复选框的文件内容

我试图为我拥有的文件列表提供视觉输出。我想要做的是在文件的每一行旁边显示一个复选框

我将以下 zenity 命令放在一起,但我的主要问题是我的文件列表可能很长。从下面的命令中,我通过 TRUE "" 或 FALSE "" 定义值

我的问题是我可以阅读内容并将它们放在以下命令(或类似的命令)中,而不必发出很长的命令

问候

保罗

0 投票
3 回答
9506 浏览

git - git stderr 输出无法通过管道传输

我正在为带有 bash 和 zenity 的 git:// 链接编写一个图形 URI 处理程序,并且我正在使用 zenity 'text-info' 对话框来显示 git 在运行时使用 FIFO 管道的克隆输出。该脚本大约有 90 行长,所以我不会在这里发布它,但这里是最重要的几行:

我使用 FIFO 而不是直接管道来允许它们异步运行并允许在 zenity 窗口关闭时杀死 git。

问题是,从 git 的输出中出现的唯一一行是第一行:

带有计数对象等的其他行不显示或显示在终端上。

当前原因

目前关于为什么这不起作用的共识似乎cat是非阻塞并在第一行之后退出,仅将其传递给 zenity 而不是其余的。我的目标是强制阻止阅读,并让 zenity 的文本信息对话框逐步显示所有输出。

git在 stderr 上输出进度消息(除了“初始化”消息之外的任何内容),但是当我尝试将 stderr 传输到文件或与 stdout 合并时,消息消失了。

修复尝试 1

我尝试用 C 语言编写 cat 函数的两个阻塞版本,bread 和 bwrite,如下所示:

它们工作得很好,因为它们会阻塞并且不会在 EOF 上退出,但它还没有完全解决问题。目前,使用其中一个、另一个或两者在理论上有效,但在实践中,zenity 现在根本没有显示任何东西。

修复尝试 2

@mvds 建议使用常规文件,结合tail -f而不是cat,可以做到这一点。对如此简单的解决方案感到惊讶(谢谢!)我试过了,但不幸的是,只有第一行出现在 zenity 中,没有别的。

修复尝试 3

在做了一些 strace'ing 并检查了 git 的源代码之后,我意识到 git 在 stderr 上输出了它的所有进度信息(任何超出“初始化”消息的内容),事实上这是第一行,我假设这是因为 cat在 EOF 早期退出是一个巧合/错误的假设(git 直到程序结束才 EOF)。

情况似乎变得简单多了,因为我不应该对原始代码进行任何更改(在问题的开头),它应该可以工作。然而,奇怪的是,stderr 输出在重定向时会“消失”——这只是 git 中发生的事情。

测试用例?试试这个,看看你是否在文件中看到任何东西(你不会):

这与我所知道的关于标准错误和重定向的一切背道而驰;我什至编写了一个在 stderr 和 stdout 上输出的小 C 程序,以向自己证明重定向对 git 不起作用。

修复尝试 4

根据 Jakub Narębski 的回答,以及对我发送到 git 邮件列表的电子邮件的回复,--progress是我需要的选项。请注意,此选项仅在命令之后有效,而在clone.

成功!

非常感谢您的帮助。这是固定线路:

0 投票
1 回答
3257 浏览

zenity - zenity 列表和 for 循环

我尝试使用 zenity 创建一个清单,我的问题是 $select 总是空的。我尝试用其他几种方式来做到这一点,比如这个:

通过这种方式, $select 变量不是空的,但是如果某个变量中有空格(例如 $x),zenity 将其拆分为 2(或更多)列。

我需要其他解决方案或对我的代码进行任何修复吗?

谢谢!

0 投票
2 回答
9658 浏览

bash - Bash,没有取消的zenity进度条

目前正在开发一个小型 bash 脚本,我的需求是一个不带取消按钮的进度条。我一直在研究 zenity 进度条,但还没有找到摆脱取消按钮的方法。

取消按钮的不存在至关重要,因为它会完全破坏进度条的方式。我看到了一个基于终端的进度条,但由于我在所有其他情况下都使用 zenity 对话框,所以我也想将它用于进度条。

任何想法如何解决我的问题?周围还有其他进度条,还是可以摆脱取消按钮?

非常感谢任何帮助,谢谢!

0 投票
1 回答
4979 浏览

php - 从 PHP 写入标准输入?

在 linux 中,我想从 PHP 运行一个 gnome zenity 进度条窗口。zenity 的工作原理是这样的:

所以第一个命令会在 0% 处打开 zenity 进度条。Zenity 然后将标准输入数字作为进度条百分比(因此当您输入这些数字时,它将从 10% 变为 50% 再到 100%)。

我不知道如何让 PHP 输入这些数字,但我尝试过:

和:

和:

但是它们都没有更新进度条。我可以通过什么方式模仿标准输入在 linux shell 上的效果来获得 zenity 来更新其进度条?

0 投票
3 回答
4231 浏览

linux - 更新 zenity 窗口的内容

我正在尝试为一个名为 showbf 的程序制作一个小型监视器,该程序每隔一定时间打印一次更新。

我最好的尝试是以下

我真的不喜欢它,因为它会将结果附加到预览中。它变得非常混乱。我想使用 zenity --list 之类的东西(结果是 2 列,可用的 proc 数量和 walltime)。但是一旦 zenity 读取数据,它就不会更新其内容。有任何想法吗??

使用 while 循环重新创建窗口不是我想要的,因为新窗口被替换在屏幕的中心。

非常感谢萨尔瓦多

0 投票
1 回答
808 浏览

bash - 在终端外运行时,Bash 脚本不起作用

此脚本在以图形方式启动时(通过双击脚本图标并选择运行)无法正常运行,但是,如果从终端调用,则运行良好;不会保存文件或从现有文件加载内容。请帮忙!谢谢你。