Skip to content

Replace radio/checkbox PNG assets with pure CSS (Mint-Y) #549

Description

@sporteka2

Target: Mint-Y GTK3 radio buttons and checkboxes
Current: 16×16 PNG + 32×32 @2x PNG for each state (×5 states × 2 widget types ≈ 20+ PNG files)
Proposal: Replace PNG assets with pure CSS via appearance: none + border-radius + radial-gradient

Current assets

Each radio/checkbox has up to 5 state variants, each with 1× and 2× PNGs:

assets/radio-unchecked.png          (16×16)
assets/radio-unchecked@2.png        (32×32)
assets/radio-unchecked-dark.png
assets/radio-checked.png
assets/radio-checked-dark.png
assets/radio-unchecked-selected.png
assets/radio-checked-selected.png
assets/radio-indeterminate.png
... (same for checkboxes)

Proposed CSS approach (conceptual)

radio,
check {
  appearance: none;
  -gtk-icon-source: none;
  min-width: 16px;
  min-height: 16px;
  border-radius: 50%;
  border: 2px solid @borders;
  background: @theme_base_color;
  transition: border-color 200ms, background 200ms;
}

radio:checked {
  border-color: @theme_selected_bg_color;
  background: radial-gradient(
    circle at 50% 50%,
    @theme_base_color 1.5px,
    @theme_selected_bg_color 2.5px
  );
}

Benefits

  • ~20 fewer PNG files — smaller package size
  • HiDPI native — no separate @2x assets, renders crisp at any scale
  • Easier theming — colors come from CSS variables, no need to regenerate PNGs for each accent
  • Animations — smooth transition between states
  • Hover state — trivially added via CSS if desired
  • Focus ring:focus-visible outline can be styled directly

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