Skip to content

fix(linux): reafirmar alwaysOnTop no blur (overlay caía pro fundo ao clicar fora)#28

Merged
aronpc merged 2 commits into
aronpc:mainfrom
gabrielscordeiro:fix/overlay-blur-always-on-top
Jul 10, 2026
Merged

fix(linux): reafirmar alwaysOnTop no blur (overlay caía pro fundo ao clicar fora)#28
aronpc merged 2 commits into
aronpc:mainfrom
gabrielscordeiro:fix/overlay-blur-always-on-top

Conversation

@gabrielscordeiro

@gabrielscordeiro gabrielscordeiro commented Jul 10, 2026

Copy link
Copy Markdown

Problema

No Mutter/XWayland, o estado _NET_WM_STATE_ABOVE do overlay oscila ao perder o foco: ao clicar em qualquer outra janela ou no desktop, o overlay caía para trás de tudo e só voltava via toggle (tray/atalho) ou revealIfHidden.

A causa raiz é que o always-on-top só era afirmado uma vez na criação da janela (main.js setAlwaysOnTop(true, 'screen-saver')). Os únicos pontos que reafirmavam o estado (toggleWin/revealIfHidden) só disparam em ações do próprio app — nunca no blur involuntário (clicar fora). O CHANGELOG da v0.6.7 já reconhece que o alwaysOnTop oscila em X11 e adicionou moveTop() no toggle/reveal, mas o caminho do blur ficou sem cobertura.

Correção

Adiciona um listener de blur que reafirma o estado, seguindo o mesmo padrão já usado no toggle/reveal:

win.on('blur', () => {
  try { win.setAlwaysOnTop(true, 'screen-saver'); } catch {}
  try { win.moveTop(); } catch {}
});

Mudança mínima (+8 linhas, sem remoção nem refactor).

Verificação

Testado com npm start (XWayland) no cenário do bug:

Passo Antes Depois
Estado inicial _NET_WM_STATE_ABOVE presente idem
Ativar outra janela (dispara blur) overlay cai pro fundo
Estado do overlay após o blur perde _NET_WM_STATE_ABOVE mantém _NET_WM_STATE_ABOVE, permanece no topo

Fluxos de toggle/tray/reveal seguem inalterados (já chamavam os mesmos dois métodos).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Correções
    • Corrigido o comportamento de janelas configuradas para permanecerem sempre no topo em ambientes Linux com Mutter/XWayland.
    • A janela agora recupera automaticamente sua posição de destaque ao perder o foco, evitando oscilações ao alternar entre janelas ou áreas de trabalho.

…clicar fora)

No Mutter/XWayland o estado _NET_WM_STATE_ABOVE oscila ao perder o foco:
clicar em outra janela ou no desktop derrubava o overlay para trás de tudo,
sem passar por toggleWin/revealIfHidden (únicos pontos que reafirmavam o
estado). Adiciona win.on('blur', ...) reafirmando setAlwaysOnTop +
moveTop — mesmo padrão já usado no toggle/reveal.

Verificado em npm start (XWayland): após ativar outra janela, o overlay
mantém _NET_WM_STATE_ABOVE e permanece no topo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@gabrielscordeiro, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 52 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6c2a2860-a2b0-486c-b101-b894491de90b

📥 Commits

Reviewing files that changed from the base of the PR and between 8cb888b and 6ef1e1d.

📒 Files selected for processing (1)
  • CHANGELOG.md

Walkthrough

A janela agora reage ao evento blur, reaplicando alwaysOnTop no nível screen-saver e chamando moveTop() para permanecer no topo, com erros tratados silenciosamente.

Changes

Comportamento da janela

Layer / File(s) Summary
Recuperação após perda de foco
main.js
Adiciona um handler blur ao BrowserWindow para reativar alwaysOnTop e reposicionar a janela no topo.

Estimated code review effort: 2 (Simples) | ~5 minutos

Poem

Sou coelho, salto no topo ligeiro,
A janela não perde seu paradeiro.
Se o foco escapar pelo ar,
blur a fará retornar.
Sempre no alto, sem tropeçar!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed O título descreve corretamente a correção no Linux ao reafirmar alwaysOnTop no blur.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Registra em Unreleased → Fixed a correção do overlay que caía para trás
ao clicar fora (reafirmação de alwaysOnTop no blur), complementando o
raise explícito da v0.6.7.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aronpc aronpc merged commit cf540cb into aronpc:main Jul 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants