A complete Windows 11-inspired visual transformation for KDE Plasma 6.
Windows Modern includes matching window decorations, widget styles, color schemes, Plasma desktop themes, global themes, an icon pack, custom applets, a panel layout template, and wallpapers — all available in dark and light variants.
Note: This theme is designed for KDE Plasma 6. It will not work on Plasma 5.
Icon taskbar — hovering an icon on the icons-only taskbar reveals a Win11-style thumbnail tooltip with a per-tile close button. Dark variant shown.
| Component | Path | Description |
|---|---|---|
| Aurorae window decorations | aurorae/ |
Dark and light title bars with Win11-style caption buttons. |
| Kvantum widget style | Kvantum/ |
Windows-modern — ships both light and dark variants; KDE switches between them via kvantum/kvantum-dark. |
| Plasma color schemes | color-schemes/ |
WindowsModernDark.colors, WindowsModernLight.colors. |
| Plasma desktop themes | plasma/desktoptheme/ |
Full SVG theme sets for panels, widgets, tooltips, dialogs, switches, and tasks. |
| Global themes | plasma/look-and-feel/ |
org.kde.windowsmodern.dark and org.kde.windowsmodern.light. |
| Panel layout template | plasma/layout-templates/ |
A Win11-style bottom panel layout you can add from the desktop context menu. |
| Custom applets | plasma/applets/ |
Show Desktop, Start Menu, Digital Clock, C++ System Tray, and C++ Icon Tasks (icons-only taskbar). |
| Session lock screen | plasma/shells/org.kde.windowsmodern.lockscreen/ |
Win11-style lock screen for Meta+L (kscreenlocker). Installed as a complete overlay of the default desktop shell. |
| Boot greeter | plasma/look-and-feel/.../contents/lockscreen/ + third_party/plasma-login-manager/ |
Patched Plasma Login Manager build that loads a Win11 login screen. Opt-in (system install needs root). |
| Icon pack | icons/windows-modern/ |
Curated Windows-11-style icon theme (~25,000 SVGs). |
| Wallpapers | wallpaper/ |
Dark and light variants. |
| App decorations | app-decorations/ |
Per-app CSD tweaks so non-KDE apps match the theme. Currently: Firefox userChrome.css window controls. |
- KDE Plasma 6
- Kvantum engine installed (
kvantumpackage on most distros) - For the System Tray applet: a C++ compiler and KDE/Plasma development packages (see System Tray below)
- For the Icon Tasks applet: a C++ compiler and a slightly different KDE/Plasma dev set (see Icon Tasks below)
- For the Digital Clock applet: no extra deps (pure QML).
- For the session lock screen: no extra deps (pure QML, installed as a shell overlay).
- For the boot greeter: a C++ compiler and the Plasma Login Manager build deps (Qt6 ShaderTools, LayerShellQt, libkscreen, PAM) — see
plasma/look-and-feel/org.kde.windowsmodern.dark/BUILD.md.
./install.shOpens a menu (default choice = Everything). Pick 1 and you'll be asked only one question: Light or Dark? Everything else — themes, icons, applets, layout, KWin borders, Application Style, wallpaper, panel layout reset — is applied automatically.
./install.sh all # asks Light/Dark if run in a terminal
./install.sh all --dark # no prompts, Dark
./install.sh all --light # no prompts, Lightall installs in three phases: atomic pieces (themes, icons,
applets, session lock) → compose (layout template, look-and-feel)
→ apply once (borders, global theme with layout reset, Kvantum
engine, single Plasma Shell restart).
allincludes the session lock screen (Meta+L). The boot greeter is opt-in (it replaces the system login manager) — use./install.sh greeter.
Each component installs and applies immediately — no extra steps needed (Plasma Shell restarts automatically where required).
./install.sh themes # Aurorae, colors, Kvantum, Plasma, wallpapers (+ applies)
./install.sh icons # Icon pack (+ activates)
./install.sh lookfeel # Global themes (asks Light/Dark, applies with layout reset)
./install.sh layout # Panel layout template
./install.sh showdesk # Show Desktop applet (+ restarts shell)
./install.sh startmenu # Start Menu applet (+ restarts shell)
./install.sh systray # System Tray (C++ — see below)
./install.sh icontasks # Icon Tasks taskbar (C++ — see below)
./install.sh digitalclock # Digital Clock (+ restarts shell)
./install.sh applets # All five applets (single restart)
./install.sh sessionlock # Session lock screen (Meta+L)
./install.sh greeter # Boot greeter (PLM build + system install)For all / menu Everything, the only manual step is:
- Enable floating for the authentic Win11 look: Right-click the panel → Show Panel Configuration → Floating → Applets Only. (Plasma's scripting API can't set this automatically.)
That's it — global theme, colors, icons, Application Style (Kvantum), wallpaper, and panel layout are all applied for you.
A thin 6-pixel sliver at the far right of the panel. Click it to minimize or restore all windows.
A Win11-style start menu with Pinned apps, All Apps, and Search pages.
- Install:
./install.sh startmenu - Add it to the panel and remove the default Plasma menu.
- Implementation plan:
docs/STARTMENU_PLAN.md
A pure-QML digital clock with a Windows 11 styled compact panel view and expanded calendar popup. It reuses the upstream Plasma clock and calendar backends but draws its own visuals: padded text in the panel, a dark rounded popup, a month calendar with the current day highlighted in blue, and optional event dots from KDE calendar plugins. It keeps all upstream settings (time format, date format, time zones, calendar plugins) while omitting pin-on-middle-click, calendar launch, clipboard copy, and wheel timezone switching.
- Install:
./install.sh digitalclock - The Windows Modern panel layout uses it automatically; it falls back to the upstream
org.kde.plasma.digitalclockif the custom applet is not installed.
A full C++ fork of the upstream Plasma system tray, themed to match Windows 11 and integrated with quick settings (network, Bluetooth, volume, brightness, battery, clipboard, notifications, devices, and media player).
Because it is a compiled Plasma Containment, it must be built during installation.
Fedora:
sudo dnf install gcc-c++ cmake extra-cmake-modules \
qt6-qtbase-devel qt6-qtdeclarative-devel \
kf6-kpackage-devel kf6-kconfig-devel kf6-ki18n-devel kf6-kcoreaddons-devel \
kf6-kwindowsystem-devel kf6-kio-devel kf6-kiconthemes-devel \
kf6-kitemmodels-devel kf6-kservice-devel kf6-kxmlgui-devel \
kf6-kjobwidgets-devel kf6-kcmutils-devel \
libplasma-devel plasma-workspace-devel plasma-workspace-libsArch Linux:
sudo pacman -S cmake extra-cmake-modules qt6-base qt6-declarative \
kpackage kconfig ki18n kwindowsystem kio kiconthemes \
kitemmodels kservice kxmlgui kjobwidgets kcmutils \
plasma-framework plasma-workspace dbusmenu-qt6Debian/Ubuntu:
sudo apt install cmake extra-cmake-modules \
qt6-base-dev qt6-declarative-dev \
libkf6package-dev libkf6config-dev libkf6i18n-dev \
libkf6windowsystem-dev libkf6kio-dev libkf6iconthemes-dev \
libkf6itemmodels-dev libkf6service-dev libkf6xmlgui-dev \
libkf6jobwidgets-dev libkf6kcmutils-dev \
libplasma-dev plasma-workspace-dev \
libdbusmenu-qt6-dev./install.sh systrayFor development, use the applet's own script:
cd plasma/applets/org.kde.windowsmodern.systemtray
./dev.shDetailed build instructions: plasma/applets/org.kde.windowsmodern.systemtray/BUILD.md
A C++ fork of the upstream icons-only task manager (org.kde.plasma.taskmanager from plasma-desktop), rebranded as org.kde.windowsmodern.icontasks and restyled with Windows 11 tooltip visuals. The C++ backend is preserved unchanged (jump lists, places, recent docs, app categories, smart launcher badges, audio stream matching); only the QML UI is restyled. This is the taskbar used by the Windows Modern panel layout template.
Win11 refinements over upstream:
- Always icons-only —
iconsOnlyis hardcoded totrue. - Hidden subtext in thumbnail mode — desktop/activity info ("On Desktop 2") is hidden when a window thumbnail is visible, since it's noise next to a live preview.
- Subtle per-tile close button — a minimal X pinned to the far right of the tooltip header. Background is transparent by default and turns Win11 red
#C42B1Con hover; pressed is#9E1B1B. - Fixed-width, rounded thumbnail tiles — PipeWire thumbnails are clipped to 8px rounded corners, tiles render at a fixed width, and inter-tile spacing matches the tooltip SVG margin for even gaps.
Because it is a compiled Plasma applet, it must be built during installation. The QML UI is embedded in the .so; a separate KPackage must not be installed — it causes rendering bugs.
The Icon Tasks dependency set differs slightly from the System Tray (it adds plasma-activities, libksysguard, and knotifications).
Fedora:
sudo dnf install gcc-c++ cmake extra-cmake-modules \
qt6-qtbase-devel qt6-qtdeclarative-devel \
kf6-kpackage-devel kf6-kconfig-devel kf6-ki18n-devel kf6-kcoreaddons-devel \
kf6-kwindowsystem-devel kf6-kio-devel kf6-kservice-devel kf6-kxmlgui-devel \
kf6-knotifications-devel \
plasma-activities-devel plasma-activities-stats-devel \
libplasma-devel plasma-workspace-devel \
libksysguard-develArch Linux:
sudo pacman -S cmake extra-cmake-modules qt6-base qt6-declarative \
kpackage kconfig ki18n kwindowsystem kio kservice kxmlgui knotifications \
plasma-activities plasma-activities-stats \
plasma-framework plasma-workspace \
libksysguardDebian/Ubuntu:
sudo apt install cmake extra-cmake-modules \
qt6-base-dev qt6-declarative-dev \
libkf6package-dev libkf6config-dev libkf6i18n-dev \
libkf6windowsystem-dev libkf6kio-dev libkf6service-dev libkf6xmlgui-dev \
libkf6notifications-dev \
libplasma-dev plasma-workspace-dev \
plasma-activities-dev plasma-activities-stats-dev \
libksysguard-dev./install.sh icontasksFor development, use the applet's own script:
cd plasma/applets/org.kde.windowsmodern.icontasks
./dev.shDetailed build instructions: plasma/applets/org.kde.windowsmodern.icontasks/BUILD.md
Two separate components cover the two places a Windows-style lock/login look
applies. Both reuse the Win11 dark palette (clock, power menu, password
field) documented in docs/STYLE.md.
A Win11-style lock screen for kscreenlocker. kscreenlocker loads the lock
screen from the current desktop shell (org.kde.plasma.desktop), so the
installer creates a complete user-level overlay of that shell — symlinking
every system directory except lockscreen, which is replaced with the
Windows Modern QML. The shell is always kept complete (an incomplete shell
triggers the Qt widget fallback).
./install.sh sessionlock # install
/usr/libexec/kscreenlocker_greet --testing # test without locking
./uninstall.sh sessionlock # restore BreezeSource: plasma/shells/org.kde.windowsmodern.lockscreen/.
A patched build of plasma-login-manager
(vendored as a git submodule at third_party/plasma-login-manager/) that
loads a Win11 login screen (Main.qml) from the dark look-and-feel's
contents/lockscreen/. A single patch
(patches/main-cpp.patch) redirects the greeter to our Main.qml.
Because this replaces the system login manager, it is opt-in and not
included in install.sh all.
# 1. Build the patched greeter + install theme for --test mode (user):
./install.sh greeter
third_party/plasma-login-manager/build-user/bin/plasma-login-greeter --test
# 2. Install as your actual boot greeter (needs root, typed confirmation):
sudo bash scripts/install-greeter-live.sh
# Update the PLM submodule to a new upstream version:
./scripts/update-plm.sh Plasma/6.7Keep a TTY (Ctrl+Alt+F3) open before the live install. Revert:
sudo bash scripts/uninstall-greeter-system.sh # restore distro greeter
./uninstall.sh greeter # remove user theme + revert patchesBuild dependencies differ slightly from the applets (PLM adds Qt6 ShaderTools,
LayerShellQt, libkscreen, and PAM). Full per-distro lists:
plasma/look-and-feel/org.kde.windowsmodern.dark/BUILD.md.
Optional per-app stylesheets that make non-KDE apps blend in with the Windows Modern title bar. These are not applied by the installer — copy them into the app's config manually.
Replaces Firefox's CSD window buttons (minimize / maximize / restore / close) with flat white MDL2 SVGs and the Windows close-hover color (#c42b1c). Button size matches Aurorae metrics (46×30).
- Copy
app-decorations/firefox/userChrome.cssinto your Firefox profile'schrome/folder. - In
about:config, settoolkit.legacyUserProfileCustomizations.stylesheetstotrue, then fully restart Firefox.
Full instructions: app-decorations/firefox/README.md
./uninstall.sh all # Remove everything
./uninstall.sh themes # Remove theme components only
./uninstall.sh icons # Remove icon pack
./uninstall.sh systray # Remove system tray plugin
./uninstall.sh digitalclock # Remove Digital Clock applet
./uninstall.sh sessionlock # Restore Breeze lock screen (Meta+L)
./uninstall.sh greeter # Remove user greeter theme + revert patches
./uninstall.sh greetersystem # Restore system greeter binary (needs sudo)Run a project health check:
./verify-all.shThe icons/windows-modern/ directory contains thousands of SVGs. To keep git status fast, those files are marked with --skip-worktree and icons/** is treated as binary in .gitattributes.
Never stage icon changes manually. Use the helper script:
COMMIT_MSG="feat(icons): describe your change" ./scripts/commit-icons.shThe script temporarily re-enables tracking, stages the icon pack, commits with your message, then re-applies --skip-worktree.
See plasma/applets/org.kde.windowsmodern.systemtray/BUILD.md for the full manual build steps and distribution notes.
./scripts/capture-screenshots.shWalks you through each desktop state (dark/light overview, start menu, system tray, window decorations) and captures optimized PNGs.
| Document | Description |
|---|---|
docs/STYLE.md |
Complete visual style specification: palette, desktop theme, panel layout, applet specs, and repository structure. |
docs/STARTMENU_PLAN.md |
Implementation plan for the Start Menu applet. |
docs/SYSTEMTRAY_ARCHITECTURE.md |
Architecture and history of the custom system tray. |
docs/SYSTEMTRAY_DECISION.md |
Architecture decision record for the C++ fork approach. |
docs/PLASMA_SYSTEMTRAY_ARCHITECTURE.md |
Reverse-engineered upstream Plasma system tray internals. |
docs/RELEASE.md |
How to publish a release to GitHub and the KDE Store. |
plasma/applets/org.kde.windowsmodern.systemtray/BUILD.md |
System Tray build and install instructions. |
plasma/applets/org.kde.windowsmodern.icontasks/BUILD.md |
Icon Tasks build and install instructions. |
docs/icon-pack/README.md |
Icon theme consolidation pipeline overview. |
This happens when the System Tray is installed as a KPackage instead of a compiled .so plugin. The install scripts remove conflicting KPackages automatically. If you see this:
./install.sh systray
systemctl --user restart plasma-plasmashell.serviceA stale local copy in ~/.local/lib64/qt6/plugins/plasma/applets/ or ~/.local/lib/qt6/plugins/plasma/applets/ can shadow the system plugin. The install scripts remove these automatically; otherwise delete them manually and restart Plasma.
Same root causes as the System Tray: a conflicting KPackage was installed instead of the compiled .so, or a stale local .so (org.kde.windowsmodern.icontasks.so) is shadowing the system plugin. Re-run the installer, which prunes both:
./install.sh icontasks
systemctl --user restart plasma-plasmashell.serviceThe installer sets KWin borders to Tiny. If you changed it manually, re-run:
kwriteconfig6 --file kwinrc --group "org.kde.kdecoration2" --key "BorderSize" "Tiny"
kwriteconfig6 --file kwinrc --group "org.kde.kdecoration2" --key "BorderSizeAuto" "false"
dbus-send --session --dest=org.kde.KWin /KWin org.kde.KWin.reconfiguresystemctl --user restart plasma-plasmashell.service- yeyushengfan258 — original Win11OS-kde theme.
- Jeysef — Windows Modern fork, window decoration, popups, integration, and custom applets.
- Zren / Chris Holland — upstream Show Desktop applet (
win7showdesktop). - mjkim0727 — Eleven icon pack (Windows 11 style icons).
- vinceliuice — Fluent icon pack.
- Eisteed — Menu11 - Next start menu plasmoid (forked from adhec/OnzeMenuKDE), used as a reference for the Windows Modern Start Menu.
- Additional icon pack sources are credited in
ATTRIBUTION.md.
GNU GPL v3 — see LICENSE.











