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
impl IntervalText
sourcepub fn new<F>(style: TextStyle, get_text: F, interval: Duration) -> Self
pub fn new<F>(style: TextStyle, get_text: F, interval: Duration) -> Self
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
impl Debug for IntervalText
source§impl<X: XConn> Widget<X> for IntervalText
impl<X: XConn> Widget<X> for IntervalText
source§fn draw(
&mut self,
ctx: &mut Context<'_>,
s: usize,
f: bool,
w: u32,
h: u32,
) -> Result<()>
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)>
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
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
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>
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<()>
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<()>
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
Auto Trait Implementations§
impl Freeze for IntervalText
impl !RefUnwindSafe for IntervalText
impl Send for IntervalText
impl !Sync for IntervalText
impl Unpin for IntervalText
impl !UnwindSafe for IntervalText
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more