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

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

我正在尝试玩一款没有无边框窗口模式的游戏,并且我不想在游戏上使用普通窗口模式。

我使用两个显示器,一个是大型主显示器,另一个用来跟踪聊天、维基等内容。我玩的大多数游戏都有一个选项,可以在我玩游戏时将全屏游戏保持在最上面(无边框窗口模式),但是,对于没有此功能的游戏来说,这可能会非常令人沮丧。

如果我点击第二台显示器,有什么方法可以强制游戏保持最大化?

答案1

我没有足够的声望来发表评论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
  • 如果这是 Steam 游戏,您可以将其添加到启动选项中:

      SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0 %command%
    
  • 如果这不是 Steam 游戏,但您仍想仅针对这一个游戏进行更改,则可以launch_game.sh在与游戏主可执行文件相同的目录中创建一个文件:

      #!/bin/sh
      export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
      ./SomeGame "$@"
    

答案2

添加以下行:

export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0

到文件/etc/环境然后重新启动。

答案3

如果您很难找到本地环境变量文件,那么可以通过控制面板轻松添加新变量。

请按照以下步骤操作https://www.java.com/en/download/help/path.html

  1. 在 中Search搜索并选择:System (Control Panel)
  2. 单击Advanced系统设置链接。
  3. 点击Environment Variables
  4. 在该部分中System Variables找到PATH环境变量并选择它。

SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS一旦选择“新建”并添加具有值的变量0并保存。

如果您找不到该文件,这应该可以解决您的问题,而无需直接编辑该文件或使用命令行。

答案4

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

相关内容