How to Install and Manage KDE Plasma Widgets on Fedora

Install and manage KDE Plasma widgets on Fedora using the dnf package manager and the desktop widget editor.

The missing widget problem

You just switched to Fedora Workstation with KDE Plasma. The desktop feels clean but bare. You want a system monitor on your panel, a weather forecast on the desktop, and a quick launch bar for your favorite apps. You right-click the desktop, open the widget menu, and see a fraction of what you expected. The rest are missing because they live in separate packages or third-party repositories. You try dragging something from a random website, but it fails to load or breaks your panel layout.

How Plasma actually loads widgets

KDE Plasma widgets are not monolithic add-ons. They are modular QML applications called plasmoids. Fedora ships a curated set of core widgets directly in the plasma-workspace package. Everything else is split into individual packages to keep the base system lean. When you install a widget package, the files land in /usr/share/plasma/plasmoids/. The Plasma shell scans that directory on startup and registers each widget in the internal catalog. If the package is missing, the catalog is empty for that widget.

You can also drop widgets into ~/.local/share/plasma/plasmoids/ for user-only installations. The system treats both paths the same way, but package manager updates only touch the system directory. This mirrors the standard Linux convention for configuration and data. System-wide files live under /usr/share/. User-specific overrides live under ~/.local/share/. Never edit the system directory manually. The package manager will overwrite your changes on the next dnf upgrade.

Each plasmoid directory contains a metadata.desktop file, a main.qml script, and optional JavaScript or C++ helper files. The metadata.desktop file tells Plasma the widget name, version, and required dependencies. The QML engine compiles main.qml at runtime. If a dependency is missing or the QML syntax is invalid, the widget silently fails to render or throws a console error.

Plasma caches the widget catalog to avoid rescanning the filesystem on every panel interaction. Clear the cache or restart the shell to pick up new installations. Run kreadconfig5 --file plasmashellrc --group General --key CacheTimeout 0 to disable caching during development, or simply restart the shell. Restart the shell before you debug. Half the time the symptom is gone.

Installing widgets with dnf

Fedora packages most popular widgets under the plasma5-widget- or plasma-widget- naming scheme. The exact name depends on the upstream version and packaging history. Search the repository first to find the correct package name.

Here is how to search for available widget packages and install one.

# Search the enabled repositories for packages containing "widget"
dnf search plasma widget | grep -i widget
# Filter the output to avoid noise from unrelated packages
# The search returns package names, summaries, and repository sources
# Pick the exact package name from the results
sudo dnf install plasma-systemmonitor
# Install the package and all required QML modules
# dnf resolves dependencies automatically
# The package drops files into /usr/share/plasma/plasmoids/

Some widgets require RPM Fusion because they depend on proprietary codecs or non-free firmware. Enable the repository before installing if the package is not found in the default Fedora repos.

# Enable the free RPM Fusion repository
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
# Add the non-free repository if the widget requires proprietary components
sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# Refresh the package cache after enabling new repositories
sudo dnf upgrade --refresh
# Pull in the latest metadata from all enabled repos
# This prevents stale package lists from blocking installations

The dnf upgrade --refresh command is the standard weekly maintenance step. It forces metadata retrieval and applies pending updates. Use it after enabling new repositories or when package searches return empty results. Trust the package manager. Manual file edits drift, snapshots stay.

Managing widgets through the interface

The graphical interface handles placement, configuration, and locking. Right-click any empty desktop area or panel space. Select Enter Edit Mode from the context menu. The interface highlights draggable boundaries and reveals the Add Widgets button.

Click Add Widgets. The catalog splits into two tabs. The Get New Widgets tab connects to the KDE Store and downloads community plasmoids directly into ~/.local/share/plasma/plasmoids/. The Installed tab lists everything available from system packages and user directories. Drag a widget to the desktop or panel. Resize it by dragging the corners. Configure it by clicking the gear icon that appears in edit mode.

Lock the layout when you are finished. Right-click the desktop or panel and select Lock Widgets. This prevents accidental drags and disables the edit mode overlay. Unlock it later by toggling the same option.

If the panel becomes unresponsive after adding a widget, restart the Plasma shell without logging out.

# Restart the Plasma shell to reload the widget catalog
kquitapp5 plasmashell && kstart5 plasmashell
# kquitapp5 sends a graceful shutdown signal to the running shell
# kstart5 launches a fresh instance and restores the session
# This clears stale QML caches and reloads new plasmoids

Use plasmashell --replace instead if you are running a custom desktop environment or a minimal setup. The --replace flag tells the new instance to take over the existing D-Bus session. Restart the shell before you debug. Half the time the symptom is gone.

