First Commit
This commit is contained in:
58
src/main.rs
Normal file
58
src/main.rs
Normal file
@@ -0,0 +1,58 @@
|
||||
use crate::backend::Backend;
|
||||
mod backend;
|
||||
mod css;
|
||||
mod ui;
|
||||
|
||||
use glib::clone;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Application, CssProvider, gdk, gio};
|
||||
use jmb_logger_rs::*;
|
||||
use notify::RecommendedWatcher;
|
||||
use std::cell::RefCell;
|
||||
use std::process::Command;
|
||||
use std::rc::Rc;
|
||||
|
||||
pub const LOGGER: Logger = Logger::create(Level::DEBUG);
|
||||
|
||||
fn main() {
|
||||
info!(&LOGGER, "Starting jmb-bar");
|
||||
|
||||
gio::resources_register_include!("templates.gresource").expect("Failed to register resources");
|
||||
|
||||
let app = Application::builder()
|
||||
.application_id("net.jmb19905.jmb-bar")
|
||||
.build();
|
||||
|
||||
let watcher_slot: Rc<RefCell<Option<RecommendedWatcher>>> = Rc::new(RefCell::new(None));
|
||||
|
||||
let _ = Command::new("pkill hypridle").output(); // Kill existing hypridle processes
|
||||
|
||||
let backend = Backend::start();
|
||||
let _guard = backend.create_drop_guard(); // Make sure hypridle gets killed when the process exits
|
||||
trace!(&LOGGER, "Initialized DropGuard");
|
||||
|
||||
app.connect_startup(move |_| {
|
||||
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| {
|
||||
trace!(&LOGGER, "Starting bars");
|
||||
ui::create_bars(app, backend.clone());
|
||||
}
|
||||
));
|
||||
|
||||
app.run();
|
||||
}
|
||||
Reference in New Issue
Block a user