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
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-gradientCurrent assets
Each radio/checkbox has up to 5 state variants, each with 1× and 2× PNGs:
Proposed CSS approach (conceptual)
Benefits
transitionbetween states:focus-visibleoutline can be styled directly