从终端关闭活动窗口
你知道怎么做吗? 我知道如何从我的键盘(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
是一个这样的应用程序,但terminator
和xterm
不受影响。 我建议这更像是一个错误(可能是设计)与那些应用程序而不是我的命令。
我用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使用当前活动窗口进行操作。