gnome 'focus-new-windows:strict' 在某种情况下不起作用

gnome 'focus-new-windows:strict' 在某种情况下不起作用

在 ubuntu 18.04.3 上,gsettings set org.gnome.desktop.wm.preferences focus-new-windows 'strict'如果我从 Web 浏览器打开 CSV 文件并且 LibreOffice 实例已打开,则不起作用。以下是发生情况的分步说明:

  1. 我打开一个实例LibreOffice Calc Version: 6.0.7.3(或任何 LibreOffice [Writer|Calc|Draw|Impress] 实例)。
  2. 我打开了一个实例firefox version 72.0.1 (64-bit)
  3. 在 Firefox 中,我加载了一个显示远程 CSV 文件的链接的网页。
  4. 我点击链接下载/打开 CSV 文件。
  5. 将出现一个弹出窗口,提示我执行以下操作之一:

    • Open with LibreOffic Calc (default)
    • Save FileCSV 文件。
  6. 我选择了Open with,但似乎什么也没发生(为什么?)。我期望的实例LibreOffice Calc成为我所访问的 Firefox 网页上的活动窗口,但是事实并非如此。

  7. 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

它将始终使新窗口成为焦点。

相关内容