use std::io::{stdout, Write};
use std::thread;
use std::time::Duration;
fn reset_terminal_line_discipline() {
print!("\x1b[!p"); print!("\x1b[?7h"); print!("\x1b[?25h"); let _ = stdout().flush();
}
fn hard_reset_terminal() {
print!("\x1bc"); print!("\x1b[0m"); print!("\x1b[?7h"); print!("\x1b[H"); let _ = stdout().flush();
}
fn simulate_osc_corruption() {
println!("Simulating OSC sequence corruption...");
let handles: Vec<_> = (0..5)
.map(|i| {
thread::spawn(move || {
for j in 0..10 {
print!("\x1b]0;Thread {} Message {}\x1b\\", i, j);
print!("Thread {} output {}", i, j);
print!("\n");
let _ = stdout().flush();
thread::sleep(Duration::from_millis(10));
}
})
})
.collect();
for handle in handles {
handle.join().unwrap();
}
println!("OSC corruption simulation complete");
}
fn test_terminal_state() -> bool {
println!("Testing terminal state...");
print!("TEST LINE");
let _ = stdout().flush();
print!("\n");
let _ = stdout().flush();
print!("\x1b[6n");
let _ = stdout().flush();
print!("SECOND TEST LINE");
let _ = stdout().flush();
print!("\n");
let _ = stdout().flush();
true }
fn demonstrate_detection() {
println!("=== Terminal State Detection Demo ===");
println!("Test 1: Normal terminal state");
println!("Line 1");
println!("Line 2");
println!("Line 3");
println!("Lines should align at column 0");
println!("\nTest 2: After OSC corruption simulation");
simulate_osc_corruption();
println!("Check if these lines align properly:");
println!("Line A");
println!("Line B");
println!("Line C");
println!("\nDo the lines above align at column 0? If not, corruption detected!");
}
fn main() {
println!("=== Terminal Reset Test Demo ===\n");
demonstrate_detection();
println!("\n=== Testing Soft Reset ===");
reset_terminal_line_discipline();
println!("Soft reset applied. Testing alignment:");
println!("Line 1 after soft reset");
println!("Line 2 after soft reset");
println!("Line 3 after soft reset");
println!("\n=== Testing Hard Reset ===");
hard_reset_terminal();
println!("Hard reset applied. Testing alignment:");
println!("Line 1 after hard reset");
println!("Line 2 after hard reset");
println!("Line 3 after hard reset");
println!("\n=== Manual Test Instructions ===");
println!("1. Run this script and observe line alignment");
println!("2. If lines don't align at column 0 after 'OSC corruption simulation',");
println!(" then the reset functions should fix the alignment");
println!("3. Compare before/after reset to see if the fix works");
println!("4. If corruption persists, try the hard reset option");
println!("\n=== Testing Complete ===");
println!("Note: This is a visual test. Look for misaligned text output.");
}