所以我想知道当我运行完成之后是否可以将其带到我的终端前面。
我不是在谈论一次性的事情,比如
运行长任务;以某种方式带到前面;
而是可以自动完成的事情。
这将大大提高我的工作效率:)
我正在使用 zshell(如果有帮助的话)
答案1
首先需要安装wmctrl
一个命令行工具来与 EWMH/NetWM 兼容的 X Window Manager 进行交互:
sudo apt-get install wmctrl
为了聚焦正确的终端,您需要以给定的标题启动它,如下所示:
gnome-terminal -t tototiti
然后您可以使用以下命令将其置于最前面:
sleep 10; wmctrl -a tototiti
笔记:wmctrl -a STRING
将焦点放在标题包含 STRING 的窗口上
bash
已测试zsh
答案2
好的,我已让它工作了。
所以我必须找到一种方法来插入提示显示器。
所以基本上在我的 zsh 主题中我添加了一种方法来将当前窗口带到最前面。
function bring_to_front {
xdotool windowactivate $WINDOWID
}
$WINDOWID 实际上是由 gnome-terminal 自动设置的。
而魔法只是将该方法作为提示的一部分进行调用。这样,每次显示提示时,它都会将其带到最前面。而且由于提示是在上一个命令完成时显示的......
PROMPT='$(bring_to_front)${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
我接下来要尝试做的是选择正确的选项卡。如果我能做到这一点,我会更新答案。
编辑
奖金切换到右侧标签
免责声明:这非常危险,所以请耐心等待。
这仅适用于 gnome 终端。
function alert_done {
xdotool windowactivate $WINDOWID
child_count=`pgrep --parent $PPID -c`
# we need to remove the first child as it's gnome-tty-helper and not a tab
terminal_count=`expr $child_count - 1`
terminal_pids=`pgrep --parent $PPID | tail -n $terminal_count | tr '\n' ' '`
eval "pid_array=($terminal_pids)"
xdotool key alt+${(k)pid_array[(r)$$]}
}