Skip to content

uwuclxdy/plasmoid-updater

Repository files navigation

plasmoid-updater

Updates KDE Plasma 6 components from KDE Store using a combination of Apdatifier's and KDE Discover's logic.

Important

The core logic (a combination of Apdatifier and KDE Discover) was ported to Rust with AI assistance (Claude Code and GH Copilot). The code was audited and tested by me. Feel free to contribute with an issue or PR.

Requirements

  • bsdtar, kpackagetool6
  • Rust

Installation

Using Cargo (Recommended)

cargo install plasmoid-updater

From source using Cargo:

git clone https://github.com/uwuclxdy/plasmoid-updater
cd plasmoid-updater
cargo install --path plasmoid-updater/

Binary release

Precompiled binary available on GitHub Releases.

Usage

$ plasmoid-updater --help
update kde plasma components from the kde store

Usage: plasmoid-updater [OPTIONS] [COMMAND]

Commands:
  check           check for available updates
  list-installed  list all installed components
  update          update components

Options:
      --system                 operate on system-wide components (needs sudo)
      --edit-config            open configuration file in editor
      --skip-plasma-detection  skip KDE Plasma detection
  -h, --help                   Print help
  -V, --version                Print version
$ plasmoid-updater update --help
update components

Usage: plasmoid-updater update [OPTIONS] [COMPONENT]

Arguments:
  [COMPONENT]  component name or directory to update

Options:
      --restart-plasma         automatically restart plasmashell
      --no-restart-plasma      do not restart plasmashell
  -y, --yes                    automatically confirm all updates
      --ignore <NAMES>         names to skip for this run (comma-separated or repeatable)
      --system                 operate on system-wide components (needs sudo)
      --skip-plasma-detection  skip KDE Plasma detection
  -h, --help                   Print help

--ignore works on both check and update and skips the named components for that run only, on top of the config exclusions. Example: plasmoid-updater update --ignore weather,clock.

Configuration

Settings live in a TOML file at $XDG_CONFIG_HOME/plasmoid-updater.toml (usually ~/.config/plasmoid-updater.toml). Open it with plasmoid-updater --edit-config. Set PLASMOID_UPDATER_CONFIG_DIR to point at a different directory (tests, sandboxes, multiple profiles).

# exact name or directory match
excluded_packages = ["widget-name", "another.widget"]
# regex, matched against both the name and directory of each component
excluded_patterns = ["^org\\.kde\\.", "weather"]
update_all_by_default = false
assume_yes = false        # confirm all updates without prompting
prompt_restart = true     # ask before restarting plasmashell

Excluded components are skipped during updates and hidden from check. Invalid regex patterns are dropped with a warning instead of aborting the run.

Topgrade integreation (Preview)

Topgrade is a CLI tool that updates everything with a single command.

As this is meant to be a part of Topgrade at some point, I thought it's worth showing how to add it as a custom step until it's not officially supported.

Run topgrade --edit-config and add the following under [commands]:

[commands]
"Plasmoids" = "plasmoid-updater update -y"
"Plasmoids System" = "plasmoid-updater update -y --system"

Supported (Updatable) Components

Component Type KDE Store Category
Plasma Widgets (Plasmoids) 705
Wallpaper Plugins 715
KWin Effects 719
KWin Scripts 720
Global Themes 722
Plasma Styles 709
Aurorae Window Decorations 114
Color Schemes 112
Splash Screens 708
SDDM Themes 101

License

Licensed under GPL-3.0-or-later.

Acknowledgments & Credits

This project was made possible by studying and learning from:

Author: exequtic License: MIT License

Apdatifier is a KDE Plasma widget that monitors for updates to Arch Linux packages, Flatpak applications, and Plasma widgets. The widget update logic, version comparison algorithms, ID resolution fallback chain, and the widgets-id mapping table in this project are derived from Apdatifier's implementation.

Concepts taken from Apdatifier:

  • 3-tier ID resolution strategy (name matching → KNewStuff registry → static lookup table)
  • Version normalization and comparison algorithm
  • Download link selection logic for multi-file packages
  • Metadata patching approach for installation

License: GPL-2.0-only, GPL-3.0-only, LicenseRef-KDE-Accepted-GPL

KDE Discover is the official software center for KDE Plasma. The understanding of KNewStuff registry file formats, kpackagetool6 usage patterns, and OCS API interaction in this project is based on studying Discover's source code.

Concepts taken from KDE Discover:

  • KNewStuff registry structure (.knsregistry files)
  • Installation flow via kpackagetool6
  • OCS API v1.6 response format and status codes

Open Collaboration Services (OCS) API

The OCS specification defines the REST API used by the KDE Store (store.kde.org / api.kde-look.org).


This project is not affiliated with or endorsed by KDE e.V.

About

Blazingly fast KDE Plasmoid updater

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages