Minimal bar

- Is not of the type "dock" yet
This commit is contained in:
Candifloss 2025-11-18 12:16:18 +05:30
parent d7504bce1d
commit d587a9866b
5 changed files with 85 additions and 0 deletions

6
.gitignore vendored
View File

@ -20,3 +20,9 @@ Cargo.lock
# and can be added to the global gitignore or merged into this file. For a more nuclear # and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder. # option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/ #.idea/
test/
# Added by cargo
/target

16
Cargo.toml Normal file
View File

@ -0,0 +1,16 @@
[package]
name = "chocobar"
description = "An experiment to create a topbar for X11 using Rust and Slint"
version = "0.1.0"
edition = "2024"
authors = ["candifloss <candifloss.cc>"]
readme = "README.md"
[dependencies]
raw-window-handle = "0.6.2"
slint = { version = "1.14.1", features = ["raw-window-handle-06", "renderer-software"] }
winit = { version = "0.30.12", features = ["x11rb"] }
x11rb = "0.13.2"
[build-dependencies]
slint-build = "1.14.1"

3
build.rs Normal file
View File

@ -0,0 +1,3 @@
fn main() {
slint_build::compile("ui/topbar.slint").unwrap();
}

18
src/main.rs Normal file
View File

@ -0,0 +1,18 @@
use slint::{LogicalPosition, LogicalSize};
slint::include_modules!();
fn main() -> Result<(), Box<dyn std::error::Error>> {
let bar_height = 25;
let bar_width = 1366;
let ui = TopBar::new()?;
ui.set_bar_width(bar_width);
ui.set_bar_height(bar_height);
ui.window()
.set_size(LogicalSize::new(bar_width as f32, bar_height as f32));
ui.window().set_position(LogicalPosition::new(0.0, 0.0));
ui.run()?;
Ok(())
}

42
ui/topbar.slint Normal file
View File

@ -0,0 +1,42 @@
export component TopBar inherits Window {
in property<int> bar_width;
in property<int> bar_height;
title: "chocobar";
width: bar_width *1px;
height: bar_height *1px;
always-on-top: true;
no-frame: true;
//background: #999898a6;
x: 0px;
y: 0px;
Rectangle {
x: 0px;
y: 0px;
width: 100%;
height: 100%;
background: #999898a6;
border-radius: 0px;
HorizontalLayout {
x: 0px;
y: 0px;
width: 100%;
height: 100%;
Rectangle {
background: #79a9af7b;
}
Rectangle {
background: #779e5c7a;
}
Rectangle {
background: #c2779a7a;
}
}
}
}