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
Kite (Default)
Suessig Kite
Oxygen
Klasse
Traditional
Metro
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
Variation of Kite with slightly different proportions and curved elements for a softer appearance.
Classic KDE Oxygen-style icons:
- Familiar to long-time KDE users
- Slightly more detailed than Kite
- Thinner line weight
Inspired by KDE 1 aesthetics:
- Retro appearance
- Sharp, defined shapes
- Nostalgic for classic KDE users
Simple, traditional window button icons with minimal styling.
Windows Metro-inspired minimalist icons:
- Very thin lines
- Geometric precision
- Modern, flat aesthetic
Fluent
Ark
Arkopal
Arkopal Left
Kisweet
System Icon Theme
Microsoft Fluent Design-inspired icons:
- Balanced line weight
- Rounded corners
- Contemporary appearance
Unique asymmetric style with artistic flair.
Variation of Ark with circular elements and gem-like shapes.
Left-aligned variant of Arkopal for different button layouts.
Sweet, friendly icons with playful curves.
Use icons from your system’s icon theme (e.g., window-close-symbolic, window-minimize-symbolic).
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>
Bold
Fine
HiDPI Only
Active (Window)
Active + HiDPI (Default)
All icons always rendered with bold/thick lines.
All icons always rendered with fine/thin lines.
Bold icons only on HiDPI displays for better visibility.
Bold icons only for active windows, fine for inactive.
Bold icons for active windows on HiDPI, fine otherwise. Provides best balance of clarity and subtlety.
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
Device pixel snapping
Icons are rendered to align with physical device pixels:QPointF snapToNearestPixel(
QPointF pointLocal,
const SnapPixel snapX,
const SnapPixel snapY
);
Antialiasing control
void translatePainterForAliasedPainting(const bool penWidthOdd);
Ensures sharp lines on any display scaling.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:
Open icon generator
Klassy Settings → System Icon Generation…
Configure inheritance
<entry name="KlassyIconThemeInherits" type="String">
<default>breeze</default>
</entry>
<entry name="KlassyDarkIconThemeInherits" type="String">
<default>breeze-dark</default>
</entry>
Generate icons
Click generate to create icon theme matching your selected button icon style.
Icon Behavior States
Control when icons are visible:
Normal State
Hover State
Press State
<entry name="ShowIconNormally" type="Bool">
<default>true</default>
</entry>
Show icons when buttons are not being interacted with.<entry name="ShowIconOnHover" type="Bool">
<default>true</default>
</entry>
Show icons when mouse hovers over button.<entry name="ShowIconOnPress" type="Bool">
<default>true</default>
</entry>
Show icons when button is being clicked.
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.
Standard icons use titlebar text color, close button uses red (negative) color.
All icons use the system accent color.
Standard icons use accent color, close button uses red.
MacOS-style:
- Close: Red
- Minimize: Orange/Yellow
- Maximize: Green
<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
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
Choose appropriate size
Larger icons (Large/VeryLarge) work well on high-resolution displays. Smaller icons (Small/Medium) suit compact interfaces.
Consider boldness
Use BoldIconsActiveHiDpi (default) for best balance. Adjust based on personal preference and display characteristics.
Match your aesthetic
- Modern/minimalist: Metro, Fluent, or Kite
- Classic: Oxygen or Traditional
- Playful: Kisweet or Arkopal
- Retro: Klasse
Test visibility
Ensure icons remain visible against your titlebar color at all sizes and states.