Managing widgets from the terminal

Advanced users often prefer terminal management for scripting, backups, or headless deployments. The file system structure is straightforward. System widgets live in /usr/share/plasma/plasmoids/. User widgets live in ~/.local/share/plasma/plasmoids/. Each widget gets its own directory named after the plasmoid identifier.

List installed system widgets to verify what the package manager deployed.

# List all system-wide plasmoid directories
ls -1 /usr/share/plasma/plasmoids/
# Each directory corresponds to one widget package
# The names match the plasmoid identifiers used in metadata.desktop
# Use this list to cross-reference with dnf package names

Install a community widget manually when it is not packaged for Fedora. Download the .plasmoid archive, extract it, and move it to the user directory.

# Create the user plasmoid directory if it does not exist
mkdir -p ~/.local/share/plasma/plasmoids/
# Extract the downloaded plasmoid archive
unzip ~/Downloads/custom-weather.plasmoid -d ~/.local/share/plasma/plasmoids/
# The archive usually contains a single directory with the widget files
# Move the inner directory to the correct location if nested
mv ~/.local/share/plasma/plasmoids/custom-weather/* ~/.local/share/plasma/plasmoids/custom-weather-widget/
# Remove the empty parent directory left by the archive
rmdir ~/.local/share/plasma/plasmoids/custom-weather/

Verify the manual installation by checking the metadata file.

# Read the metadata to confirm the widget name and version
cat ~/.local/share/plasma/plasmoids/custom-weather-widget/metadata.desktop
# Look for the Name= and Version= keys
# Missing keys or malformed syntax will cause Plasma to ignore the widget
# Fix any syntax errors before restarting the shell

Run journalctl -xeu plasmashell after placement to catch QML runtime errors. The x flag adds explanatory text and the e flag jumps to the end. Most sysadmins type journalctl -xeu <unit> muscle-memory style. Read the actual error before guessing.

Verify the installation

Confirmation requires two steps. First, check that the widget appears in the Add Widgets catalog. Second, verify that the QML engine loads it without errors.

Open the widget catalog and search for the installed name. If it appears in the Installed tab, the catalog scan succeeded. Drag it to the desktop. If it renders correctly, the installation is complete.

If the widget fails to render, check the Plasma shell logs for QML compilation errors.

# View recent Plasma shell logs with explanatory context
journalctl -xeu plasmashell --since "10 minutes ago"
# Filter for QML or plasmoid-related errors
# Look for lines containing "Could not create object" or "ReferenceError"
# These indicate missing dependencies or syntax issues in main.qml

A missing dependency usually points to an uninstalled QML module. Install it with dnf install plasma-workspace-common or the specific qt6-qtquickcontrols2 package. Restart the shell after installing dependencies. Run journalctl first. Read the actual error before guessing.

Common pitfalls and error patterns

Widgets fail for three predictable reasons. Missing QML modules, broken metadata.desktop syntax, and version mismatches between Plasma 5 and Plasma 6.

The dnf install command will refuse to proceed and print Error: Transaction test error: package plasma5-widget-weather conflicts with plasma6-widget-weather. The conflict is intentional. Fedora separates Plasma 5 and Plasma 6 packages to prevent runtime crashes. Install the version that matches your desktop environment. Run plasmashell --version to check.

If you see [QML] Could not create object from file:///usr/share/plasma/plasmoids/system-monitor/main.qml during boot, your widget references a deprecated API. The QML engine stops parsing at the first syntax error. Check the upstream repository for a Plasma 6 compatible branch.

Manual installations often fail because the archive extracts to a nested directory. The plasmoid identifier must match the top-level directory name. Verify the structure with tree ~/.local/share/plasma/plasmoids/. Flatten the directory if needed.

SELinux denials show up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. Plasma widgets run in the unconfined_t domain by default, but custom scripts inside plasmoids may trigger denials. Restore contexts with restorecon -Rv ~/.local/share/plasma/plasmoids/ if you see access errors.

When to use each installation method

Use dnf install when you want automatic updates, dependency resolution, and system-wide availability. Use the KDE Store Get New Widgets tab when you need community plasmoids that are not packaged for Fedora. Use manual extraction to ~/.local/share/plasma/plasmoids/ when you are testing a developer branch or deploying a custom corporate widget. Use plasmashell --replace when you are running a minimal desktop and need to reload the shell without a full session restart. Stay on the official Fedora packages if you only deviate from the defaults occasionally.

Where to go next