如何更改窗口标题(由 wmctrl 使用)

如何更改窗口标题(由 wmctrl 使用)

我在用控制端在启动应用程序后移动它们,这样我就不必手动执行此操作,例如,对于几个文本编辑器、Web 浏览器、pdf 查看器和终端。我发出以下 wmctrl 命令来移动应用程序

wmctrl -r <title> -e <x>,<y>,0,-1,-1

其中 < x > 和 < y > 是水平和垂直目标坐标,< title > 是 返回的应用程序名称wmctrl -l。如果我通过以下命令启动两个 Google Chrome 副本,

google-chrome &
google-chrome &

然后发出命令

wmctrl -l 

返回的窗口名称是

0x03c06fd9  0 main New Tab - Google Chrome
0x03c0703d  0 main New Tab - Google Chrome

现在,如果我尝试将其中一个移动到任意坐标,比如说 100,100,使用以下命令

wmctrl -r "Google Chrome" -e 100,100,0,-1,-1

如果您还没猜到的话,它会移动我当前正在输入的这个 Google Chrome 窗口,因为我在打开另外两个窗口之前打开了它。

有没有办法在从命令行启动时分配这些窗口标题,或者稍后重置它们。我需要将名称更改为类似

Google Chrome 1
Google Chrome 2
Google Chrome 3

请注意,据我所知有两种解决此问题的方法,但是,我不喜欢它们中的任何一种,因为如果操作系统在后台启动程序,它们可能会导致问题。

  1. 不要使用标题,而是通过-i命令使用数字窗口 ID。
  2. 使用字符串:ACTIVE:来使用活动窗口

答案1

使用软件包xttitle中的程序xttitle。请注意 x 中的两个“t”。itle。嗯,实际上,有 3 个“t”……但我只输错了前两个。

下面是我的一个例子~/.bashrc,其中我覆盖了cd内置函数,并用来xttitle将当前目录放在我的窗口标题中:

# from the "xttitle(1)" man page - put info in window title
update_title()
{
    [[ $TERM = xterm ]] || [[ $TERM = xterm-color ]]  && xttitle "[$$] ${USER}@${HOSTNAME}:$PWD"
}

cd()
{
    [[ -z "$*" ]] && builtin cd $HOME
    [[ -n "$*" ]] && builtin cd "$*"
    update_title
}

相关内容