当我启动的任何操作完成后,有没有办法将终端置于最前面?

当我启动的任何操作完成后,有没有办法将终端置于最前面?

所以我想知道当我运行完成之后是否可以将其带到我的终端前面。

我不是在谈论一次性的事情,比如

运行长任务;以某种方式带到前面;

而是可以自动完成的事情。

这将大大提高我的工作效率:)

我正在使用 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)$$]}
}

相关内容