Migrates quick-zeal and spawn-term from compositor-specific APIs (hyprctl, kdotool, niri msg) to the unified active-window utility. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
32 lines
713 B
Nix
32 lines
713 B
Nix
{pkgs, ...}:
|
|
pkgs.writeNushellApplication {
|
|
name = "spawn-term";
|
|
runtimeInputs = [pkgs.harbor.active-window];
|
|
|
|
text = ''
|
|
let window = (active-window | from json)
|
|
let window_info = {
|
|
is_kitty: ($window.class? == "kitty"),
|
|
pid: $window.pid?
|
|
}
|
|
|
|
if $window_info.is_kitty {
|
|
let kitty_pid = $window_info.pid
|
|
if ($kitty_pid | is-empty) {
|
|
kitty
|
|
exit 0
|
|
}
|
|
|
|
let shell_pid = (ps | where ppid == $kitty_pid | where name != "kitten" | get pid | first)
|
|
if ($shell_pid | is-empty) {
|
|
kitty
|
|
exit 0
|
|
}
|
|
|
|
let path = ($"/proc/($shell_pid)/cwd" | path expand)
|
|
kitty --directory $path
|
|
} else {
|
|
kitty
|
|
}
|
|
'';
|
|
}
|