从 i3 配置执行脚本

从 i3 配置执行脚本

问题:

我正在使用 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

具有相同的行为并且脚本有效。

相关内容