Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/paulmcauley/klassy/llms.txt

Use this file to discover all available pages before exploring further.

Klassy provides numerous perfectly pixel-snapped button icon styles, along with the ability to use system icon themes. All button icons support full customization of size, boldness, colors, and behavior.

Available Icon Styles

Klassy includes 12 built-in button icon styles:
<!-- From breezesettingsdata.kcfg -->
<entry name="ButtonIconStyle" type="Enum">
  <choices>
      <choice name="StyleSystemIconTheme" />
      <choice name="StyleKite" />
      <choice name="StyleSuessigKite" />
      <choice name="StyleOxygen" />
      <choice name="StyleKlasse" />
      <choice name="StyleTraditional" />
      <choice name="StyleMetro" />
      <choice name="StyleFluent" />
      <choice name="StyleArk" />
      <choice name="StyleArkopal" />
      <choice name="StyleArkopalLeft" />
      <choice name="StyleKisweet" />
  </choices>
  <default>StyleKite</default>
</entry>

Style Descriptions

Modern, clean icons inspired by the Breeze Blue Ocean refresh. Features:
  • Rounded, friendly shapes
  • Medium line weight
  • Perfect for everyday use
  • Designed by Paul A McAuley
Microsoft Fluent Design-inspired icons:
  • Balanced line weight
  • Rounded corners
  • Contemporary appearance

Icon Sizes

Klassy provides 10 predefined icon sizes:
<entry name="IconSize" type="Enum">
  <choices>
      <choice name="IconTiny" />
      <choice name="IconVerySmall" />
      <choice name="IconSmall" />
      <choice name="IconSmallMedium" />
      <choice name="IconMedium" />
      <choice name="IconLargeMedium" />
      <choice name="IconLarge" />
      <choice name="IconVeryLarge" />
      <choice name="IconGiant" />
      <choice name="IconHumongous" />
      </choices>
  <default>IconLargeMedium</default>
</entry>
Icon sizes automatically scale with HiDPI displays for crisp rendering at any resolution.

System Icon Theme Sizes

When using system icon theme, specify exact pixel size:
<entry name="SystemIconSize" type="Enum">
  <choices>
      <choice name="SystemIcon8" />
      <choice name="SystemIcon12" />
      <choice name="SystemIcon14" />
      <choice name="SystemIcon16" />
      <choice name="SystemIcon18" />
      <choice name="SystemIcon20" />
      <choice name="SystemIcon22" />
      <choice name="SystemIcon24" />
      <choice name="SystemIcon32" />
      <choice name="SystemIcon48" />
  </choices>
  <default>SystemIcon16</default>
</entry>

Bold Icons

Control icon boldness for improved visibility:
<entry name="BoldButtonIcons" type="Enum">
  <choices>
      <choice name="BoldIconsBold" />
      <choice name="BoldIconsFine" />
      <choice name="BoldIconsHiDpiOnly" />
      <choice name="BoldIconsActive" />
      <choice name="BoldIconsActiveHiDpi" />
  </choices>
  <default>BoldIconsActiveHiDpi</default>
</entry>
All icons always rendered with bold/thick lines.

Icon Rendering

Klassy uses a sophisticated rendering system for pixel-perfect icons:

Rendering Factory

// From renderdecorationbuttonicon.h
static std::pair<std::unique_ptr<RenderDecorationButtonIcon>, int> factory(
    const QSharedPointer<InternalSettings> internalSettings,
    QPainter *painter,
    const bool fromKstyle = false,
    const bool boldButtonIcons = false,
    const qreal devicePixelRatio = 1,
    const QPointF &deviceOffsetFromZeroReference = QPointF(0, 0),
    const bool forceEvenSquares = false
);

Pixel-Perfect Alignment

1

Device pixel snapping

Icons are rendered to align with physical device pixels:
QPointF snapToNearestPixel(
    QPointF pointLocal,
    const SnapPixel snapX,
    const SnapPixel snapY
);
2

Antialiasing control

void translatePainterForAliasedPainting(const bool penWidthOdd);
Ensures sharp lines on any display scaling.
3

HiDPI optimization

qreal convertDevicePixelsToLocal(const qreal devicePixels);
qreal convertLocalPixelsToDevice(const qreal localPixels);
Klassy’s rendering engine ensures icons remain crisp at any size, scaling factor, or display resolution.

