diff --git a/crates/client/src/main.rs b/crates/client/src/main.rs index 92c858c..8c3086e 100644 --- a/crates/client/src/main.rs +++ b/crates/client/src/main.rs @@ -26,14 +26,14 @@ fn banner() { #[cfg(windows)] { let admin = is_admin(); - let admin_str = if admin { - "admin".green().bold() + let (icon, admin_str) = if admin { + ("๐Ÿ‘‘", "admin".green().bold().to_string()) } else { - "user (no admin)".yellow() + ("๐Ÿ‘ค", "user (no admin)".yellow().to_string()) }; - println!(" running as {}", admin_str); + println!(" {} {}", icon, admin_str); } - println!(" {}", "โ”€".repeat(45).dimmed()); + println!(); } #[cfg(windows)] @@ -77,8 +77,8 @@ macro_rules! log_err { } macro_rules! log_cmd { - ($($arg:tt)*) => { - println!(" {} {}", "โšก".yellow().bold(), format!($($arg)*)); + ($emoji:expr, $($arg:tt)*) => { + println!(" {} {}", $emoji, format!($($arg)*)); }; } @@ -340,7 +340,7 @@ async fn handle_message( ) -> ClientMessage { match msg { ServerMessage::ScreenshotRequest { request_id } => { - log_cmd!("screenshot"); + log_cmd!("๐Ÿ“ท", "screenshot"); match screenshot::take_screenshot() { Ok((image_base64, width, height)) => { log_ok!("Done {} {}ร—{}", "ยท".dimmed(), width, height); @@ -365,7 +365,7 @@ async fn handle_message( let _title = title.unwrap_or_else(|| "Helios Remote".to_string()); #[cfg(windows)] let title = _title.clone(); - log_cmd!("prompt โ€บ {}", &message[..message.len().min(60)]); + log_cmd!("๐Ÿ’ฌ", "prompt โ€บ {}", &message[..message.len().min(60)]); #[cfg(windows)] { use windows::core::PCWSTR; @@ -400,7 +400,7 @@ async fn handle_message( } else { command.clone() }; - log_cmd!("exec โ€บ {}", cmd_display); + log_cmd!("โšก", "exec โ€บ {}", cmd_display); let mut sh = shell.lock().await; match sh.run(&command, timeout_ms).await { Ok((stdout, stderr, exit_code)) => { @@ -443,7 +443,7 @@ async fn handle_message( } ServerMessage::ClickRequest { request_id, x, y, button } => { - log_cmd!("click ({x}, {y}) {:?}", button); + log_cmd!("๐Ÿ–ฑ ", "click ({x}, {y}) {:?}", button); match input::click(x, y, &button) { Ok(()) => { log_ok!("Done"); @@ -460,7 +460,7 @@ async fn handle_message( } ServerMessage::TypeRequest { request_id, text } => { - log_cmd!("type {} chars", text.len()); + log_cmd!("โŒจ ", "type {} chars", text.len()); match input::type_text(&text) { Ok(()) => { log_ok!("Done"); @@ -477,7 +477,7 @@ async fn handle_message( } ServerMessage::ListWindowsRequest { request_id } => { - log_cmd!("list-windows"); + log_cmd!("๐ŸชŸ", "list-windows"); match windows_mgmt::list_windows() { Ok(windows) => { log_ok!("{} windows", windows.len()); @@ -491,7 +491,7 @@ async fn handle_message( } ServerMessage::MinimizeAllRequest { request_id } => { - log_cmd!("minimize-all"); + log_cmd!("๐ŸชŸ", "minimize-all"); match windows_mgmt::minimize_all() { Ok(()) => { log_ok!("Done"); @@ -505,7 +505,7 @@ async fn handle_message( } ServerMessage::FocusWindowRequest { request_id, window_id } => { - log_cmd!("focus-window {window_id}"); + log_cmd!("๐ŸชŸ", "focus-window {window_id}"); match windows_mgmt::focus_window(window_id) { Ok(()) => { log_ok!("Done"); @@ -519,7 +519,7 @@ async fn handle_message( } ServerMessage::MaximizeAndFocusRequest { request_id, window_id } => { - log_cmd!("maximize-and-focus {window_id}"); + log_cmd!("๐ŸชŸ", "maximize-and-focus {window_id}"); match windows_mgmt::maximize_and_focus(window_id) { Ok(()) => { log_ok!("Done"); @@ -533,6 +533,7 @@ async fn handle_message( } ServerMessage::VersionRequest { request_id } => { + log_cmd!("โ„น ", "version"); ClientMessage::VersionResponse { request_id, version: env!("CARGO_PKG_VERSION").to_string(), @@ -541,7 +542,7 @@ async fn handle_message( } ServerMessage::UploadRequest { request_id, path, content_base64 } => { - log_cmd!("upload โ†’ {}", path); + log_cmd!("โฌ† ", "upload โ†’ {}", path); match (|| -> Result<(), String> { let bytes = base64::engine::general_purpose::STANDARD .decode(&content_base64) @@ -564,7 +565,7 @@ async fn handle_message( } ServerMessage::DownloadRequest { request_id, path } => { - log_cmd!("download โ† {}", path); + log_cmd!("โฌ‡ ", "download โ† {}", path); match std::fs::read(&path) { Ok(bytes) => { let size = bytes.len() as u64; @@ -580,7 +581,7 @@ async fn handle_message( } ServerMessage::RunRequest { request_id, program, args } => { - log_cmd!("run โ€บ {}", program); + log_cmd!("๐Ÿš€", "run โ€บ {}", program); use std::process::Command as StdCommand; match StdCommand::new(&program).args(&args).spawn() { Ok(_) => { @@ -595,7 +596,7 @@ async fn handle_message( } ServerMessage::ClipboardGetRequest { request_id } => { - log_cmd!("clipboard-get"); + log_cmd!("๐Ÿ“‹", "clipboard-get"); let out = tokio::process::Command::new("powershell.exe") .args(["-NoProfile", "-NonInteractive", "-Command", "Get-Clipboard"]) .output().await; @@ -610,7 +611,7 @@ async fn handle_message( } ServerMessage::ClipboardSetRequest { request_id, text } => { - log_cmd!("clipboard-set โ€บ {} chars", text.len()); + log_cmd!("๐Ÿ“‹", "clipboard-set โ€บ {} chars", text.len()); let cmd = format!("Set-Clipboard -Value '{}'", text.replace('\'', "''")); let out = tokio::process::Command::new("powershell.exe") .args(["-NoProfile", "-NonInteractive", "-Command", &cmd])