Skip to main content

Config

Struct Config 

Source
pub struct Config {
    pub system: bool,
    pub excluded_packages: Vec<String>,
    pub widgets_id_table: HashMap<String, u64>,
    pub restart: RestartBehavior,
    pub auto_confirm: bool,
    pub threads: Option<usize>,
}
Expand description

Configuration for libplasmoid-updater operations.

This struct contains all configuration options used by the library. Library consumers (like topgrade or other automation tools) can construct this directly without needing config file parsing.

§Examples

§Basic Configuration

use libplasmoid_updater::Config;

let config = Config::new();

§With Custom Settings

use libplasmoid_updater::{Config, RestartBehavior};
use std::collections::HashMap;

let mut widgets_table = HashMap::new();
widgets_table.insert("com.example.widget".to_string(), 123456);

let config = Config::new()
    .with_excluded_packages(vec!["problematic-widget".to_string()])
    .with_widgets_id_table(widgets_table)
    .with_restart(RestartBehavior::Always);

Fields§

§system: bool

If true, operate on system-wide components (in /usr/share). If false (default), operate on user components (in ~/.local/share). System operations require root privileges.

§excluded_packages: Vec<String>

Packages to exclude from updates.

Can match either directory names (e.g., “org.kde.plasma.systemmonitor”) or display names (e.g., “System Monitor”). Components in this list will be skipped during update operations.

§widgets_id_table: HashMap<String, u64>

Widget ID fallback table mapping directory names to KDE Store content IDs.

This table is used as a fallback when content ID resolution via KNewStuff registry or exact name matching fails. The library uses a three-tier resolution strategy:

  1. KNewStuff registry lookup (most reliable)
  2. Exact name match from KDE Store API
  3. Fallback to this widgets_id_table

§Format

  • Key: Component directory name (e.g., “org.kde.plasma.systemmonitor”)
  • Value: KDE Store content ID (numeric)

The CLI application loads this from a widgets-id file, but library consumers can provide it programmatically or leave it empty.

§restart: RestartBehavior

Controls plasmashell restart behavior after successful updates.

§auto_confirm: bool

When true, skip interactive prompts and apply all non-excluded updates automatically. Has no effect without the cli feature.

§threads: Option<usize>

Maximum number of parallel installation threads.

None (default) uses the number of logical CPU threads available. Some(n) pins the pool to exactly n threads.

Implementations§

Source§

impl Config

Source

pub fn new() -> Self

Creates a new configuration with default values.

Default values:

  • system: false (user components)
  • excluded_packages: empty
  • widgets_id_table: loaded from embedded widgets-id file
  • restart: RestartBehavior::Never

The embedded widgets-id table provides fallback content ID mappings for components that cannot be resolved via KNewStuff registry or exact name matching.

Source

pub fn with_system(self, system: bool) -> Self

Sets whether to operate on system-wide components.

When true, the library scans and updates components in /usr/share instead of ~/.local/share. System operations require root privileges.

§Example
use libplasmoid_updater::Config;

let config = Config::new().with_system(true);
Source

pub fn with_widgets_id_table(self, table: HashMap<String, u64>) -> Self

Sets the widgets ID fallback table.

This table maps component directory names to KDE Store content IDs and is used as a fallback when other resolution methods fail.

§Arguments
  • table - HashMap mapping directory names to content IDs
§Example
use libplasmoid_updater::Config;
use std::collections::HashMap;

let mut table = HashMap::new();
table.insert("org.kde.plasma.systemmonitor".to_string(), 998890);

let config = Config::new().with_widgets_id_table(table);
Source

pub fn with_excluded_packages(self, packages: Vec<String>) -> Self

Sets the list of Plasmoids to exclude from updates.

Components in this list will be skipped during updates. The list can contain either directory names or display names.

§Arguments
  • packages - Vector of package names to exclude
§Example
use libplasmoid_updater::Config;

let config = Config::new()
    .with_excluded_packages(vec![
        "org.kde.plasma.systemmonitor".to_string(),
        "Problematic Widget".to_string(),
    ]);
Source

pub fn with_restart(self, restart: RestartBehavior) -> Self

Sets the plasmashell restart behavior after updates.

§Example
use libplasmoid_updater::{Config, RestartBehavior};

let config = Config::new().with_restart(RestartBehavior::Always);
Source

pub fn parse_widgets_id(content: &str) -> HashMap<String, u64>

Parses a widgets-id table from a string.

The format is one entry per line: content_id directory_name Lines starting with # are comments.

Source

pub fn with_auto_confirm(self, auto_confirm: bool) -> Self

Source

pub fn with_threads(self, threads: usize) -> Self

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Config

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more