System Icon Theme Integration

When using StyleSystemIconTheme, Klassy loads icons from your system theme:

Icon Names

Klassy looks for these icon names:
  • window-close-symbolic
  • window-minimize-symbolic
  • window-maximize-symbolic
  • window-restore-symbolic
  • window-keep-above-symbolic
  • window-keep-below-symbolic
  • window-pin-symbolic
  • window-shade-symbolic
  • application-menu-symbolic

Force Colorize

<entry name="ForceColorizeSystemIcons" type="Bool">
    <default>true</default>
</entry>
When enabled, system icons are automatically recolored to match your button color scheme.

System Icon Generation

Klassy can generate system icon themes for GTK consistency:
1

Open icon generator

Klassy Settings → System Icon Generation…
2

Configure inheritance

<entry name="KlassyIconThemeInherits" type="String">
    <default>breeze</default>
</entry>

<entry name="KlassyDarkIconThemeInherits" type="String">
    <default>breeze-dark</default>
</entry>
3

Generate icons

Click generate to create icon theme matching your selected button icon style.

Icon Behavior States

Control when icons are visible:
<entry name="ShowIconNormally" type="Bool">
    <default>true</default>
</entry>
Show icons when buttons are not being interacted with.
Disabling icon display in all states makes buttons invisible (only background/outline will show if configured).

Icon Colors

Icons can use various color schemes:
<entry name="ButtonIconColors" type="Enum">
    <choices>
        <choice name="TitleBarText" />
        <choice name="TitleBarTextNegativeClose" />
        <choice name="Accent" />
        <choice name="AccentNegativeClose" />
        <choice name="AccentTrafficLights" />
    </choices>
    <default>TitleBarText</default>
</entry>
Icons match the titlebar text color from your color scheme.

Close Button Icon Variants

<entry name="CloseButtonIconColor" type="Enum">
    <choices>
        <choice name="AsSelected" />
        <choice name="NegativeWhenHoverPress" />
        <choice name="White" />
        <choice name="WhiteWhenHoverPress" />
    </choices>
    <default>WhiteWhenHoverPress</default>
</entry>
The default WhiteWhenHoverPress provides excellent contrast when the close button has a red background on hover/press.

Icon Opacity

<entry name="ButtonIconOpacity" type="Int">
    <default>100</default>
    <min>0</min>
    <max>100</max>
</entry>
Control transparency of button icons (0-100%).
Separate opacity settings are available for active and inactive windows.

Advanced Configuration

Per-Button Color Override

You can override colors for specific buttons:
<entry name="ButtonOverrideColorsActive" type="String">
    <parameter name="ButtonOverrideColorsActiveButtonType" type="Enum">
        <values>
            <value>Menu</value>
            <value>ApplicationMenu</value>
            <value>OnAllDesktops</value>
            <value>Minimize</value>
            <value>Maximize</value>
            <value>Close</value>
            <value>ContextHelp</value>
            <value>Shade</value>
            <value>KeepBelow</value>
            <value>KeepAbove</value>
        </values>
    </parameter>
</entry>
Override format (JSON):
{
  "IconNormal": ["TitleBarText"],
  "IconHover": ["Accent", 80],
  "IconPress": [255, 0, 0, 100]
}

Contrast Correction

<entry name="OnPoorIconContrast" type="Enum">
    <choices>
        <choice name="Nothing" />
        <choice name="BlackWhite" />
        <choice name="TitleBarBackground" />
</choices>
    <default>TitleBarBackground</default>
</entry>

<entry name="PoorIconContrastThreshold" type="Double">
    <min>1.0</min>
    <max>21.0</max>
    <default>1.5</default>
</entry>
Automatically adjusts icon colors when contrast ratio is below threshold.

Best Practices

1

Choose appropriate size

Larger icons (Large/VeryLarge) work well on high-resolution displays. Smaller icons (Small/Medium) suit compact interfaces.
2

Consider boldness

Use BoldIconsActiveHiDpi (default) for best balance. Adjust based on personal preference and display characteristics.
3

Match your aesthetic

  • Modern/minimalist: Metro, Fluent, or Kite
  • Classic: Oxygen or Traditional
  • Playful: Kisweet or Arkopal
  • Retro: Klasse
4

Test visibility

Ensure icons remain visible against your titlebar color at all sizes and states.

Build docs developers (and LLMs) love