Skip to main content

PanelWindow

Struct PanelWindow 

Source
pub struct PanelWindow { /* private fields */ }
Expand description

A bar: a layer-shell surface on one output with one child.

This is a description; Window::new builds it. By default it takes no keyboard focus. Every property takes a value or a closure.

use crabshell_ui::{Edge, Output, PanelWindow, Text};

let output = Output::new("DP-1");
let bar = PanelWindow::new(&output)
    .anchors(Edge::Top | Edge::Left | Edge::Right)
    .height(30)
    .child(Text::new("hello"));

Implementations§

Source§

impl PanelWindow

Source

pub fn new(output: &Output) -> PanelWindow

A window on output, anchored to no edge, in the top layer.

Source

pub fn anchors(self, anchors: impl IntoProp<Anchors>) -> PanelWindow

Sets the edges the window is anchored to.

Source

pub fn width(self, width: impl IntoProp<u32>) -> PanelWindow

Sets the width in logical pixels. 0, the default, lets the compositor choose, which it does when the window is anchored left and right.

Source

pub fn height(self, height: impl IntoProp<u32>) -> PanelWindow

Sets the height in logical pixels. 0, the default, lets the compositor choose, which it does when the window is anchored top and bottom.

Source

pub fn exclusive_zone(self, zone: impl IntoProp<i32>) -> PanelWindow

Sets how much space, in logical pixels, other windows keep clear along the anchored edge. The default is the window’s height for a top or bottom bar and its width for a left or right one. wlroots compositors add the margin on that edge to the zone. 0 keeps clear of other windows’ zones without reserving any; -1 ignores them and covers them.

Source

pub fn layer(self, layer: impl IntoProp<Layer>) -> PanelWindow

Sets the layer.

Source

pub fn margins(self, margins: impl IntoProp<Margins>) -> PanelWindow

Sets the space between the window and the edges it is anchored to.

Source

pub fn keyboard_focus(self, focus: impl IntoProp<KeyboardFocus>) -> PanelWindow

Sets whether the window takes the keyboard. The default is never.

Source

pub fn namespace(self, namespace: impl IntoProp<String>) -> PanelWindow

Sets the layer-shell namespace, which compositors use to tell windows apart, as in Sway’s layer_effects. The default is "crabshell", which also replaces a name holding a NUL byte. Compositors read it once, so a change after the window is shown applies only when it is shown again, as on a new output.

Source

pub fn mask(self, mask: impl IntoProp<Option<Region>>) -> PanelWindow

Sets the part of the window that takes pointer input; clicks outside it reach whatever is below. None, the default, is the whole window, and Region::empty lets every click through.

Source

pub fn blur(self, region: impl IntoProp<Option<Region>>) -> PanelWindow

Asks the compositor to blur what is behind this part of the window, so a translucent background looks frosted. None, the default, blurs nothing. It needs ext-background-effect-v1; a compositor without it shows the window unblurred, and the shell logs that once.

use crabshell_ui::{Output, PanelWindow, Region};

// The whole of a 30 pixel bar, however wide the output.
let bar = PanelWindow::new(&Output::new("DP-1"))
    .height(30)
    .blur(Some(Region::rect(0, 0, u32::MAX, 30)));
Source

pub fn inhibit_idle(self, inhibit: impl IntoProp<bool>) -> PanelWindow

Keeps the screen from blanking or locking for idleness while true and the window is shown, as a video player does. It needs idle-inhibit-unstable-v1; without it, that is logged once.

Source

pub fn inhibit_shortcuts(self, inhibit: impl IntoProp<bool>) -> PanelWindow

While true and the window has the keyboard, the compositor’s own shortcuts, such as Sway’s bindsyms, go to the window as keys instead, as a remote desktop or a game wants. The compositor may keep some, such as one that takes them back. It needs keyboard-shortcuts-inhibit-unstable-v1; without it, that is logged once.

Source

pub fn shortcuts_inhibited(self, signal: Signal<bool>) -> PanelWindow

The compositor writes true to signal while it honors inhibit_shortcuts, and false once it stops, as when the user takes its shortcuts back, or the window stops asking or goes. Give each window a signal of its own.

Source

pub fn focus_grab(self, signal: Signal<bool>) -> PanelWindow

While signal is true, this window and the shown windows given the same signal, with the popups they open, hold the keyboard and pointer focus: a click anywhere else ends the grab, and the compositor writes false to signal, as it does when every one of them hides. Writing false ends the grab, and true asks again. It needs Hyprland’s hyprland-focus-grab-v1; without it, that is logged once and signal is left as it is.

Source

pub fn on_key( self, handler: impl Fn(&Cx, &KeyEvent) -> bool + 'static, ) -> PanelWindow

Runs handler for each key the window gets that its focused button didn’t use. It returns true when it used the key; otherwise Tab, Enter and Space do what they do by default. The window gets keys only with a keyboard_focus.

Source

pub fn style(self, style: impl IntoProp<Style>) -> PanelWindow

Sets the window’s style. Its color and font are inherited by every Text in the window that doesn’t set its own.

Source

pub fn child(self, child: impl Widget) -> PanelWindow

Sets the window’s one child, which fills the window.

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.

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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