Tray-Menü listet alle Projekte mit Icon: Klick startet („starten") oder holt das laufende Terminal nach vorn („zeigen"); Session-Watcher baut das Menü bei Status-/Listenänderung neu
This commit is contained in:
@@ -67,6 +67,22 @@ pub fn set_dock_icon(path: &str) {
|
||||
}
|
||||
}
|
||||
|
||||
/// Holt das Terminal-Fenster eines laufenden Projekts in den Vordergrund:
|
||||
/// aktiviert den Terminal-Prozess über seine PID. Aktivierung ist seit
|
||||
/// macOS 14 kooperativ — die Tray-App tritt sie vorher ab.
|
||||
pub fn focus_terminal(pid: u32) {
|
||||
use objc2::MainThreadMarker;
|
||||
use objc2_app_kit::{NSApplication, NSApplicationActivationOptions, NSRunningApplication};
|
||||
let Some(term) = NSRunningApplication::runningApplicationWithProcessIdentifier(pid as i32)
|
||||
else {
|
||||
eprintln!("Terminal-Prozess {pid} nicht gefunden");
|
||||
return;
|
||||
};
|
||||
let mtm = MainThreadMarker::new().expect("focus_terminal läuft nicht auf dem Main-Thread");
|
||||
NSApplication::sharedApplication(mtm).yieldActivationToApplication(&term);
|
||||
term.activateWithOptions(NSApplicationActivationOptions::ActivateAllWindows);
|
||||
}
|
||||
|
||||
/// Baut das Terminal-Fenster des Terminal-Prozesses. Die PTY entsteht erst,
|
||||
/// wenn das Fenster geladen ist und `term_start` ruft — so gehen keine
|
||||
/// Ausgaben verloren, bevor der Event-Listener steht.
|
||||
|
||||
Reference in New Issue
Block a user