Struct penrose_ui::bar::widgets::RefreshText

source ·
pub struct RefreshText { /* private fields */ }
Expand description

A simple widget that does not care about window manager state.

On each refresh, the provided get_text function is called and the output is stored in a Text widget. Whenever the output changes, this widget will trigger a re-render of the status bar.

§A note on blocking code

Be aware that the get_text function you provide will be run on every refresh of the internal window manager state, meaning that slow running functions will very quickly make your window manager sluggish and unresponsive! If you need to run logic that is slow or may take a variable amount of time (such as pulling data in over the network) then you will likely want to make use of the IntervalText struct instead.

§Example

use penrose::{util::spawn_for_output_with_args, Color};
use penrose_ui::{bar::widgets::RefreshText, core::TextStyle};

// Use the pacman package manager to get a count of how many packages are
// currently installed on the system.
fn my_get_text() -> String {
    let n_packages = spawn_for_output_with_args("sh", &["-c", "pacman -Q | wc -l"])
        .unwrap_or_default()
        .trim()
        .to_string();

    format!("#pacman packages: {n_packages}")
}

let style = TextStyle {
    fg: 0xebdbb2ff.into(),
    bg: Some(0x282828ff.into()),
    padding: (2, 2),
};

let my_widget = RefreshText::new(style, my_get_text);

Implementations§

source§

impl RefreshText

source

pub fn new<F>(style: TextStyle, get_text: F) -> Self
where F: Fn() -> String + 'static,

Construct a new RefreshText using the specified styling and a function for generating the widget contents.

Trait Implementations§

source§

impl Debug for RefreshText

source§

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

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

impl<X: XConn> Widget<X> for RefreshText

source§

fn draw( &mut self, ctx: &mut Context<'_>, s: usize, f: bool, w: u32, h: u32, ) -> Result<()>

Render the current state of the widget to the status bar window.
source§

fn current_extent( &mut self, ctx: &mut Context<'_>, h: u32, ) -> Result<(u32, u32)>

Current required width and height for this widget due to its content
source§

fn is_greedy(&self) -> bool

If true, this widget will expand to fill remaining available space after layout has been computed. If multiple greedy widgets are present in a given StatusBar then the available space will be split evenly between all widgets.
source§

fn require_draw(&self) -> bool

Does this widget currently require re-rendering? (should be reset to false when ‘draw’ is called)
source§

fn on_refresh(&mut self, _: &mut State<X>, _: &X) -> Result<()>

A refresh hook to be run in order to update this Widget
source§

fn update_schedule(&mut self) -> Option<UpdateSchedule>

An UpdateSchedule to allow for external updates to this Widget’s state independently of the window manager event loop.
source§

fn on_startup(&mut self, state: &mut State<X>, x: &X) -> Result<()>

A startup hook to be run in order to initialise this Widget
source§

fn on_event( &mut self, event: &XEvent, state: &mut State<X>, x: &X, ) -> Result<()>

An event hook to be run in order to update this Widget
source§

fn on_new_client(&mut self, id: Xid, state: &mut State<X>, x: &X) -> Result<()>

A manage hook to be run in order to update this Widget

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> Any for T
where T: Any,