当我单击第二台显示器上的另一个窗口时,如何阻止全屏游戏最小化?

Con*_*njo 4 multiple-monitors fullscreen windows-10

我想玩一个没有无边框窗口模式的游戏,我不想在游戏上使用普通的窗口模式。

我使用两台显示器,一台作为大型主显示器,另一台作为跟踪聊天、维基等的东西。我玩的大多数游戏都可以选择在玩游戏时将全屏游戏保持在顶部(无边界窗口模式),但是,对于没有此功能的游戏,这可能会令人沮丧。

如果我点击我的第二​​台显示器,有没有办法强制游戏保持最大化?

小智 6

我没有足够的代表来评论gunix 的回答,但有人询问了上下文,所以我会写下我自己的答案。

这种行为通常是由 SDL 引起的,SDL 是一个常用的库,用于为游戏创建 OpenGL 上下文以将内容渲染到其中。2012 年对 libSDL2 的这一承诺添加了一个环境变量 ,SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS顾名思义,它控制游戏在失去窗口焦点时是否将自身最小化。

要阻止这种行为,您需要将此环境变量设置为 0。有几种方法可以做到这一点:

  • 修改您的本地环境文件,位于您的主目录中的某处,也许.profile.xprofile.bashrc将为您的 Bash shell 设置它,但如果您通过 xdm 或其众多替代方法之一登录,这可能没有帮助。这将影响所有使用 SDL 并以您的用户身份运行的游戏。
  • 修改您的全局环境文件,通常/etc/profile/etc/environment. 与您的主目录中的环境文件相比,这不是一个推荐的选择,但是如果您是系统上唯一的用户并且.profile即使在注销并重新登录后更改似乎也不适用,这是一秒钟尝试的东西。

对于上述两个选项,您将添加以下行:

    export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
Run Code Online (Sandbox Code Playgroud)
  • 如果这是 Steam 游戏,您可以将其添加到您的启动选项中:

      SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0 %command%
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果这不是 Steam 游戏,但您仍想仅为该游戏更改它,您可以launch_game.sh在与游戏的主要可执行文件相同的目录中创建一个文件:

      #!/bin/sh
      export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
      ./SomeGame "$@"
    
    Run Code Online (Sandbox Code Playgroud)

  • tbh,虽然这是建立在 Gunix 的答案上的,但这是*明显*更好的,对我来说,感觉像是一个更好的独立答案。也就是说......标签表明它适用于Windows 10,所以这在这里可能并不完全有用。 (2认同)
  • 这个问题被标记为“windows-10”,所以这个答案不相关。 (2认同)

小智 0

许多游戏可以在图形设置中设置为“无边框窗口”、“窗口无边框”或类似的设置。设置后,游戏仍将使用整个屏幕,但操作系统会将其视为常规窗口。我认为这可以防止当您单击第二个屏幕时游戏被最小化。