Skip to content

fix(gui-x): stop empty/grey block on Ubuntu/GNOME; safer geometry#42

Merged
roman-ryzenadvanced merged 1 commit into
mainfrom
fix/gui-x-ubuntu-grey-block
Jun 2, 2026
Merged

fix(gui-x): stop empty/grey block on Ubuntu/GNOME; safer geometry#42
roman-ryzenadvanced merged 1 commit into
mainfrom
fix/gui-x-ubuntu-grey-block

Conversation

@roman-ryzenadvanced

Copy link
Copy Markdown
Owner

Problem

The X Edition Warp-style Linux GUI was opening as an empty grey block on Ubuntu/GNOME.

Root cause

  1. root.overrideredirect(True) made the WM treat the window as a special undecorated type whose content is not painted until the user interacts with it.
  2. root.state("zoomed") in __init__.py was applied to an already-maximizing window with conflicting geometry, leaving the content area blank.
  3. No update_idletasks() / deiconify() after geometry changes, so the WM never flushed the new size to the X server.

Fix

  • src/gui_x/__init__.py — drop state("zoomed"); add update_idletasks() + deiconify() so the window is visible immediately.
  • src/gui_x/launcher.py — disable the overrideredirect branch on Linux; fall back to native window decorations (more reliable on every DE).
  • src/gui_x/titlebar.py — keep the Python 3.14 winfo_children() try/except patch.

Test

Full widget tree visible at 1400x900 with Catppuccin Mocha background; sidebar (48px) + content (1352px) both render.

Tk(bg=#0C0E16, geom=1400x900+1604+1064, vis=1)
  Frame(bg=#0C0E16, geom=1400x900+0+0, vis=1)
    Frame(bg=#0C0E16, geom=1400x900+0+0, vis=1)
      Sidebar(bg=#161928, geom=48x900+0+0, vis=1)
      Frame(bg=#0C0E16, geom=1352x900+48+0, vis=1)

Notes

  • Untracked files (auto_patch_trae_solo.py, discord_controller.py, trae-solo-local/, install_patched*.sh, install_trae_solo.sh, run_and_install_trae_solo.sh) are deliberately NOT included in this PR — they're from an unrelated work session.

The X Edition Warp-style Linux GUI was opening as an empty grey block
on Ubuntu/GNOME because:

  1. root.overrideredirect(True) made the WM treat the window as a
     special undecorated type whose content is not painted until the
     user interacts with it.
  2. root.state("zoomed") in __init__.py was applied to an
     already-maximizing window with conflicting geometry, leaving the
     content area blank.
  3. No update_idletasks() / deiconify() after geometry changes, so
     the WM never flushed the new size to the X server.

Fixes:
  * src/gui_x/__init__.py   — drop state("zoomed"); add
                                update_idletasks() + deiconify() so the
                                window is visible immediately.
  * src/gui_x/launcher.py   — disable the overrideredirect branch on
                                Linux; fall back to native window
                                decorations (more reliable on every DE).
  * src/gui_x/titlebar.py   — keep the Python 3.14 winfo_children()
                                try/except patch.

Tested: full widget tree visible at 1400x900 with Catppuccin Mocha
background; sidebar (48px) + content (1352px) both render.
@roman-ryzenadvanced
roman-ryzenadvanced merged commit cbb766b into main Jun 2, 2026
5 checks 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.

1 participant