20260619
This commit is contained in:
46
src/main.rs
Normal file
46
src/main.rs
Normal file
@@ -0,0 +1,46 @@
|
||||
// Entry point. Wires the Slint UI to the config store, system sampler and
|
||||
// SSH session manager.
|
||||
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
mod app;
|
||||
mod config;
|
||||
mod debug_log;
|
||||
mod i18n;
|
||||
mod keychain;
|
||||
mod known_hosts;
|
||||
mod proxy;
|
||||
mod serial;
|
||||
mod sftp;
|
||||
mod ssh;
|
||||
mod ssh_config;
|
||||
mod system;
|
||||
mod telnet;
|
||||
|
||||
fn main() -> anyhow::Result<()> {
|
||||
let log_path = debug_log::init();
|
||||
|
||||
// ── IME policy ───────────────────────────────────────────────────────────
|
||||
// NOTE: We deliberately DO **NOT** call `ImmDisableIME` here.
|
||||
//
|
||||
// An earlier version disabled the IME for the whole Slint event-loop thread
|
||||
// to work around a vim `:q!` glitch (Chinese IMEs intercept letter keys and,
|
||||
// on a Shift press, discard the in-flight pinyin). But disabling the IME
|
||||
// also makes 中文输入 completely impossible — there is no composition window
|
||||
// at all, which is exactly the "无法输入任何中文" bug.
|
||||
//
|
||||
// Chinese input now flows through the hidden `ime-input` TextInput in
|
||||
// terminal_view.slint: composition happens there, and committed text is
|
||||
// forwarded to the PTY via the `edited` callback. The vim/Shift side-effects
|
||||
// are handled instead by the C0-marker + 3-layer Backspace filters in
|
||||
// `app::on_send_key`, so we no longer need (and must not use) ImmDisableIME.
|
||||
|
||||
if let Err(err) = app::run() {
|
||||
tracing::error!(error = %format!("{err:#}"), "application exited with error");
|
||||
return Err(err);
|
||||
}
|
||||
if let Some(path) = log_path.filter(|_| debug_log::log_paths_enabled()) {
|
||||
tracing::debug!(log = %path.display(), "application exited normally");
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user