Struct penrose_ui::bar::widgets::IntervalText

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

A simple widget that does not care about window manager state and refreshes on a specified interval.

On the requested interval, 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.

Unlike RefreshText, your get_text function will only be run on the schedule you specify rather than every time the internal window manager state refreshes. This is useful for code that is slow to run such as network requests.

§Example

use penrose::{util::spawn_for_output_with_args, Color};
use penrose_ui::{bar::widgets::IntervalText, core::TextStyle};
use std::time::Duration;

// Make a curl request to wttr.in to fetch the current weather information
// for our location.
fn my_get_text() -> Option<String> {
    let s = spawn_for_output_with_args("curl", &["-s", "http://wttr.in?format=3"])
        .unwrap_or_default()
        .trim()
        .to_string();

    Some(s)
}

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


let my_widget = IntervalText::new(
    style,
    my_get_text,
    Duration::from_secs(60 * 5)
);

Implementations§

source§

impl IntervalText

source

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

Construct a new IntervalText using the specified styling and a function for generating the widget contents. The function for updating the widget contents will be run in its own thread on the interval provided.

Trait Implementations§

source§

impl Debug for IntervalText

source§

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

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

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

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 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_refresh(&mut self, state: &mut State<X>, x: &X) -> Result<()>

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