#bar #x11 #xorg #panel #dock

leechbar

基于XCB构建自己栏的库

12个版本

使用旧Rust 2015

0.5.4 2018年9月3日
0.5.3 2017年11月21日
0.4.2 2017年11月18日
0.3.0 2017年10月31日
0.1.0 2017年10月14日

#4 in #dock

每月下载量39

MIT/Apache

81KB
1.5K SLoC

[已弃用]

此项目从未达到可用的状态,并且不再开发。


lib.rs:

Leechbar是一个用于创建自己的栏/面板/托盘的crate。

Leechbar的目标是提供一个库,允许创建一个完全定制的栏。其目的不是简单。因此,如果您不打算使用比简单文本更多的内容,您可能想看看像lemonbar这样的东西。

用法

此crate可以通过crates.io安装,并且可以通过将其添加到您的Cargo.toml中使用。

[dependencies]
leechbar = "0.2.1"

示例

这些片段只是触及了使用leechbar的基本知识,对于更完整的示例,您可以查看github存储库

使用leechbar的第一件事是设置栏配置本身。这是使用BarBuilder结构体完成的。

use leechbar::{BarBuilder, Color};

// All method calls that take parameters are optional
BarBuilder::new()
    .background_color(Color::new(255, 0, 255, 255))
    .font("Fira Mono Medium 14")
    .output("DVI-1")
    .height(30)
    .spawn()
    .unwrap();

在创建配置后,您需要将组件添加到栏中。这稍微复杂一些,因为您需要实现Component特质。

use leechbar::{Bar, BarBuilder, Component, Text, Foreground};

struct MyComponent {
    bar: Bar,
}

// You can define your own custom components like this
impl Component for MyComponent {
    // Print "Hello, World!" as text
    fn foreground(&self) -> Foreground {
        Text::new(&self.bar, "Hello, World", None, None).unwrap().into()
    }
}

// Create a new bar
let mut bar = BarBuilder::new().spawn().unwrap();

// Create an instance of the component
let comp = MyComponent { bar: bar.clone() };

// Add an instance of your component to your bar
bar.add(comp);

// Start the event loop that handles all X events
bar.start_event_loop();

日志记录

此crate支持log,如果您想启用此日志记录,可以将env_logger添加到您的二进制文件中。

extern crate env_logger;

fn main() {
    env_logger::init();
    // All the cool bar stuff
}

依赖关系

~18MB
~196K SLoC