从终端关闭活动窗口

Fra*_*cia 8 command-line window xte

你知道怎么做吗?我知道如何通过键盘 (Alt+F4) 执行此操作,我知道如何使用鼠标执行此操作(单击该 X),并且我还知道kill X应该终止 id Xkillall Y的进程(并且应该终止名为是)。但我想知道如何从终端杀死活动窗口

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

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

编辑。这是完整的脚本。首先启用“按下 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
Run Code Online (Sandbox Code Playgroud)

请注意,我仍然使用之前命名的 xte 应用程序,因为我前段时间提出的这个问题从未得到解答。

Oli*_*Oli 7

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

xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`
Run Code Online (Sandbox Code Playgroud)

同样,这似乎工作得很好。

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


Sté*_*hon 5

使用高级“关闭”操作wmctrl

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

规格

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

结果,它具有预期的行为:

  • 它仅关闭目标窗口,而不关闭整个应用程序(使用 xfce4-terminal、Chromium、Thunderbird 进行测试)。
  • 此外,它还使应用程序有机会对关闭事件做出反应,例如询问确认(使用正在编写邮件的 Thunderbird 进行确认,而 Firefox 在关闭具有多个打开的选项卡的窗口之前询问确认),甚至可能忽略事件。

命令

wmctrl -c :活动:

参考

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

-c 优雅地关闭窗口。

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