From 2476b2b9c8ff636d6028430fb6bbba3d3054931b Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Mon, 28 Mar 2022 01:08:22 +0200 Subject: [PATCH] =?UTF-8?q?Corrige=20el=20r=C3=B3tulo=20de=20inicio=20en?= =?UTF-8?q?=20terminales?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajusta el número de caracteres que se pueden mostrar en el rótulo de inicio según el número de columnas del terminal. Si es menor de 80 columnas mostrará directamente texto. --- pagetop/Cargo.toml | 2 ++ pagetop/src/app/banner/mod.rs | 20 ++++++++++++++++++-- pagetop/src/lib.rs | 8 ++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/pagetop/Cargo.toml b/pagetop/Cargo.toml index 514ab6e9..a4db3d98 100644 --- a/pagetop/Cargo.toml +++ b/pagetop/Cargo.toml @@ -27,6 +27,8 @@ downcast-rs = "1.2.0" figlet-rs = "0.1.3" futures = "0.3.21" once_cell = "1.10.0" +substring = "1.4.5" +term_size = "0.3.2" url = "2.2.2" config_rs = { package = "config", version = "0.11.0", features = ["toml"] } diff --git a/pagetop/src/app/banner/mod.rs b/pagetop/src/app/banner/mod.rs index f6d63841..1cce7146 100644 --- a/pagetop/src/app/banner/mod.rs +++ b/pagetop/src/app/banner/mod.rs @@ -2,6 +2,7 @@ use crate::Lazy; use crate::config::SETTINGS; use figlet_rs::FIGfont; +use substring::Substring; static FIGFONT: Lazy = Lazy::new(|| { let slant = include_str!("slant.flf"); @@ -31,8 +32,23 @@ static FIGFONT: Lazy = Lazy::new(|| { pub fn print_on_startup() { if SETTINGS.app.startup_banner.to_lowercase() != "off" { - println!("\n{} {}\n\n Powered by PageTop {}\n", - FIGFONT.convert(&SETTINGS.app.name).unwrap(), + if let Some((term_width, _)) = term_size::dimensions() { + if term_width >= 80 { + let maxlen = (term_width / 10) - 2; + let mut app = SETTINGS.app.name.substring(0, maxlen).to_owned(); + if SETTINGS.app.name.len() > maxlen { + app = format!("{}...", app); + } + println!("\n{} {}\n\n Powered by PageTop {}\n", + FIGFONT.convert(&app).unwrap(), + &SETTINGS.app.description, + env!("CARGO_PKG_VERSION") + ); + return; + } + } + println!("\n{}\n{}\n\nPowered by PageTop {}\n", + &SETTINGS.app.name, &SETTINGS.app.description, env!("CARGO_PKG_VERSION") ); diff --git a/pagetop/src/lib.rs b/pagetop/src/lib.rs index 73e17c8d..72ab7328 100644 --- a/pagetop/src/lib.rs +++ b/pagetop/src/lib.rs @@ -1,8 +1,8 @@ -// Global. +// Local. -pub use doc_comment::doc_comment; -pub use once_cell::sync::Lazy; -pub use futures::executor::block_on as run_now; +pub(crate) use doc_comment::doc_comment; +pub(crate) use once_cell::sync::Lazy; +pub(crate) use futures::executor::block_on as run_now; // ----------------------------------------------------------------------------- // APIs públicas.