use ferrishot::App;
use iced::Font;
const LOGO: &[u8; 0x4000] = include_bytes!(concat!(env!("OUT_DIR"), "/logo.bin"));
fn main() {
env_logger::builder().init();
#[cfg(not(target_os = "linux"))]
{
let icon = tray_icon::Icon::from_rgba(LOGO.to_vec(), 64, 64).expect("Failed to open icon");
let _tray_icon = tray_icon::TrayIconBuilder::new()
.with_title("ferrishot")
.with_tooltip("Take a screenshot using ferrishot")
.with_icon(icon)
.build();
}
#[cfg(target_os = "linux")]
{
if std::env::args()
.nth(1)
.as_deref()
.is_some_and(|arg| arg == ferrishot::CLIPBOARD_DAEMON_ID)
{
ferrishot::run_clipboard_daemon().expect("Failed to run clipboard daemon");
return;
}
}
iced::application(App::default, App::update, App::view)
.window(iced::window::Settings {
level: iced::window::Level::Normal,
fullscreen: true,
icon: Some(
iced::window::icon::from_rgba(LOGO.to_vec(), 64, 64)
.expect("logo.bin contains valid RGBA"),
),
..Default::default()
})
.title("ferrishot")
.default_font(Font::MONOSPACE)
.run()
.expect("Failed to start ferrishot");
if let Some(saved_image) = ferrishot::SAVED_IMAGE.get() {
if let Some(save_path) = rfd::FileDialog::new()
.set_title("Save Screenshot")
.save_file()
{
saved_image
.save(save_path)
.expect("Failed to save the image");
}
}
}