You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu(X11)系统中获取当前活动窗口的URL

在Ubuntu(X11)下获取浏览器活动窗口URL的可行方案

X11原生工具(如xprop、xdotool)无法直接获取浏览器的URL,因为浏览器不会将这类内部状态暴露到X11窗口属性中。以下是几种可靠的解决思路:

1. 浏览器扩展 + 本地脚本通信

通过编写轻量浏览器扩展,监听标签页激活/更新事件,将当前URL传递给本地脚本:

  • 核心逻辑:扩展实时捕获当前激活标签的URL,通过文件写入、Unix套接字或Native Messaging机制把URL传给本地程序。
  • 示例实现:
    1. 编写Chrome/Firefox扩展,监听tabs.onActivated和tabs.onUpdated事件,获取当前标签的URL。
    2. 扩展将URL写入临时文件(如/tmp/current_browser_url),本地脚本可定时读取该文件获取最新URL。
    3. 或者使用Chrome的Native Messaging API,直接与本地Node.js/Python脚本建立通信通道,实时推送URL变化。

2. 利用浏览器远程调试协议

Chrome、Firefox等主流浏览器都支持远程调试接口,可通过HTTP请求获取当前标签的URL:

  • 启动浏览器时开启调试端口:
    对于Chrome,修改桌面快捷方式的启动命令为:
    google-chrome --remote-debugging-port=9222
    
    对于Firefox:
    firefox --start-debugger-server=9222
    
  • 获取当前URL:
    用curl结合jq解析JSON响应(需先安装jq):
    # Chrome
    curl -s http://localhost:9222/json/active | jq -r '.url'
    
    # Firefox
    curl -s http://localhost:9222/json/list | jq -r '.[] | select(.type=="page" and .active==true) | .url'
    
    也可以用Python/Node.js脚本调用该接口,实现更灵活的逻辑(比如自动监听URL变化)。

3. 桌面环境特定扩展(如GNOME)

如果你使用GNOME桌面,可借助GNOME Shell扩展(如能捕获浏览器URL并附加到窗口标题的扩展),之后就可以用xdotool getactivewindow getwindowname提取标题中的URL。不过这种方法依赖扩展的维护状态,可靠性略低于前两种方案。


内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:47:09