Bindsym 不执行 i3wm 命令
Bindsym does not execute i3wm command
此快捷方式在 i3wm 中不起作用。它应该显示 window 打开的应用程序列表。
当按下键盘快捷键时,没有任何可见的事情发生。
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
这是一个双向问题
首先是一些小配置:
- 我认为你在那里有一个额外的点,因为
./
在那个上下文中只代表它前面的文件夹(即:/home/george
)
- 您可以使用
$HOME
变量代替您的主文件夹,i3 会选择它
- 我认为确实不需要
bash -c
,因为您的文件在第一行有 .sh
扩展名和 #!/bin/sh
header,这意味着你只需要用 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"
两者在我的设置中似乎都运行良好,祝你好运!
此快捷方式在 i3wm 中不起作用。它应该显示 window 打开的应用程序列表。
当按下键盘快捷键时,没有任何可见的事情发生。
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
这是一个双向问题
首先是一些小配置:
- 我认为你在那里有一个额外的点,因为
./
在那个上下文中只代表它前面的文件夹(即:/home/george
) - 您可以使用
$HOME
变量代替您的主文件夹,i3 会选择它 - 我认为确实不需要
bash -c
,因为您的文件在第一行有.sh
扩展名和#!/bin/sh
header,这意味着你只需要用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"
两者在我的设置中似乎都运行良好,祝你好运!