#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release 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::::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)); }); } }