【问题标题】:Getting gui dialog pop-ups (from bash) to stay on top of other windows获取 gui 对话框弹出窗口(来自 bash)以保持在其他窗口的顶部
【发布时间】:2013-07-20 13:42:36
【问题描述】:

我在yad list 上发布了这个,显然启用了隐身功能(甚至没有人查看它!- 通常,该列表非常敏感。),所以我想看看你们中是否有人有一些想法。它可能适用于在 KDE 桌面上使用任何 gui 弹出实用程序(例如 dialog、xdialog 或 zenity)的任何 bash 脚本。

总的来说,我喜欢 yad。它吹走了禅意,开发人员通常会在那里回答问题并修复/增强事物。

基本上,我有一组使用弹出式 gui 对话框与用户交互的脚本。

直到您在 KDE 桌面上的任何其他位置单击鼠标并显示其中一个弹出窗口时,它才能正常工作。

一旦你这样做了,所有后续对话框“出现”在其他所有内容之后,并且通常不可见,除了在任务栏中,并且必须从那里手动选择才能再次变得可见/活跃/聚焦。

有没有办法解决这个问题?我认为这是桌面问题,而不是问题。

谢谢,

乔 kubuntu 精确 64 位 (KDE 4.8.5)


我的duplex 打印系统是用 bash 编写的,它从一个(可能是嵌套的)脚本中多次调用 yad。它工作得很好,但有一个主要问题。

如果用户在脚本运行并使用 yad 显示某些内容时在 yad 对话框之外的任意位置单击鼠标,则所有后续 yad 对话框都会出现在其他所有内容的后面,并且基本上是不可见的。

脚本仍然会出现在任务管理器中,所以这些对话框可以一一拉回到前台,但是真的很反直觉,很烦人。

我认为这是 KDE 的“特性”,而不是 yad 中的错误。 有没有办法解决/防止这种情况?我尝试将 --on-top 添加到对话框中,但没有帮助。

当我运行脚本时(这可能需要一段时间,或者我可能想在对话框等待输入时执行其他操作),我无法执行其他操作,因为担心会出现此问题。我可以切换到另一个桌面,但这很狡猾,因为下一个对话框(但只有那个)可能会在那里弹出并把整个事情扔掉。 我正在使用 kubuntu 上 ppa 中最新的 yad。

【问题讨论】:

  • 你应该在 stackoverflow 上问这个问题——它不是 Ubuntu 特有的。
  • 您是否尝试过使用 KDE 窗口行为设置?你可以设置一个 KDE 窗口规则来保持一个窗口或一组窗口在其他窗口之上。
  • @January 有人把它搬到那里我会很好。如果我这样做,那不是交叉发布吗?
  • @user26687 我已经在现有窗口上手动使用这些设置并使用 kstart,但我不知道有什么方法可以为脚本中的 yad 弹出窗口等预设它们。

标签: bash kubuntu scripting kde user-interface


【解决方案1】:

谢谢!我遇到了同样的问题,从 gedit 自定义外部工具(sh 脚本)弹出的 zenity 对话框。添加wmctrl -a "CVS commit" cmd 修复它。

【讨论】:

    【解决方案2】:

    窗口的堆叠顺序由 KDE 窗口管理器控制。当 UI 应用程序(如yad)创建一个窗口时,它可能会将首选属性(如“始终在顶部”)传达给 WM。当由于某种原因这不起作用时,您可以尝试调用命令行实用程序,例如 wmctrl 指示 WM 提升现有窗口:

    wmctrl -a "Yad"
    

    【讨论】:

    • 感谢您回复一个老问题!我有两个相互关联的测试脚本:dl.dropbox.com/u/54584985/script1dl.dropbox.com/u/54584985/script2 我一直在尝试您建议的一些变体,但没有成功。如果您没有安装 yad,那么其他一些对话分支可能会做同样的事情。如果您或其他人可以看到我做错了什么,我将不胜感激。 Yad 已更新,窗口现在仍位于顶部,但仍失去焦点。
    • 我在带有 GNOME/Metacity 的 Solaris 上尝试了wmctrl -a <window name>。它按预期工作,包括获得键盘焦点。您可以使用wmctrl -l 列出活动窗口名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2013-01-11
    相关资源
    最近更新 更多