diff --git a/Cargo.lock b/Cargo.lock index 7343ba1..5b67153 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2360,9 +2360,6 @@ name = "log" version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" -dependencies = [ - "value-bag", -] [[package]] name = "lru" @@ -2605,6 +2602,16 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num" version = "0.4.1" @@ -2826,7 +2833,6 @@ dependencies = [ "iced_runtime", "iced_style", "ico", - "log", "onagre-launcher-toolkit", "once_cell", "pest", @@ -2839,9 +2845,10 @@ dependencies = [ "shell-words", "sled", "speculoos", - "systemd-journal-logger", "thiserror", "tokio", + "tracing", + "tracing-subscriber", ] [[package]] @@ -2980,6 +2987,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "owned_ttf_parser" version = "0.20.0" @@ -4252,16 +4265,6 @@ dependencies = [ "libc", ] -[[package]] -name = "systemd-journal-logger" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5f3848dd723f2a54ac1d96da793b32923b52de8dfcced8722516dac312a5b2a" -dependencies = [ - "log", - "rustix 0.38.30", -] - [[package]] name = "temp-dir" version = "0.1.12" @@ -4560,6 +4563,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", ] [[package]] @@ -4569,12 +4584,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", + "nu-ansi-term", "once_cell", "regex", "sharded-slab", + "smallvec", "thread_local", "tracing", "tracing-core", + "tracing-log", ] [[package]] @@ -4810,10 +4828,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] -name = "value-bag" -version = "1.6.0" +name = "valuable" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cdbaf5e132e593e9fc1de6a15bbec912395b11fb9719e061cf64f804524c503" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "vec_map" diff --git a/Cargo.toml b/Cargo.toml index bd4c752..3ed25f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,8 +34,8 @@ onagre-launcher-toolkit = { git = "https://github.com/onagre-launcher/launcher" clap = { version = "^4", features = ["derive"] } freedesktop-icons = "0.2.5" -log = { version = "^0.4" } -systemd-journal-logger = "2.1.1" +tracing = "0.1.40" +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } once_cell = "^1" anyhow = "^1" diff --git a/src/app/mod.rs b/src/app/mod.rs index 587f60c..3f6c1f6 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -12,9 +12,9 @@ use iced::{ use iced_core::widget::operation::scrollable::RelativeOffset; use iced_core::{Event, Font}; use iced_style::Theme; -use log::{debug, trace}; use onagre_launcher_toolkit::launcher::{Request, Response}; use once_cell::sync::Lazy; +use tracing::{debug, trace}; use crate::app::entries::pop_entry::PopSearchResult; use crate::app::entries::AsEntry; diff --git a/src/app/state.rs b/src/app/state.rs index 5587905..745e6d3 100644 --- a/src/app/state.rs +++ b/src/app/state.rs @@ -1,8 +1,8 @@ use crate::app::cache::Cache; use crate::app::mode::ActiveMode; use crate::app::plugin_matchers::{match_web_plugins, Plugin}; -use log::debug; use onagre_launcher_toolkit::launcher::SearchResult; +use tracing::debug; use crate::app::{Message, INPUT_ID}; use crate::icons::IconPath; diff --git a/src/app/style/mod.rs b/src/app/style/mod.rs index b476772..aea9e86 100644 --- a/src/app/style/mod.rs +++ b/src/app/style/mod.rs @@ -5,9 +5,11 @@ use crate::app::style::search::input::SearchInputStyles; use crate::app::style::search::SearchContainerStyles; use crate::config::color::OnagreColor; use crate::config::padding::OnagrePadding; +use crate::THEME_PATH; use iced::widget::container::Appearance; use iced::Background; use iced_core::BorderRadius; +use tracing::{error, warn}; pub mod app; pub mod rows; @@ -16,16 +18,11 @@ pub mod search; impl Theme { pub fn load() -> Self { - let buf = dirs::config_dir() - .expect("Failed to open `$XDG_CONFIG_HOME`") - .join("onagre") - .join("theme.scss"); - - let theme = crate::config::parse_file(buf); + let buf = THEME_PATH.lock().unwrap().clone(); + let theme = crate::config::parse_file(&buf); if let Err(err) = &theme { - eprintln!("Failed to parse theme:"); - eprintln!("{err}"); - eprintln!("Failing back to default theme"); + error!("Failed to parse theme {buf:?}: {err}"); + warn!("Failing back to default theme"); }; theme.unwrap_or_default() diff --git a/src/app/subscriptions/pop_launcher.rs b/src/app/subscriptions/pop_launcher.rs index cfeb982..3415485 100644 --- a/src/app/subscriptions/pop_launcher.rs +++ b/src/app/subscriptions/pop_launcher.rs @@ -6,12 +6,12 @@ use iced::Subscription; use iced_core::event::Status; use iced_runtime::futures::futures::stream; use iced_runtime::futures::subscription::Recipe; -use log::debug; use onagre_launcher_toolkit::launcher::{json_input_stream, Request, Response}; use std::hash::Hash; use std::process::Stdio; use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader}; use tokio::process::{ChildStderr, ChildStdin, ChildStdout, Command}; +use tracing::debug; // Whenever a message is red from pop-launcher stdout, send it to the subscription receiver async fn handle_stdout(stdout: ChildStdout, mut sender: Sender) { diff --git a/src/db/mod.rs b/src/db/mod.rs index 1fb699d..3f6cb46 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -1,7 +1,7 @@ -use log::{debug, trace}; use once_cell::sync::Lazy; use std::cmp::Reverse; use std::fmt::Debug; +use tracing::{debug, trace}; use serde::de::DeserializeOwned; use serde::Serialize; diff --git a/src/db/web.rs b/src/db/web.rs index 5b98ba9..3d88621 100644 --- a/src/db/web.rs +++ b/src/db/web.rs @@ -1,7 +1,7 @@ use crate::db::{Database, Entity}; -use log::debug; use serde::{Deserialize, Serialize}; use std::borrow::Cow; +use tracing::debug; #[derive(Debug, Clone, Deserialize, Serialize)] pub struct WebEntity<'a> { diff --git a/src/main.rs b/src/main.rs index 7b9f032..0b05b03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,14 @@ use std::path::PathBuf; +use std::sync::Mutex; use anyhow::anyhow; -use app::style::Theme; use clap::Parser; -use log::{debug, info, LevelFilter}; use once_cell::sync::Lazy; -use std::sync::Mutex; -use systemd_journal_logger::JournalLog; +use tracing::{debug, info}; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; + +use app::style::Theme; pub mod app; pub mod config; @@ -18,7 +20,7 @@ pub static THEME_PATH: Lazy> = Lazy::new(|| { Mutex::new( dirs::config_dir() .ok_or_else(|| anyhow!("Theme config not found")) - .map(|path| path.join("onagre").join("theme.toml")) + .map(|path| path.join("onagre").join("theme.scss")) .unwrap(), ) }); @@ -40,8 +42,13 @@ struct Cli { } pub fn main() -> iced::Result { - JournalLog::new().unwrap().install().unwrap(); - log::set_max_level(LevelFilter::Info); + tracing_subscriber::registry() + .with(tracing_subscriber::EnvFilter::new( + std::env::var("RUST_LOG").unwrap_or_else(|_| "onagre=info".into()), + )) + .with(tracing_subscriber::fmt::layer()) + .init(); + info!("Starting onagre"); let cli = Cli::parse(); // User defined theme config, $XDG_CONFIG_DIR/onagre/theme.toml otherwise