我经常运行一个程序从终端打开一个文件,我只想快速查看程序中的文件,而不是点击程序窗口,然后关闭程序Ctrl——F4这需要程序的窗口在前面 ie默认在焦点中。
如果程序是本地 Linux 的程序,程序的窗口总是在前面,即默认情况下处于焦点,所以我可以通过Ctrl-关闭程序F4。
如果程序是在Wine 下运行的Windows 程序,程序的窗口不在前面,即默认不处于焦点。前面的程序是启动程序的终端。我经常忘记这一点,并且不小心关闭了终端而不是程序Ctrl- F4。关闭终端也会关闭程序,但做的不仅仅是我想要的。
所以我的问题是:如何让 Windows 的程序默认运行在前面?
笔记:
您可以通过在Wine 2.0.1 下使用Windows 程序PDFXCview.exe和本地linux 程序evince打开pdf 文件来测试上述内容。我在 Ubuntu 16.04 下运行它们。
我运行 Windows 的程序,通过以下方式在终端中的 wine 下打开一个文件
wine /home/tim/path/to/PDFXCview.exe myfile.pdf
Run Code Online (Sandbox Code Playgroud)
并且程序的窗口默认不在前面。
奇怪的是,如果我在不打开任何文件的情况下运行程序
wine /home/tim/path/to/PDFXCview.exe
Run Code Online (Sandbox Code Playgroud)
程序窗口默认在最前面。
可能相关或不相关的一件事是,我已设置为使用 PDFXCview.exe 从 LXDE 中的文件管理器 PcManFM 打开 pdf 文件,方法是添加到~/.local/share/applications/mimeinfo.cache
:
application/pdf=wine-extension-pdf.desktop;userapp-PDFXCview.exe-NHNW1Y.desktop;
Run Code Online (Sandbox Code Playgroud)
该文件的内容
~/.local/share/applications/userapp-PDFXCview.exe-NHNW1Y.desktop
是
[Desktop Entry]
Type=Application
Name=PDFXCview.exe
Exec=wine /home/tim/path/to/PDFXCview.exe %U
Categories=Other;
NoDisplay=true
MimeType=application/pdf
Terminal=false
Run Code Online (Sandbox Code Playgroud)
它可能不相关,因为它是从桌面环境运行程序的设置,而我的问题是关于从终端运行程序。
当我在PcManFM的wine下使用PDFXCview.exe打开pdf文件时,通过双击PcManFM中的文件,PDFXCview.exe的窗口也不在前面。见https://askubuntu.com/q/925540/1471
谢谢。
首先请注意,前景窗口和带键盘焦点的窗口不是一回事。它们适用于 Mircosoft 的 Windows,也适用于许多窗口管理器,但不一定。例如 KDE 可以分别管理这两个属性。
现在关于你的问题,就像我上面提到的那样,这将取决于窗口管理器。在 Kde 中有一些设置允许您控制键盘焦点,甚至是依赖于应用程序的设置(但仍然是窗口管理器的一部分)。上图显示了如何做相反的事情(将接受焦点设置为是来执行您的要求)。我为一个应用程序测试了这个配置。
不要混淆窗口管理器、启动器等的角色。KDE、Gnome、LXDE 和其他人都做所有这些。窗口管理器管理哪些窗口在哪里,那里的大小,它们是否最小化,哪个在哪个后面,哪个具有键盘焦点。应用程序也可以控制这一点,另一个应用程序也可以控制,但最终是注册为窗口管理器的进程负责。它可以阻止其他进程做这些事情,并决定窗口被映射到哪里,以及它是否获得键盘焦点,当第一次映射时(或永远)。窗口管理器唯一可见的部分是所有其他窗口的标题栏(+关闭、最大化、最小化等图标)。