#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use std::time::Duration;
use eframe::egui;
use global_hotkey::{hotkey::HotKey, GlobalHotKeyEvent, GlobalHotKeyManager};
use keyboard_types::{Code, Modifiers};
fn main() -> Result<(), eframe::Error> {
let manager = GlobalHotKeyManager::new().unwrap();
let hotkey = HotKey::new(Some(Modifiers::SHIFT), Code::KeyD);
manager.register(hotkey).unwrap();
let receiver = GlobalHotKeyEvent::receiver();
std::thread::spawn(|| loop {
if let Ok(event) = receiver.try_recv() {
println!("tray event: {event:?}");
}
std::thread::sleep(Duration::from_millis(100));
});
eframe::run_native(
"My egui App",
eframe::NativeOptions::default(),
Box::new(|_cc| Box::<MyApp>::default()),
)
}
struct MyApp {
name: String,
age: u32,
}
impl Default for MyApp {
fn default() -> Self {
Self {
name: "Arthur".to_owned(),
age: 42,
}
}
}
impl eframe::App for MyApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("My egui Application");
ui.horizontal(|ui| {
let name_label = ui.label("Your name: ");
ui.text_edit_singleline(&mut self.name)
.labelled_by(name_label.id);
});
ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age"));
if ui.button("Click each year").clicked() {
self.age += 1;
}
ui.label(format!("Hello '{}', age {}", self.name, self.age));
});
}
}