Arch+Xorg环境下非Kiosk模式启动Firefox并指定URL及修复xdotool故障
问题解决方法
1. 修复URL参数传递问题
原脚本使用$*传递参数,在处理多参数或带空格的URL时会出现解析错误,将其替换为"$@"即可正确传递所有启动参数(包括目标URL)。"$@"会保留每个参数的独立性,确保Firefox能正确接收并打开指定页面。
2. 修复xdotool失效问题
原脚本存在两个核心问题导致xdotool失效:
sudo xinit是阻塞执行的,会等到Firefox关闭后才运行后续xdotool命令,此时窗口已不存在;- DISPLAY环境变量未在xdotool执行前正确指定,且如果用sudo启动Xorg,普通用户的xdotool无权限访问root用户的显示会话。
修改后的脚本(推荐无需sudo的版本)
#!/bin/bash # 后台启动Firefox,传递所有参数到指定DISPLAY xinit firefox "$@" -- :1 & # 等待Firefox窗口初始化(可根据实际加载速度调整sleep时长) sleep 5 # 指定DISPLAY调整窗口大小,用--class匹配Firefox更稳定 DISPLAY=:1 xdotool search --class Firefox windowsize 2560 1440 # 等待窗口调整完成,再切换全屏 sleep 2 DISPLAY=:1 xdotool search --class Firefox windowfocus key F11
若必须使用sudo启动的版本
如果你的环境要求必须用sudo启动xinit,需同时用sudo运行xdotool并指定DISPLAY:
#!/bin/bash sudo xinit firefox "$@" -- :1 & sleep 5 sudo DISPLAY=:1 xdotool search --class Firefox windowsize 2560 1440 sleep 2 sudo DISPLAY=:1 xdotool search --class Firefox windowfocus key F11
额外优化说明
- 将
--name ".*Mozilla Firefox"替换为--class Firefox,因为Firefox的窗口标题会随页面变化,而窗口类名始终是Firefox,匹配更可靠; - sleep的时长可根据你的系统性能调整,确保Firefox窗口完全加载后再执行xdotool操作。
内容的提问来源于stack exchange,提问作者Nallu
相关产品推荐
相关产品推荐

