选项 1. wmctrl

选项 1. wmctrl

我不想终止浏览器进程,我只是想通过命令关闭浏览器。

答案1

选项 1. wmctrl

wmctrl 可以向窗口管理器查询信息,并且可以请求采取某些窗口管理操作。wmctrl 手册

为了正常关闭 Firefox,wmctrl 可以解决问题--

wmctrl -c "Firefox" -x "Navigator.Firefox"

您可能需要先安装它

sudo apt install wmctrl

警告 #1

wmctrl -c每次只能关闭一个窗口。如果您打开了多个 Firefox 窗口,则需要运行wmctrl -c多次。

示例解决方案

while wmctrl -c 'Firefox' -x 'Firefox.Navigator'; do sleep 0.1; done

警告 #2

关闭标签页?确认窗口提示

如果browser.tabs.warnOnClose设置为 true,Firefox 将阻止窗口关闭。这可以在 中更改about:config,但这会损害您的 Firefox 用户体验,可能不值得冒这个险。

选项 2. xdotool

xdotool 允许您以编程方式(或手动)模拟键盘输入和鼠标活动、移动和调整窗口大小等。xdotool 手册页

捷摩是第一个提出这个建议的人解决方案。我只是在他们的答案的基础上添加了额外的逻辑来处理可能出现的关闭确认窗口。

示例脚本

#!/bin/bash
#
# TITLE: close-firefox.sh
#
# DESCRIPTION: Programmatically closes firefox in a way 
#              similar to how a human closes firefox.


# Find the window ID of a Firefox window.
FFWID=$(xdotool search --name "Mozilla Firefox" | head -1)

# use the Firefox window ID to activate that window
xdotool windowactivate --sync $FFWID

# Send the "Quit" hotkey "Ctrl + q" to Firefox.
# https://support.mozilla.org/en-US/kb/keyboard-shortcuts-perform-firefox-tasks-quickly
xdotool key --clearmodifiers ctrl+q

# Give the system a moment to process
sleep 0.1

# Find the window ID of the Firefox close confirmation window
CWID=$(xdotool search --name "close tabs")

# End the script if xdotool didn't detect a confirmation window
if [ $? -ne 0 ]; then
  exit 0
fi

# Activate the Confirmation window
xdotool windowactivate --sync $CWID

# Send an "Return" key press to the confirmation window.
# This does the default action of pressing the "Close tabs" button.
xdotool key --clearmodifiers Return

答案2

您无法关闭选项卡,但可以使用以下方法之一关闭浏览器:

pkill firefox
killall firefox

答案3

如果您希望“完全”“优雅地”关闭 Firefox,请尝试使用 xdotool。所谓“优雅”,是指关闭程序,而不是终止程序。所谓“完全”,是指“退出”Firefox,一次性关闭所有窗口。wmctrl 将优雅地关闭单个 Firefox 窗口,但不会关闭所有窗口。

创建以下脚本:

/bin/bash #!/bin/bash

WID=`xdotool 搜索“Mozilla Firefox”| head -1`
xdotool windowactivate --sync $WID
xdotool 键 --clearmodifiers ctrl+q

那就可以了。

相关内容