在 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
窗口,则可能意味着存在错误。有两种可能:
- 尝试在某处找到隐藏的窗口(第二个桌面或按
Alt+Tab
或Alt+Shift+Tab
切换窗口)。 - 使用手动终止进程
kill
或仅关闭调用子 shell 的 shell 以evince
发送SIGHUP
到子 shell。