focal

Crates.iofocal
lib.rsfocal
version0.2.8
created_at2026-01-08 19:32:54.697058+00
updated_at2026-01-24 19:02:57.529051+00
descriptionTerminal focus library - focus terminal windows and multiplexer panes
homepage
repositoryhttps://github.com/paradigmxyz/mi6
max_upload_size
id2030937
size150,691
(sslivkoff)

documentation

README

focal

Terminal focus library - focus terminal windows and multiplexer panes.

Features

  • Terminal detection: Identify which terminal emulator owns a TTY
  • Cross-platform activation: Bring terminal windows to front (macOS + Linux)
  • Terminal-specific handlers: Precise tab/pane focusing for iTerm2, Terminal.app, WezTerm, Kitty
  • Multiplexer support: Switch to the correct tmux/zellij/screen pane

Usage

use focal::{focus_session, FocusResult};

// Focus the terminal containing a process
match focus_session(pid, None) {
    FocusResult::Success => println!("Focused!"),
    FocusResult::MuxSwitched { mux, target } => {
        println!("Switched to {mux} {target}");
    }
    FocusResult::NotFound => println!("Terminal not found"),
    _ => {}
}

// With a multiplexer hint (for faster tmux detection)
let _ = focus_session(pid, Some("tmux"));

Supported Terminals

macOS

  • iTerm2 (tab-specific focusing via JXA)
  • Terminal.app (tab-specific focusing via JXA)
  • WezTerm (pane-specific focusing via CLI)
  • Kitty (window-specific focusing via remote control)
  • Ghostty (window-specific focusing via JXA)
  • Generic terminals (Alacritty, etc.) via osascript

Linux

  • WezTerm (pane-specific focusing via CLI)
  • Kitty (window-specific focusing via remote control)
  • Ghostty (window-specific focusing via wmctrl/xdotool/swaymsg/hyprctl)
  • Generic terminals via wmctrl, xdotool, swaymsg, or hyprctl

Supported Multiplexers

  • tmux
  • zellij (planned)
  • screen (planned)
Commit count: 0

cargo fmt