我有一个锁屏脚本(通过i3lock)可以在终端窗口中正常运行,但是不能用作i3配置中的按键绑定。
脚本非常简单:
# Take screenshot
scrot /tmp/screenshot.png
# Pixelate and add central logo
magick /tmp/screenshot.png -scale 10% -scale 1000% -gravity center /home/user/bin/archlogo.png -composite /tmp/lock.png
# Lock using pixelated image & logo
i3lock -e -f -c 000000 -i /tmp/lock.png
脚本已保存到~/bin/lock
并且可执行。该目录也已在我的~/.bash_profile
中标识。
没有错误消息,只是终端光标短暂闪烁。
~/.config/i3/config
中的相关行:
# lock screen
bindsym $mod+l exec lock
($ mod + 1的默认键绑定已删除,i3重新启动)。
答案 0 :(得分:2)
~/.bash_profile
是bash
的配置文件,因此仅在bash
启动时(作为交互式登录shell或由其他bash配置文件有意提供时)加载。 ~/.bashrc
)。 i3
本身不会从~/.bash_profile
加载任何内容, X.org 也不会加载任何内容。因此,除非您从bash shell(例如从控制台使用startx
)开始X会话,否则将不会加载对PATH的任何更改,并且i3
将不知道添加了~/bin
到PATH
。
如果您想为PATH
本身修改i3
,那么~/.bash_profile
是不合适的地方。不幸的是,对于X会话,“正确的位置”在很大程度上取决于您如何启动它(例如,使用start
或使用诸如lightdm
或kdm
之类的桌面管理器从控制台启动)。
您可以将PATH
的设置添加到~/.pam_environment
,至少在Arch上,应将给定值设置为PATH
的系统默认设置。例如,如果您将以下内容放入~/.pam_environment
PATH=/home/soundscape/bin
,默认值为
/usr/local/sbin:/usr/local/bin:/usr/bin
您最终会得到
/home/soundscape/bin:/usr/local/sbin:/usr/local/bin:/usr/bin
当然,启动~/.bash_profile
时,bash
或类似文件中的任何设置都可能会进一步修改该值。
注意: ~/.pam_environment
不支持任何参数扩展,因此添加类似内容
PATH=${PATH}:${HOME}/bin
将不起作用。
答案 1 :(得分:0)
我记得类似的事情...尝试像这样指定绝对路径,可能是exec
不遵守$PATH
环境变量:
# lock screen
bindsym $mod+l exec "${HOME}/bin/lock"