Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

bug(linux/x11): falso fallo de colocación si el gestor tarda en mapear la tira, y comentarios que prometen de más (#205)

未关闭
#212 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
linux, rust, typescript
领域
backend, desktop

调研方向

Start with the placement retry flow in src/Widget.tsx and src/lib/widget-placement.ts, then inspect the X11 placement logic in src-tauri/src/widget_placement.rs. Check how not_viewable is reported and how the existing tests cover placement outcomes; add a test for a later successful read within a bounded retry. Done means that case does not show a failure state and the rooted_origin and apply_size comments describe their actual guarantees.

由索引模型根据 Issue 内容生成。

描述

type:bug
Contexto

Seguimiento de la review de #205 (corrección de #179), integrada en f71039b: https://github.com/egdev6/quorb/pull/205#issuecomment-6508158872

1. Falso fallo de colocación cuando el gestor tarda en mapear la ventana

El ciclo de colocación en X11 lee la geometría con un presupuesto de READS × SETTLE (4 × 15 ms, unos 60 ms por fase) en src-tauri/src/widget_placement.rs. En el primer show(), src/Widget.tsx vuelve a pedir la colocación cuando la anterior devolvió not_viewable. Si el gestor todavía no mapeó la ventana dentro de ese presupuesto, el segundo intento también devuelve not_viewable y placementOutcome() (src/lib/widget-placement.ts) lo trata como failed: true: la tira marca placementFailed y ofrece reintentar con «la ventana nativa todavía no es visible», aunque no haya fallo real.

Candidato a reproducirlo: GNOME/Mutter con animaciones (pendiente en #107).

Propuesta: tras el show(), un not_viewable se reintenta en silencio (con un límite acotado) en lugar de marcar placementFailed.

2. Comentarios que afirman confirmaciones que el código no da
  • rooted_origin(ox, oy, rooted != 0) usa el retorno de gdk_window_get_origin, que GDK3 documenta como «not meaningful» (solo es 0 con la ventana destruida; no detecta un fallo de traducción de coordenadas). El comentario dice que, si la llamada falla, no hay lectura.
  • apply_size devuelve !is_resizable() justo después de set_resizable(false), que no puede fallar. El comentario lo presenta como la confirmación de que el permiso quedó cerrado.

El comportamiento es correcto; hay que ajustar los comentarios (o el código) para que no prometan una garantía que no existe.

Criterios de aceptación
  • Un not_viewable tras el show() no muestra el estado de fallo si una lectura posterior, dentro de un límite acotado, tiene éxito; hay test que lo fija.
  • Los comentarios de rooted_origin y apply_size describen lo que el código garantiza de verdad.
主要语言
TypeScript
星标
10
派生
2
平均合并
4 小时 53 分钟
30 天内合并 PR
115

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

egdev6/quorb 的其他 Issue

查看 egdev6/quorb 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。