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
impl RefreshText
Trait Implementations§
source§impl Debug for RefreshText
impl Debug for RefreshText
source§impl<X: XConn> Widget<X> for RefreshText
impl<X: XConn> Widget<X> for RefreshText
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 on_refresh(&mut self, _: &mut State<X>, _: &X) -> Result<()>
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>
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
Auto Trait Implementations§
impl Freeze for RefreshText
impl !RefUnwindSafe for RefreshText
impl !Send for RefreshText
impl !Sync for RefreshText
impl Unpin for RefreshText
impl !UnwindSafe for RefreshText
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