Skip to content

[Bug]: Linux 下最小化后从任务栏关闭主窗口,还原得到透明空窗口(已由 Avalonia 修复,待依赖升级) #10101

Description

@liuclare

操作系统 / v2rayN / Core 版本

Ubuntu 26.04 LTS,KDE Plasma 6.6.6(Wayland 会话,v2rayN 经 XWayland 显示)/ v2rayN 7.24.7 / sing-box 1.13.18

预期情况

主窗口最小化后,从任务栏条目关闭,窗口隐藏到托盘,任务栏条目消失。

实际情况

关闭不生效,任务栏条目仍在。从该条目还原,得到一个只有边框、内容区透明的窗口,点击标题栏关闭按钮无反应。点一次托盘图标后窗口恢复正常。

成因在 Avalonia 的 X11 后端,v2rayN 侧无需改动。本 issue 作记录,方便其他 Linux 用户搜到成因和规避办法。

DefaultWindowMode.Hide() 只调用 XUnmapWindow,没有按 ICCCM 4.1.4 向 root 窗口补发 synthetic UnmapNotify。窗口已被窗口管理器最小化(已 unmap)时,对已 unmap 的窗口调用 XUnmapWindow 不产生任何事件,窗口管理器收不到客户端撤下窗口的通知,继续把它列在任务栏里。此时 Avalonia 侧 Window.Hide() 已停止渲染,窗口管理器后续把窗口映射回来时不重启渲染,内容区为空。再次关闭时因内部状态已是隐藏而直接返回。

上游修复:AvaloniaUI/Avalonia#22135 (2026-09-04 合入 main,带 backport-candidate-12.1.x 标签)

修复进入 v2rayN 的路径:Avalonia 回合到 12.1 分支并发布 12.1.x 补丁版,v2rayN 升级依赖后自动生效。当前 v2rayN 依赖为 Avalonia 12.1.2(#10089)。

复现方法

  1. Linux 桌面环境,X11 或 Wayland(后者经 XWayland)
  2. 参数设置中开启「关闭窗口时隐藏到托盘」
  3. 打开主窗口,点最小化
  4. 在任务栏该条目上右键,选关闭
  5. 观察:任务栏条目未消失
  6. 点击任务栏条目还原窗口,得到透明空窗口,标题栏关闭按钮无效
  7. 点击托盘图标,窗口恢复正常

规避办法:窗口最小化时不关闭它,先还原再关闭。已经出现空窗口时,点一次托盘图标可恢复。

软件日志

2026-09-02 21:06:14.1428-INFO OnClosing -> WindowClosing
2026-09-02 21:06:15.8690-INFO OnClosing -> WindowClosing

两条 OnClosing 对应第 4 步和第 6 步之后的关闭尝试,均未生效。日志没有异常记录,涉及的是窗口管理器与 Avalonia 之间的 X11 协议交互。

内核日志

与代理内核无关。窗口出现该状态时内核运行正常,代理功能不受影响。

额外信息

本机验证:用未改动的 v2rayN 7.24.7,只把 Avalonia.X11.dll 换成带上游补丁的版本,该现象消失,最小化状态下关闭可以隐藏到托盘。

我确认已更新至最新版本

我确认已查询历史issues

我确认系统版本是受支持的


🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions