* fix(dbus): implement candidate scoring for settings menu items and optimize trigger IPC (#26) (#31) * fix(dbus): replace keyword blacklist with candidate scoring and optimize trigger IPC * fix(security): sanitize appName argument and add helper exception logging - Use POSIX single-quote escaping for appName passed to dbus_menu_helper.py - Log unhandled DBus exceptions to stderr for easier debugging * feat(appearance): add vertical offset control and system font size matching (#29) (#32) - Add verticalOffset setting to allow fine-tuning window title vertical alignment - Add useSystemFontSize setting to inherit Plasma system font size - Set frame SVG prefix to normal when resting to mirror Global Menu margin geometry - Ensure CItem fills height/width in GridLayout - Connect verticalOffset and font scaling to MockWidget live preview * feat(appearance): add option to hide inactive window text on single activity (#30) (#33) * feat(appearance): add monochrome icon option under appearance settings (#24) (#34) * chore: bump version to v1.02.0 and update links & docs - Bump version to v1.02.0 in metadata.json - Add Ko-fi link to Donors in metadata.json and support badge in README.md - Update README.md with new features and correct plasmoid install paths
Active Window Menu
A Mac-like window title and context menu applet built natively for KDE Plasma 6.
Features
- Mac-Style App Menu: Left-click the active window's title in the panel to open a native context menu with window management actions (Minimize, Maximize, Close, Keep Above, etc.).
- Smart App Menu Heuristics: Dynamically traverses D-Bus AppMenu trees with candidate scoring to expose application-specific "Preferences/Settings" and "About" actions directly in the menu.
- Native Plasma 6 Architecture: Built on
PlasmaExtras.Menuto ensure robust Wayland support, focus management, and flawless C++ backend integration. - Pixel-Perfect Aesthetic & Alignment: Mathematically centered layouts, 2px tight vertical panel margins, fine-grained vertical text offset, and system font size matching.
- Monochrome & Inactive Display Options: Toggle monochrome symbolic icons to match panel styling, and optionally hide inactive window text on single-activity setups.
- Dynamic Substitutions: Highly customizable text display using variables like
%a(App Name) and%w(Window Title).
Credits & Acknowledgments
This project was heavily refactored and expanded from the fantastic foundational work of:
- Dhruvesh Surolia (who ported the original concept to Plasma 6)
- Psifidotos (creator of the original Active Window Control applet)
Substitutions
- %a : Application Name
- %w : Window Title
- %q : Activity Name
<b>..</b>: Selective bold<i>..</i>: Selective Italics<br>/<p>: New line (Text will not be elided with multi-line text)
Images
Hover states across different Plasma themes
Context menu with window management actions
Applet Settings (Appearance, Behavior, Substitutions, Keyboard Shortcuts)
Installation
Via KDE Store (Recommended)
You can easily install this directly through your Plasma Desktop:
- Right-click your panel and select Add Widgets...
- Click Get New Widgets...
- Search for Active Window Menu and hit install!
Alternatively, if you are viewing this on a system with KDE Discover installed, you can use an AppStream link (if you have your store ID): Install via Discover or View on KDE Store
Manual Installation
If you've cloned this repository, you can easily install and test it using the provided script:
./install.sh
Note: This script copies the contents to ~/.local/share/plasma/plasmoids/com.ajxcodes.active-window-menu and automatically restarts the Plasma shell.
Alternatively, you can build and install it using Plasma's native package tool:
kpackagetool6 -t Plasma/Applet -i ./

