xdotool:未知命令:21043361

据我所知,下面的代码行应该关注开放的nautilus窗口

xdotool windowactivate `xdotool search --onlyvisible --class nautilus` 

但是我收到了错误

xdotool:未知命令:21043361

我认为发生的事情是内部xdotool命令报告了多个窗口ID。 所以外部命令看起来像xdotool windowactivate 12345678 21043361 ,并且不知道如何制作第二个数字。

如果您不介意激活哪个打开的Nautilus窗口,可以选择第一个:

 xdotool windowactivate $(xdotool search --onlyvisible --class nautilus | head -n 1) 

如果你介意的话,你可能想用--title--maxdepth进一步选择。

要排除Nautilus提供的根窗口,这应该有效:

 xdotool windowactivate $(xdotool search --onlyvisible --class nautilus | grep -vxF $(xwininfo -int -size -root | sed -n 's/.*Window id: *\([0-9]\+\).*/\1/p') | head -n 1) 

xdotool作者在这里。

您所看到的很可能是有两个窗口ID。 您可以尝试确切地确定哪个窗口ID是您想要的那个,但在大多数情况下可以使用’命令链接’和’窗口堆栈’function – 请参阅xdotool联机帮助页中的“窗口堆栈”和“命令链”。

您问题的最简单的解决方案是使用xdotool搜索并将窗口ID直接传递给windowactivate命令,如下所示:

 xdotool search --onlyvisible --class nautilus windowactivate 

上面进行了搜索,将结果保存在窗口堆栈中,然后调用windowactivate,其中没有参数适用于窗口堆栈上的第一个窗口(又名’%1’)。 可以将其视为在同一命令行中将搜索结果传递到其他xdotool命令的方法。

这是获取所有谷歌浏览器窗口的标题的另一个例子,使用’%@’窗口堆栈的东西,意思是“堆栈上的所有窗口”(不同于%1,%2等,这是堆栈中的特定窗口)

 % xdotool search --onlyvisible --class chrome getwindowname %@ asdf - Google Search - Google Chrome CNN.com - Breaking News, US, World, Weather, Entertainment & Video News - Google Chrome Ask Ubuntu - Google Chrome Google Chrome 

通常,任何发出窗口ID(search,selectwindow,getactivewindow等)的命令都将填充窗口堆栈以与链式命令一起使用。 另一个例子,通过点击它来杀死一个窗口(通常退出一个应用程序):

 % xdotool selectwindow windowkill