cosmic-files/src/lib.rs

84 lines
2.1 KiB
Rust
Raw Normal View History

2024-02-01 15:14:14 -07:00
// Copyright 2023 System76 <info@system76.com>
// SPDX-License-Identifier: GPL-3.0-only
use cosmic::{
app::{Application, Settings},
cosmic_config::{self, CosmicConfigEntry},
2024-02-10 19:09:37 -07:00
iced::Limits,
2024-02-01 15:14:14 -07:00
};
2024-02-13 12:29:50 -07:00
use std::{path::PathBuf, process};
2024-02-01 15:14:14 -07:00
use app::{App, Flags};
mod app;
2024-03-20 08:42:28 -06:00
mod clipboard;
2024-02-01 15:14:14 -07:00
use config::{Config, CONFIG_VERSION};
mod config;
pub mod dialog;
2024-02-01 15:14:14 -07:00
mod key_bind;
mod localize;
mod menu;
mod mime_app;
2024-03-04 12:28:16 -07:00
pub mod mime_icon;
mod mounter;
2024-02-01 15:14:14 -07:00
mod mouse_area;
mod operation;
2024-03-04 10:28:16 -07:00
mod spawn_detached;
2024-02-01 15:14:14 -07:00
mod tab;
pub fn home_dir() -> PathBuf {
match dirs::home_dir() {
Some(home) => home,
None => {
log::warn!("failed to locate home directory");
PathBuf::from("/")
}
}
}
/// Runs application with these settings
#[rustfmt::skip]
pub fn main() -> Result<(), Box<dyn std::error::Error>> {
#[cfg(all(unix, not(target_os = "redox")))]
match fork::daemon(true, true) {
Ok(fork::Fork::Child) => (),
Ok(fork::Fork::Parent(_child_pid)) => process::exit(0),
Err(err) => {
eprintln!("failed to daemonize: {:?}", err);
process::exit(1);
}
}
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("warn")).init();
localize::localize();
let (config_handler, config) = match cosmic_config::Config::new(App::APP_ID, CONFIG_VERSION) {
Ok(config_handler) => {
let config = match Config::get_entry(&config_handler) {
Ok(ok) => ok,
Err((errs, config)) => {
log::info!("errors loading config: {:?}", errs);
config
}
};
(Some(config_handler), config)
}
Err(err) => {
log::error!("failed to create config handler: {}", err);
(None, Config::default())
}
};
let mut settings = Settings::default();
settings = settings.theme(config.app_theme.theme());
2024-02-10 19:09:37 -07:00
settings = settings.size_limits(Limits::NONE.min_width(360.0).min_height(180.0));
2024-02-01 15:14:14 -07:00
let flags = Flags {
config_handler,
config,
};
cosmic::app::run::<App>(settings, flags)?;
Ok(())
}