Sou*_*ape 5 linux bash archlinux i3
我有一个锁屏脚本(通过 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+l 的默认键绑定并重新启动了 i3)。
~/.bash_profile是一个配置文件bash,因此仅在启动时加载bash(作为交互式登录 shell 或当它由其他 bash 配置文件明确获取时,例如~/.bashrc)。i3它本身不加载任何内容, X.org~/.bash_profile也不加载任何内容。因此,除非您从 bash shell 启动 X 会话(例如从控制台),否则对 PATH 的任何更改都不会被加载,也不会知道是否被添加到.startxi3~/binPATH
如果你想自己修改PATH,i3那么就~/.bash_profile不是正确的地方。不幸的是,对于 X 会话,“正确的位置”很大程度上取决于您如何启动它(例如,从控制台使用start或使用某些桌面管理器(例如lightdm或kdm))。
PATH您可以为to添加一个设置~/.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
不管用。