是的,xdotool 可以工作

是的,xdotool 可以工作

在 Lubuntu 18.04 中,我有许多后台 GUI 作业在 bash shell 中运行。其中,我有一个在后台运行的evince进程:

$ jobs | grep evince
[29]   Running                 evince CurrentDBs.pdf & 

我想将它的窗口移到我的桌面前面(在我当前运行 bash shell 的 lxterminal 窗口前面),但fg 29没有这样做。

这是为什么?是不是因为shell的作业控制与桌面环境(或X窗口系统)中哪个窗口在前面或不在前面无关?

如何将后台 GUI 作业移至桌面前端? xdotool 是否可以用于将给定进程 ID 的窗口提升到前面,即使该进程在 Wine 下运行 Windows 程序?

谢谢。

答案1

是的,xdotool 可以工作

以下是将所有证据窗口提升到前面的方法:

xdotool search --onlyvisible --class evince windowactivate %@

我认为它没有理由不能与 Wine 程序一起使用。当然,您需要找到正确的名字来称呼它们。该命令xprop可能会有所帮助。

答案2

evince在子 shell 的后台运行(请注意执行的进程中的尾随&符号)。但由于它是 GUI 应用程序,因此您应该可以看到它的窗口,因为按下窗口关闭按钮应该终止整个子 shell 进程。如果在子shell后台进程存在时看不到evince窗口,则可能意味着存在错误。有两种可能:

  1. 尝试在某处找到隐藏的窗口(第二个桌面或按Alt+TabAlt+Shift+Tab切换窗口)。
  2. 使用手动终止进程kill或仅关闭调用子 shell 的 shell 以evince发送 SIGHUP到子 shell。

相关内容