从终端关闭活动窗口

你知道怎么做吗? 我知道如何从我的键盘(Alt + F4)做到这一点,我知道如何使用我的鼠标(点击那个X),我也知道kill X应该用id X杀死进程(和killall Y应该杀死名为Y的进程。 但我想知道如何从终端杀死活动窗口

因此,根据我上面所说的,有效的答案也是获取活动窗口的id。

现在我正在从xte (模拟Alt + F4)实现这个function,但是我想知道是否有一种方式并不意味着安装另一个应用程序。 谢谢你们。

编辑。 这是完整的脚本。 首先启用“按下Ctrl时显示鼠标”,然后将此脚本添加到CompizConfig中的命令并绑定到右上角。 当您触摸右上角时,会显示鼠标周围的小通知。 如果不执行任何操作,活动窗口将在1秒后关闭。 但是,如果在第二秒内再次触摸角落,则不会关闭活动窗口。

 xte 'key Control_R'; if [ -f ~/.fcont ]; then rm -f -r ~/.fcont; else touch ~/.fcont; sleep 1; if [ -f ~/.fcont ]; then xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`; rm -f -r ~/.fcont; fi fi 

请注意,我仍然使用之前命名的xte应用程序,因为我之前提出的这个问题从未被回答过。

如果你想变得非常毛茸茸并避免默认情况下未安装的应用程序:

 xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2` 

再次,这似乎工作得相当好。

注意:对于某些应用程序(请参阅注释),这可能意味着应用程序的所有窗口都已关闭。 gnome-terminal是一个这样的应用程序,但terminatorxterm不受影响。 我建议这更像是一个错误(可能是设计)与那些应用程序而不是我的命令。

我用xdotool

 xdotool windowkill `xdotool getactivewindow` 

似乎能够快速而安静地完成工作。

使用wmctrl进行高级“关闭”操作

下面的命令还使用EWMH规范关闭当前活动的窗口,但它确实需要安装另一个程序,您似乎更愿意避免。

细节

  • 这是一个高级“关闭”操作。 换句话说,它向应用程序发送相同的消息,要求它关闭将通过鼠标clic在“关闭”小工具或键快捷方式上发送的窗口。
  • 它不会模拟关键快捷方式,因此无论您的密钥快捷方式是什么,或者即使您没有配置快捷方式(或者甚至可能没有配置键盘),它都可以工作。

结果,它有预期的行为:

  • 它只关闭目标窗口,而不是整个应用程序(使用xfce4-terminal,Chromium,Thunderbird测试)。
  • 此外,它为应用程序提供了对close事件作出反应的机会,例如询问确认(使用Thunderbird确认正在写入邮件的窗口,Firefox在关闭具有多个打开选项卡的窗口之前询问确认)或甚至可能忽略事件。

命令

 wmctrl -c:ACTIVE:

参考

从项目主页wmctrl – 与EWMH / NetWM兼容的X Window Manager交互的命令行工具。

-c正常关闭窗口。

特殊字符串“:ACTIVE:”(不带引号)可用于指示wmctrl使用当前活动窗口进行操作。