此快捷方式在i3wm中不起作用。它应该显示打开的应用程序的窗口列表。
按下键盘快捷键时,什么都看不见。
bindsym $mod+space exec bash -c "/home/george/./dmenu-i3-window-jumper.sh"
但是该脚本可以从终端正常运行。
脚本的bash代码:
https://github.com/minos-org/minos-desktop-tools/blob/master/tools/dmenu-i3-window-jumper
答案 0 :(得分:1)
这是两个方面的问题
首先介绍一些小的配置资料:
./
仅代表其前面的文件夹(即:/home/george
)$HOME
变量作为主文件夹的代表,i3会选择它bash -c
,因为您的文件在第一行既有.sh
扩展名又有#!/bin/sh
头,这意味着您只需要使用chmod +x
赋予它执行权限,无论如何它将以bash运行。因此,在综合中,您必须
chmod +x /home/george/dmenu-i3-window-jumper.sh
因此无需直接调用bash即可运行脚本, 并且您的bindsym可以简化为
bindsym $mod+space exec "$HOME/dmenu-i3-window-jumper.sh"
然后是脚本内容:
您会看到,脚本在第44行附近检查了STDIN is in a terminal,如果不是,它将尝试将文件通过管道传递到arg数组
if [ ! -t 0 ]; then
#add input comming from pipe or file to $@
set -- "${@}" $(cat)
fi
这似乎是主要问题,因为您没有在终端中运行命令,也没有给它提供文件。
您的选项是A:更改if
,以便它将始终将空字符串传递给参数数组
if [ ! -t 0 ]; then
#add input comming from pipe or file to $@
set -- "${@}" ""
fi
或B:使用touch ~/dummy
创建一个虚拟文件,然后将其传递到bindsym上的脚本
bindsym $mod+space exec "$HOME/dmenu-i3-window-jumper.sh < $HOME/dummy"
两个设置都可以正常工作,祝您好运!