运行应用(exec)
如果你不能实际启动任何应用程序,那么窗口管理器有什么用呢?exec 命令通过将你指定的命令传递给 shell 来启动一个应用程序。这意味着你可以使用通配符,并将会在 $PATH
中搜索程序。
格式:
exec [--no-startup-id] <命令>
举例:
# 打开 GIMP
bindsym $mod+g exec gimp
# 打开还不支持启动通知的终端模拟器 urxvt
bindsym $mod+Return exec --no-startup-id urxvt
--no-startup-id
参数禁用了对这个 exec 命令的启动通知支持。通过使用启动通知,i3 可以确保程序的窗口在你使用 exec 命令时所在的工作区中出现。同时,它还会在应用程序启动时将 X11 光标改为 watch(一个时钟)。所以,如果一个应用程序没有支持启动通知(不过大多数使用 GTK 和 Qt 的应用程序似乎都支持),将会出现 60 秒的时钟光标。
如果要执行的命令包含 ;
(分号)或 ,
(逗号),那么整个命令必须被引号包裹。例如,要为 shell 命令 notify-send Hello, i3
设置一个绑定,你可以在你的配置文件中添加这样一个条目:
# 运行一个包含逗号的命令
bindsym $mod+p exec "notify-send Hello, i3"
如果一个带有逗号和/或分号的命令本身需要引号,你必须用双反斜线转义内部引号,像这样:
# 运行一个包含逗号、分号和引号的命令
bindsym $mod+p exec "notify-send \\"Hello, i3; from $USER\\""