kitten-@-select-window(1)

πŸ’… kitten-@-select-window

okay so bestie, real talk β€” this is the kitten-@-select-window page from the kitten manual, and it's genuinely one of the cutest little commands in the whole remote-control lineup. it's literally just: point at a window, click, done. let me walk you through it 🫢


✨ NAME ✨

kitten-@-select-window β€” visually select a window in the specified tab πŸ’–

like, with your eyes. and your hands. and a mouse. iconique.


πŸŽ€ USAGE πŸŽ€

kitten @ select-window

that's it, that's the whole vibe. no extra args needed, she's low-maintenance πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so what actually happens? it prints out the id of the selected window. that's the entire personality.

and the reason that slaps so hard is that other commands can then be chained to make use of it β€” you grab the id, you pipe it into something else, and suddenly you've got yourself a whole little workflow. main character energy fr fr ✨


πŸ‘‘ OPTIONS πŸ‘‘

okay this is the long part, grab a snack πŸ“

  • --match, -m β€” the tab to match. match specs look like field:query, where field can be one of: id, index, title, window_id, window_title, pid, cwd, cmdline env, var, state, session and recent. query is the thing you're matching against β€” and it can be either a number or a regular expression, and you can combine them using Boolean operators. spicy πŸ”₯

the special value all matches all tabs. yes, all of them. every last one.

for the numeric fields β€” id, index, window_id, pid and recent β€” the expression gets interpreted as a number, not as a regex. and plot twist: negative values for id/window_id match from the highest id number down, and in particular, -1 is the most recently created tab/window. so -1 is basically "the baby of the family" 😭

when you use title or id, the command first looks for a matching tab, and if it doesn't find one it looks for a matching window β€” and then uses the tab that window lives in. sneaky but fair.

you can also use window_id and window_title to match the tab that contains the window with that id or title. nesting doll realness πŸͺ†

the index number matches the nth tab in the currently active OS window. and recent matches recently active tabs in the currently active OS window, where 0 is the currently active tab, 1 is the previously active tab, and so on. a little walk down memory lane 🌸

the field session matches tabs that were created in the specified session. use the expression ^$ to match windows that were not created in a session, and . to match the currently active session, and ~ to match either the currently active session or the last active session when no session is active. three little magic strings, iykyk ✨

when you're using the env field to match on environment variables, you can specify only the environment variable name or a name and value, for example env:MY_ENV_VAR=2. tabs containing any window with the specified environment variables get matched. similarly, var matches tabs containing any window with the specified user variable. same energy, different field πŸ’œ

the field state matches on the state of the tab. supported states are: active, focused, needs_attention, parent_active, parent_focused and focused_os_window. active tabs are the tabs that are active in their parent OS window. there is only one focused tab and it's the tab to which keyboard events are delivered. if no tab is focused, the last focused tab is matched. and focused_os_window matches all tabs in the currently focused OS window. very demure, very mindful πŸ‘‘

  • --response-timeout [=60] β€” the time in seconds to wait for the user to select a window. default is 60, so if you walk away mid-pick that's on you bestie πŸ™ˆ
  • --self [=no] β€” select a window from the tab containing the window this command is run in, instead of the active tab. defaults to no. self-centered in the best way πŸ’…
  • --title β€” a title that will be displayed to the user to describe what this selection is for. like a little label on your little picker. so thoughtful πŸŽ€
  • --exclude-active [=no] β€” exclude the currently active window from the list of windows to pick. defaults to no. no repeats, we respect the current main character 🌈
  • --reactivate-prev-tab [=no] β€” when the selection is finished, the tab in the same OS window that was activated before the selection will be reactivated. the last activated OS window will also be refocused. defaults to no. it's giving "put it back the way you found it" 🧚
  • --help, -h [=no] β€” show help for this command. defaults to no. iconic behaviour honestly ⭐

🌟 GLOBAL OPTIONS 🌟

these bad boys apply across the board, not just to this one command. big "applies to the whole friend group" energy 🫢

  • --to β€” an address for the kitty instance to control. corresponds to the address given to the kitty instance via the --listen-on option or the listen_on setting in kitty.conf. if not specified, the environment variable KITTY_LISTEN_ON is checked. and if that's also not found, messages are sent to the controlling terminal for this process β€” i.e. they will only work if this process is run within a kitty window. so don't be shocked when it doesn't work outside, bestie πŸ’€
  • --password β€” a password to use when contacting kitty. this will cause kitty to ask the user for permission to perform the specified action, unless the password has been accepted before or is pre-configured in kitty.conf. to use a blank password, specify --use-password as always. consent is key πŸ”
  • --password-file [=rc-pass] β€” a file from which to read the password. trailing whitespace is ignored. relative paths are resolved from the kitty configuration directory. use - to read from STDIN. use fd:num to read from the file descriptor num. used if no --password is supplied. defaults to checking for the rc-pass file in the kitty configuration directory. file-based, lowkey elegant πŸŽ€
  • --password-env [=KITTY_RC_PASSWORD] β€” the name of an environment variable to read the password from. used if no --password-file is supplied. defaults to checking the environment variable KITTY_RC_PASSWORD. environ- girlies rise 🌱
  • --use-password [=if-available] β€” if no password is available, kitty will usually just send the remote control command without a password. this option can be used to force it to always or never use the supplied password. if set to always and no password is provided, the blank password is used.

choices: if-available, always, never. pick your fighter πŸ’…


⚠️ quick vibe check: those last few password options are literally about access control, so don't go setting --use-password=always with a blank password unless you actually, genuinely, fr fr mean it. kitty is trusting you here 😭

and that's the whole page, bestie!! you know it, you love it, you're gonna go select some windows with it πŸ’–βœ¨

kitten Manual β€” version 0.49.2 β€” dated Oct 01, 2026 πŸ¦‹ that's the source, the version and the date all wrapped up in a bow πŸŽ€ mwah, go forth and select πŸ‘‘

πŸ“¦ where this page comes from