在 ubuntu 18.04.3 上,gsettings set org.gnome.desktop.wm.preferences focus-new-windows 'strict'
如果我从 Web 浏览器打开 CSV 文件并且 LibreOffice 实例已打开,则不起作用。以下是发生情况的分步说明:
- 我打开一个实例
LibreOffice Calc Version: 6.0.7.3
(或任何 LibreOffice [Writer|Calc|Draw|Impress] 实例)。 - 我打开了一个实例
firefox version 72.0.1 (64-bit)
。 - 在 Firefox 中,我加载了一个显示远程 CSV 文件的链接的网页。
- 我点击链接下载/打开 CSV 文件。
将出现一个弹出窗口,提示我执行以下操作之一:
Open with LibreOffic Calc (default)
Save File
CSV 文件。
我选择了
Open with
,但似乎什么也没发生(为什么?)。我期望的实例LibreOffice Calc
成为我所访问的 Firefox 网页上的活动窗口,但是事实并非如此。- I
[Alt]
+[Tab]
到预先存在的打开的实例LibreOffice Calc
和那里出现一个弹出对话框,提示我指示使用什么编码打开 CSV 文件。 因此,似乎为 CSV 打开了一个新的 LibreOffice Calc 实例,但它与另一个预先存在的 LibreOffice 实例相关联,因此,它不会窃取焦点。
但是,如果没有打开任何 LibreOffice 实例并执行步骤 2 到 6,那么它strict
就会起作用(良好),这意味着 LibreOffice Calc 实例会打开并窃取焦点。
那么,为什么strict
如果 LibreOffice 实例已经打开并从网络浏览器打开另一个实例?
更新:2020-01-23 我最近了解到窗口的两种模式是:
raise
= 将窗口提升到窗口堆栈的顶部(将其移动到显示屏的前面)focus (or active)
= 输入指向的窗口。
我还更改了一些 gsettings,现在看来它并gsettings set org.gnome.desktop.wm.preferences focus-new-windows 'strict'
没有按照我在此更新之前的陈述运行。相反,它似乎gsettings set org.gnome.desktop.wm.preferences focus-new-windows 'smart'
是提升并聚焦新窗口的设置。
这是我当前的 gsettings...
$gsettings list-recursively | grep 'raise\|focus' | grep pref
org.gnome.desktop.wm.preferences focus-new-windows 'smart'
org.gnome.desktop.wm.preferences raise-on-click true
org.gnome.desktop.wm.preferences auto-raise true
org.gnome.desktop.wm.preferences focus-mode 'click'
这是我在终端(打开 gedit 和[Ctrl]
++ )和 nautilus(在文件管理器中打开 CSV 文件)中进行测试的结果,以了解相应的新窗口是否被提升和/或聚焦[Alt]
......[T]
-if org.gnome.desktop.wm.focus-new-windows=smart
*In terminal, if there is NOT a pre-existing window, then the new window does raise (GOOD).
*In terminal, if there is NOT a pre-existing window, then the new window does focus (GOOD).
*In terminal, if there is a pre-existing window, then the new window does raise (GOOD).
*In terminal, if there is a pre-existing window, then the new window does focus (GOOD).
*In nautilus, if there is NOT a pre-existing window, then the new window does raise (GOOD).
*In nautilus, if there is NOT a pre-existing window, then the new window does focus (GOOD).
*In nautilus, if there is a pre-existing window, then the new window does raise (GOOD).
*In nautilus, if there is a pre-existing window, then the new window does NOT focus (BAD). <---- I WANT THIS TO FOCUS.
-if org.gnome.desktop.wm.focus-new-windows=strict
*In terminal, if there is NOT a pre-existing window, then the new window does NOT raise (BAD).
*In terminal, if there is NOT a pre-existing window, then the new window does NOT focus (BAD).
*In terminal, if there is a pre-existing window, then the new window does NOT raise (BAD).
*In terminal, if there is a pre-existing window, then the new window does NOT focus (BAD).
*In nautilus, if there is NOT a pre-existing window, then the new window does raise (GOOD).
*In nautilus, if there is NOT a pre-existing window, then the new window does focus (GOOD).
*In nautilus, if there is a pre-existing window, then the new window does raise (GOOD).
*In nautilus, if there is a pre-existing window, then the new window does NOT focus (BAD).
看起来该smart
值给出了最接近的期望行为,除非如果存在预先存在的窗口(例如,LibreOffice 已经打开),则新窗口会被升起(好)但不会被聚焦(坏)。 我怎样才能使新窗口聚焦?
更新时间 2020-02-22
一个似乎更好的解决方法是进行以下设置...
focus-mode='sloppy'
focus-new-windows='strict'
...这将提升窗口,并且仅当鼠标已在新窗口中时,才聚焦窗口。问题是,如果窗口已提升而鼠标尚未在新窗口中,则窗口不会聚焦。
理想的情况是无论鼠标位于何处,新窗口都会升起并聚焦。
答案1
在这方面,Gnome Shell 的默认行为确实相当模糊和不可预测。要解决这个问题,您可以安装一个名为“No Annoyance”的 Gnome Shell 扩展,它在默认的 Ubuntu 安装中完全受支持:您可以使用软件中心或命令安装它
apt get install gnome-shell-extension-no-annoyance
它将始终使新窗口成为焦点。