1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-23 05:12:40 +03:00

fonts: use toast notification for missing glyph notification

Popping open the config error window is a bit of overkill
This commit is contained in:
Wez Furlong 2021-05-01 16:05:23 -07:00
parent 8880979586
commit 0c4c129b91
4 changed files with 36 additions and 9 deletions

1
Cargo.lock generated
View File

@ -4410,6 +4410,7 @@ dependencies = [
"unicode-segmentation", "unicode-segmentation",
"walkdir", "walkdir",
"wezterm-term", "wezterm-term",
"wezterm-toast-notification",
"winapi 0.3.9", "winapi 0.3.9",
"window", "window",
] ]

View File

@ -28,6 +28,7 @@ unicode-segmentation = "1.7"
unicode-general-category = "0.3" unicode-general-category = "0.3"
walkdir = "2" walkdir = "2"
wezterm-term = { path = "../term", features=["use_serde"] } wezterm-term = { path = "../term", features=["use_serde"] }
wezterm-toast-notification = { path = "../wezterm-toast-notification" }
window = { path = "../window" } window = { path = "../window" }
[target.'cfg(any(target_os = "android", all(unix, not(target_os = "macos"))))'.dependencies] [target.'cfg(any(target_os = "android", all(unix, not(target_os = "macos"))))'.dependencies]

View File

@ -12,8 +12,10 @@ use std::cell::RefCell;
use std::collections::{HashMap, HashSet}; use std::collections::{HashMap, HashSet};
use std::rc::{Rc, Weak}; use std::rc::{Rc, Weak};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use std::time::Duration;
use thiserror::Error; use thiserror::Error;
use wezterm_term::CellAttributes; use wezterm_term::CellAttributes;
use wezterm_toast_notification::ToastNotification;
use window::default_dpi; use window::default_dpi;
mod hbwrap; mod hbwrap;
@ -305,16 +307,33 @@ impl FontConfigInner {
.collect::<String>(); .collect::<String>();
if config.warn_about_missing_glyphs { if config.warn_about_missing_glyphs {
config::show_error(&format!( let url = "https://wezfurlong.org/wezterm/config/fonts.html";
log::warn!(
"No fonts contain glyphs for these codepoints: {}.\n\ "No fonts contain glyphs for these codepoints: {}.\n\
Placeholder 'Last Resort' glyphs are being displayed instead.\n\ Placeholder 'Last Resort' glyphs are being displayed instead.\n\
You may wish to install additional fonts, or adjust your\n\ You may wish to install additional fonts, or adjust your\n\
configuration so that it can find them.\n\ configuration so that it can find them.\n\
https://wezfurlong.org/wezterm/config/fonts.html\n\ {} has more information about configuring fonts.\n\
has more information about configuring fonts.\n\ Set warn_about_missing_glyphs=false to suppress this message.",
Set warn_about_missing_glyphs=false to suppress this message.", fallback_str.escape_unicode(),
fallback_str.escape_unicode() url,
)); );
ToastNotification {
title: "Font problem".to_string(),
message: format!(
"No fonts contain glyphs for these codepoints: {}.\n\
Placeholder glyphs are being displayed instead.\n\
You may wish to install additional fonts, or adjust\n\
your configuration so that it can find them.\n\
Set warn_about_missing_glyphs=false to suppress this\n\
message.",
fallback_str.escape_unicode()
),
url: Some(url.to_string()),
timeout: Some(Duration::from_secs(15)),
}
.show();
} else { } else {
log::warn!( log::warn!(
"No fonts contain glyphs for these codepoints: {}", "No fonts contain glyphs for these codepoints: {}",

View File

@ -10,6 +10,12 @@ pub struct ToastNotification {
pub timeout: Option<std::time::Duration>, pub timeout: Option<std::time::Duration>,
} }
impl ToastNotification {
pub fn show(self) {
show(self)
}
}
#[cfg(windows)] #[cfg(windows)]
use crate::windows as backend; use crate::windows as backend;
#[cfg(all(not(target_os = "macos"), not(windows), not(target_os = "freebsd")))] #[cfg(all(not(target_os = "macos"), not(windows), not(target_os = "freebsd")))]