如何强制新窗口在后台打开且不带焦点?

如何强制新窗口在后台打开且不带焦点?

我将 Opera 设置为默认浏览器,但 Firefox 也是如此。在 Liferea 中打开链接时,链接会在外部浏览器中打开,并且浏览器会获得焦点。我想在后台打开链接(这样浏览器就不会获得焦点)。

唯一的解决方案是在 CCSM 的常规选项的“聚焦和提升行为”选项卡中将“聚焦预防级别”设置为“正常”。但这会给其他事情带来麻烦。您还有其他想法可以防止新窗口获得焦点吗?

我在 11.10 上使用 Unity。

答案1

我认为这是一个错误,所以我报告了。它以前可以与 Gnome 2 一起使用,现在它可以与 Gnome Shell 和 Gnome 3 fallback 一起使用。我怀疑是 compiz,但我又知道什么呢。

答案2

右击 Liferea 的窗口标题栏并选择“始终在最前面”。现在您的所有链接都将在后台打开。

答案3

从 dash 打开 CompizConfig 设置管理器 (CCSM)

在下面常规选项
自动加注=非常高
延迟=500

所有新窗口将在后台打开!

答案4

单独的 CCSM 自动提升在 ubuntu 10.04 或 12.04 中不起作用..所以我不得不创建这个脚本:

#!/bin/bash
delay=0.5
while true; do 
        windowId=`xdotool getwindowfocus`
        xdotool getwindowname $windowId
        xdotool windowactivate $windowId; 
        sleep $delay; 
done

请注意,这个简单的脚本适用于所有窗口,而不仅仅是您的浏览器。但总体来说,它很好,因为您不会错过点击新打开的窗口...

此脚本取决于您是否将“焦点预防级别”设置得足够高,以便新打开的窗口不会获得焦点。它至少在 Ubuntu 10.04 和 12.04 上运行,但应该可以在任何地方运行……如果它对您不起作用,请说出来,我们可以一起思考!

这是一个无限循环(使用 ctrl+c 中断),它将“激活”具有焦点(键盘输入的焦点)的窗口。因此,它将使聚焦窗口每 0.5 秒“跳”到前台(您可以根据需要/喜好降低或增加延迟值)。

因此,所有新打开的应用程序和窗口仍将在前台打开,但会被具有焦点的窗口立即隐藏!

需要说明的是,它们不会在后台打开,但此脚本将提供几乎相同的效果。“几乎”是因为如果您运气不好,您仍然可以在焦点窗口被置于前台之前单击新打开的窗口,这将使新窗口成为焦点窗口...降低延迟将有助于防止这种情况发生,但会消耗更多 CPU,我认为小于 0.1 并不好,但您必须测试以查看哪种方法更适合您...

PS:你的xdotool版本必须支持这些命令:getwindowfocus、getwindowname、windowactivate

相关内容