61 lines
1.8 KiB
Rust
61 lines
1.8 KiB
Rust
use crate::backend::Backend;
|
|
mod backend;
|
|
mod css;
|
|
mod ui;
|
|
|
|
use glib::clone;
|
|
use gtk::prelude::*;
|
|
use gtk::{Application, CssProvider, gdk, gio};
|
|
use jmb_bar::config::Config;
|
|
use jmb_logger_rs::*;
|
|
use notify::RecommendedWatcher;
|
|
use std::cell::RefCell;
|
|
use std::rc::Rc;
|
|
|
|
pub const LOGGER: Logger = Logger::create(Level::DEBUG);
|
|
pub const APP_NAME: &str = "net.jmb19905.jmb-bar";
|
|
|
|
fn main() {
|
|
info!(&LOGGER, "Starting jmb-bar");
|
|
|
|
let config = Config::load("jmb-bar.conf");
|
|
let config = config.unwrap_or_else(|| {
|
|
warn!(&LOGGER, "Couldn't load config file, using default");
|
|
Config::default()
|
|
});
|
|
let backend = Backend::start(&config);
|
|
|
|
gio::resources_register_include!("templates.gresource").expect("Failed to register resources");
|
|
let app = Application::builder().application_id(APP_NAME).build();
|
|
|
|
let watcher_slot: Rc<RefCell<Option<RecommendedWatcher>>> = Rc::new(RefCell::new(None));
|
|
|
|
app.connect_startup(move |_| {
|
|
debug!(&LOGGER, "Connect startup");
|
|
let provider = CssProvider::new();
|
|
if let Some(css) = css::parse_css() {
|
|
provider.load_from_string(&css);
|
|
}
|
|
gtk::style_context_add_provider_for_display(
|
|
&gdk::Display::default().expect("Could not connect to display"),
|
|
&provider,
|
|
gtk::STYLE_PROVIDER_PRIORITY_APPLICATION,
|
|
);
|
|
let watcher = css::watch_css(move |css| provider.load_from_string(&css));
|
|
*watcher_slot.borrow_mut() = Some(watcher);
|
|
});
|
|
|
|
app.connect_activate(clone!(
|
|
#[strong]
|
|
backend,
|
|
move |app| {
|
|
debug!(&LOGGER, "Connect activate");
|
|
trace!(&LOGGER, "Starting bars");
|
|
ui::create_bars(app, backend.clone());
|
|
}
|
|
));
|
|
|
|
debug!(&LOGGER, "Running app");
|
|
app.run();
|
|
}
|