在 ubuntu 16.04 下,我收到以下消息
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged
Run Code Online (Sandbox Code Playgroud)
当我用命令打开 zenity 时
zenity --text-info --filename=<filename>
Run Code Online (Sandbox Code Playgroud)
这在 14.04 下不会发生。我认为答案与这篇文章有关,但这篇文章没有解释如何实施建议的解决方案。有人可以解释一下我应该将建议的行添加到哪个文件吗?
您可以通过为 GtkDialog 提供一个模态的父级来修复此警告。相关的函数是 gtk_window_set_transient_for()(它设置这个窗口总是在另一个窗口的顶部或瞬态)和可选的 gtk_window_set_modal() 以使其成为一个模态对话框。这最终是各种 GtkDialog 构造函数所做的。
我正在尝试抑制和 中的GtkDialog警告:zenityyad
$ zenity --error --text hello
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Run Code Online (Sandbox Code Playgroud)
错误重定向和过滤工作:
$ zenity --error --text hello 2> >(grep -v GtkDialog >&2)
Run Code Online (Sandbox Code Playgroud)
是的...烦人的警告信息消失了!!
这可以放置在~/.bashrc开发工作中,如这里的回答:
和这里:
但是,在创建供其他人使用的脚本时,您不希望他们改变自己的~/.bashrc.
我在为以下内容创建键入快捷方式时遇到问题:2> >(grep -v GtkDialog >&2)在脚本中使用。
出于多种原因,变量赋值GTK_SPAM="2> >(grep -v GtkDialog >&2)"后跟变量使用"$GTK_SPAM"是行不通的。
alias zenity="zenity 2> >(grep -v GtkDialog >&2)" 在调用脚本工作之前,我不能在脚本中使用它。
使用数组来保存打字快捷方式不起作用:
$ aGtkSpam=(2\> \>\(grep -v GtkDialog \>\&2\))
$ DumpArray …Run Code Online (Sandbox Code Playgroud) 当我执行 gksudo 时,我在终端中得到一些输出,我想抑制该输出,但仍然从实际命令中获得输出。例如:
$ gksudo whoami
> #some gksudo related output
> root
Run Code Online (Sandbox Code Playgroud)
当我尝试将输出转储为/dev/null这样时:
$ gksudo &> /dev/null whoami
Run Code Online (Sandbox Code Playgroud)
我得到了没有输出的提示信息,但是whoami结果也被抑制了。