Skip to content

Desktop light/dark theme ignored on Linux — app always renders dark #1

Description

@anderix

Summary

On Linux, Tommy Flyleaf always renders in the dark theme, ignoring the desktop's light/dark (color-scheme) setting. Choosing Light in GNOME still gives the dark UI.

Cause

winit returns None from system_theme() on Linux unconditionally (winit-0.30.x, src/platform_impl/linux/mod.rs); egui-winit passes that through and egui falls back to Theme::Dark. No desktop setting reaches the app.

This is the same defect the rest of the fleet already fixes: slipcase-desktop (its origin), segler-desktop and duckling each carry a system_theme module that reads the XDG desktop portal's color-scheme — treating 0/default as light, per GNOME's spelling — and applies it at startup. Flyleaf is the one desktop app without it.

Impact

  • Linux users who choose Light get the dark UI.
  • It blocks a light screenshot on Linux. The excelano.com hero rotation theme-swaps each GUI app's screenshot to match the viewer's theme; Flyleaf can only ship a dark shot because a light one can't be captured on Linux, while Segler, Duckling and Slipcase can.

Suggested fix

Port src/system_theme.rs from slipcase-desktop (or segler-desktop) into the flyleaf app crate and call it after the eframe context is created, the way the others do (system_theme::follow(&cc.egui_ctx)). It is Linux-only and no-ops elsewhere, since winit answers system_theme() on macOS and Windows.

Measured

2026-09-08, GNOME 48: with color-scheme set to default / prefer-light, Flyleaf drew dark; Segler, Duckling and Slipcase drew light under the identical setting.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions