![在 Steam 中,如何在游戏启动时自动禁用 HUD 热键,并在游戏关闭时重新启用它?](https://linux22.com/image/1125805/%E5%9C%A8%20Steam%20%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B8%B8%E6%88%8F%E5%90%AF%E5%8A%A8%E6%97%B6%E8%87%AA%E5%8A%A8%E7%A6%81%E7%94%A8%20HUD%20%E7%83%AD%E9%94%AE%EF%BC%8C%E5%B9%B6%E5%9C%A8%E6%B8%B8%E6%88%8F%E5%85%B3%E9%97%AD%E6%97%B6%E9%87%8D%E6%96%B0%E5%90%AF%E7%94%A8%E5%AE%83%EF%BC%9F.png)
我看过这个问题但它并不是自动的,我不想每次开始和停止玩游戏时都打开 GUI 并摆弄设置。
在 Steam 中,可以编辑游戏的启动选项。例如,我使用 bumblebee 通过添加primusrun %command%
启动选项来启用笔记本电脑的 nvidia 卡。在这里,我们应该能够调用开始和结束脚本(或只是将一些命令串在一起)以在游戏过程中禁用 HUD 热键按钮,然后在之后重新启用它们。大概就是这样launchscript ; %command% ; endscript
。
这意味着我们需要一种命令行方式来启用和禁用 HUD 热键。这个答案显示 CLI 方法。我试过这个,它在终端上有效,但当我尝试通过 Steam 中的启动选项调用它时却不行。当我尝试它时,bash -c
我遇到了分隔符问题,但使用 gsettings 解决了这个问题。
我尝试了以下所有方法,但没有成功:
dconf write /org/compiz/integrated/show-hud '[""]' ; primusrun %command%
bash -c 'dconf write /org/compiz/integrated/show-hud '[""]'' ; primusrun %command%
bash -c 'dconf write /org/compiz/integrated/show-hud '[""]' ; primusrun %command%'
bash -c "dconf write /org/compiz/integrated/show-hud '[""]' ; primusrun %command%"
我也尝试过使用 gsettings 而不是 dconf。例如,bash -c 'gsettings set org.compiz.integrated show-hud '[""]'' ; primusrun %command%
但它再次在终端中起作用,而不是在启动选项中起作用。
我很确定我只是遇到了语法问题,我怎样才能让它正常工作?
答案1
制作脚本诺胡德伦像普里默斯润已经完成了:
#!/bin/sh
old_key="$(LD_LIBRARY_PATH=/usr/lib dconf read /org/compiz/integrated/show-hud)"
LD_LIBRARY_PATH=/usr/lib dconf write /org/compiz/integrated/show-hud "['']"
"$@"
LD_LIBRARY_PATH=/usr/lib dconf write /org/compiz/integrated/show-hud "$old_key"
并像这样调用它:
nohudrun primusrun %command%
LD_LIBRARY_PATH=/usr/lib 用于脱离 Steam 的 x32 环境,因为 dconf 找不到 x64 库(也许有更好的方法)。我认为这就是它在“启动选项”中失败的原因。
您还可以添加一些锁定,以便在通过该脚本运行多个游戏时能够正确恢复键绑定。
附言如何知道哪里出了问题?只需将 stderr 打印到文件即可:
dconf write /org/compiz/integrated/show-hud "['']" 2>>/home/velkan/errr