问题:
我正在使用 i3-wm 并且将 Mod3 作为热键。我有以下内容./config/i3/config
:
#This command works
bindsym Mod3+f exec "firefox"
#This doesn't work nor do my other scripts
bindsym Mod3+w exec "openBrowser"
当我从 bash 运行这两个命令时,它们都工作正常,但只有“firefox”命令使用热键运行。运行我自己的脚本不起作用。
额外细节:
/opt/bin/
openBrowser 是我的路径中的一个脚本。还尝试这样做:
#This command works
bindsym Mod3+f exec /opt/bin/openBrowser
我还尝试过其他脚本,但在 i3 调用时这些脚本都不起作用。因此我确定这不是脚本的问题。
我还注意到,当我在 bash 中时,如果我执行 Mod3+w,我的光标会闪烁,就像我执行 Mod3+[任何未设置的键] 一样,该键会将其值写入屏幕。所以看来 i3 至少正在尝试运行该功能。
答案1
我试图重复您所描述的问题。我发现我同时存在两个 i3 配置文件。~/.config/i3/config
和~/.i3/config
。
就我而言,编辑~/.config/i3/config
没有效果,因为它似乎~/.i3/config
胜过它。
这是一个不太可能的情况,但看看您是否有多个配置文件,并且可能您正在编辑错误的配置文件。
答案2
该exec
命令通过将您指定的命令传递给 shell 来启动应用程序。这意味着您的程序将在您的$PATH
.默认$PATH
通常不包括/opt/bin
,例如我的是:
andreatsh@debian:~ 11:28 > echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
尝试添加/opt/bin
到您的路径,放入您的~/.bashrc
:
export PATH=$PATH:/opt
我做了一些测试,这为我解决了问题。现在:
bindsym Mod3+w exec somescript
bindsym Mod3+w exec /opt/bin/somescript
具有相同的行为并且脚本有效。