kitten-@-launch(1)
π kitten-@-launch(1) β kitten Manual π
Okay bestie, this is the kitten-@-launch(1) page from the kitten Manual. We're launching processes in new windows/tabs and it's giving very useful. β¨
β¨ Name β¨
kitten-@-launch β Run an arbitrary process in a new window/tab
π οΈ Usage π οΈ
kitten @ launch [CMD ...]
π Description π
So this prints out the id of the newly opened window. Any command line arguments are assumed to be the command line used to run in the new window; if none are provided, the default shell is run. For example:
kitten @ launch --title=Email mutt
Lowkey iconic. π¦ Periodt. π
π Options π
--match,-mβ The tab to match. Match specifications are of the form:field:query. Wherefieldcan be one of:id,index,title,window_id,window_title,pid,cwd,cmdline env,var,state,sessionandrecent.queryis the expression to match. Expressions can be either a number or a regular expression, and can be combined using Boolean operators.- The special value
allmatches all tabs. - For numeric fields:
id,index,window_id,pidandrecent, the expression is interpreted as a number, not a regular expression. Negative values forid/window_idmatch from the highest id number down, in particular,-1is the most recently created tab/window. - When using
titleorid, first a matching tab is looked for, and if not found a matching window is looked for, and the tab for that window is used. - You can also use
window_idandwindow_titleto match the tab that contains the window with the specified id or title. - The
indexnumber is used to match the nth tab in the currently active OS window. Therecentnumber matches recently active tabs in the currently active OS window, with zero being the currently active tab, one the previously active tab and so on. - The field
sessionmatches 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. - When using the
envfield 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 are matched. Similarly,varmatches tabs containing any window with the specified user variable. - The field
statematches on the state of the tab. Supported states are:active,focused,needs_attention,parent_active,parent_focusedandfocused_os_window. Active tabs are the tabs that are active in their parent OS window. There is only one focused tab and it is the tab to which keyboard events are delivered. If no tab is focused, the last focused tab is matched. The valuefocused_os_windowmatches all tabs in the currently focused OS window. - Note that you can use the
kitten @ lscommand to get a list of tabs.
- The special value
--wait-for-child-to-exit [=no]β Wait until the launched program exits and print out its exit code. The exit code is printed out instead of the window id. If the program exited normally its exit code is printed, which is always greater than or equal to zero. If the program was killed by a signal, the symbolic name of theSIGNALis printed, if available, otherwise the signal number with a leading minus sign is printed.--response-timeout [=86400]β The time in seconds to wait for the started process to exit, when using the--wait-for-child-to-exitoption. Defaults to one day.--no-response [=no]β Do not print out the id of the newly created window.--self [=no]β If specified the tab containing the window this command is run in is used instead of the active tab.--source-windowβ A match expression to select the window from which data such as title, colors, env vars, screen contents, etc. are copied. When not specified the currently active window is used. Seesearch_syntaxfor the syntax used for specifying windows.--title,--window-titleβ The title to set for the new window. By default, title is controlled by the child process. The special valuecurrentwill copy the title from the--source-window.--tab-titleβ The title for the new tab if launching in a new tab. By default, the title of the active window in the tab is used as the tab title. The special valuecurrentwill copy the title from the tab containing the--source-window.--type [=window]β Where to launch the child process:windowβ A new kitty window in the current tab.tabβ A new tab in the current OS window. Not available when thelaunch <launch>command is used in startup sessions.os-windowβ A new operating system window. Not available when thelaunch <launch>command is used in startup sessions.overlayβ An overlay window covering the current active kitty window.overlay-mainβ An overlay window covering the current active kitty window. Unlike a plain overlay window, this window is considered as a main window which means it is used as the active window for getting the current working directory, the input text for kittens, launch commands, etc. Useful if this overlay is intended to run for a long time as a primary window.backgroundβ The process will be run in the background, without a kitty window. Note that if--allow-remote-controlis specified theKITTY_LISTEN_ONenvironment variable will be set to a dedicated socket pair file descriptor that the process can use for remote control.clipboard,primaryβ These two are meant to work with--stdin-sourceto copy data to the system clipboard or primary selection.os-panelβ Similar toos-window, except that it creates the new OS Window as a desktop panel. Only works on platforms that support this, such as Wayland compositors that support the layer shell protocol. Use the--os-paneloption to configure the panel.- Choices:
window,background,clipboard,os-panel,os-window,overlay,overlay-main,primary,tab.
--dont-take-focus,--keep-focus [=no]β Keep the focus on the currently active window instead of switching to the newly opened window.--cwdβ The working directory for the newly launched child. Use the special valuecurrentto use the working directory of the--source-window. The special valuelast_reporteduses the last working directory reported by the shell (needsshell_integrationto work). The special valueoldestworks likecurrentbut uses the working directory of the oldest foreground process associated with the currently active window rather than the newest foreground process. Finally, the special valuerootrefers to the process that was originally started when the window was created.- When opening in the same working directory as the current window causes the new window to connect to a remote host, you can use the
--hold-after-sshflag to prevent the new window from closing when the connection is terminated.
- When opening in the same working directory as the current window causes the new window to connect to a remote host, you can use the
--add-to-sessionβ Add the newly created window/tab to the specified session. Use.to add to the session of the--source-window, if any. See sessions for what a session is and how to use one. By default, the window is added to the session of the--source-windowwhen--cwdis set to use the working directory from that window, otherwise the newly created window does not belong to any session. To force adding to no session, use the value!. Adding a newly created window to a session is purely temporary, it does not change the actual session file, for that you have to resave the session. Note that using this flag in a launch command within a session file has no effect as the window is always added to the session belonging to that file.--envβ Environment variables to set in the child process. Can be specified multiple times to set different environment variables. Syntax:name=value. Usingname=will set to empty string and justnamewill remove the environment variable.--varβ User variables to set in the created window. Can be specified multiple times to set different user variables. Syntax:name=value. Usingname=will set to empty string.--hold [=no]β Keep the window open even after the command being executed exits, at a shell prompt. The shell will be run after the launched command exits.--copy-colors [=no]β Set the colors of the newly created window to be the same as the colors in the--source-window.--copy-cmdline [=no]β Ignore any specified command line and instead use the command line from the--source-window.--copy-env [=no]β Copy the environment variables from the--source-windowinto the newly launched child process. Note that this only copies the environment when the window was first created, as it is not possible to get updated environment variables from arbitrary processes. In particular, this means, if you are running a shell in the window and the shell has set env vars in its rc files, these will not be copied. To copy that environment, use either the clone-in-kitty feature or the kitty remote control feature with--copy-env.--location [=default]β Where to place the newly created window when it is added to a tab which already has existing windows in it.afterandbeforeplace the new window before or after the active window.neighboris a synonym forafter. Also applies to creating a new tab, where the value ofafterwill cause the new tab to be placed next to the current tab instead of at the end. The values ofvsplit,hsplitandsplitare only used by the splits layout and control if the new window is placed in a vertical, horizontal or automatic split with the currently active window. The default is to place the window in a layout dependent manner, typically, after the currently active window. See--next-toto use a window other than the currently active window.
β¦and the choices for that one are default, after, before, first, hsplit, last, neighbor, split, vsplit β iconic lineup, no notes π
--next-toβ a match expression that picks which window the new window gets created next to π«Ά the syntax for specifying windows lives insearch_syntax. If you don't specify anything it just defaults to the active window, obviously. Two little gotchas tho: when you use it via remote control it gets ignored unless the matched window is in the target tab (which defaults to the active tab), and when you're using--typeoftab, the tab gets created in the OS Window that contains the matched window. k.--bias[=0]β the bias that alters the size of the window π₯ it controls what fraction of the available space the window takes. What bias actually means depends on your current layout, so buckle up bestie:- Splits layout: bias is read as a percentage between 0 and 100. When you split a window into two, the new window takes the specified fraction of the space that was allotted to the original window, and the original window takes the remainder.
- Vertical/horizontal layout: bias is read as adding to / subtracting from the normal size of the window. Should be a number between -90 and 90 β that number is the percentage of the OS Window size that gets added to the window size. So like, if a window would normally have been size 50 in the layout inside an OS Window that's size 80 high, and
--bias -10is used, it becomes approximately size 42 high. Note that sizes are approximations β you literally cannot use this method to create windows of fixed sizes, sorry π - Tall layout: if the window being created is the first window in a column, the bias is interpreted as a percentage, same as for the splits layout, splitting the OS Window width between columns. If the window is a second or subsequent window in a column, the bias is interpreted as adding/subtracting from the window size, same as for the vertical layout above.
- Fat layout: same as tall layout except it goes by rows instead of columns.
- Grid layout: bias is interpreted the same way as for the Vertical and Horizontal layouts β as something added/subtracted to the normal size. But since a grid layout has rows and columns, the bias on the first window in a column operates on the columns, and any later windows in that column operate on the row. So for example, if you bias the first window in a grid layout it changes the width of the first column, the second window changes the width of the second column, the third window changes the height of the second row, and so on.
- tiny lore drop: the bias option was introduced in kitty version 0.36.0 β¨
--allow-remote-control[=no]β programs running in this window can control kitty, even if remote control is not enabled inkitty.confπ that said, any program with the right level of permissions can still write to the pipes of any other program on the same computer and therefore can control kitty β so this isn't some magic shield, fr fr. It can be useful to block programs running on other computers (for example, over SSH) or as other users. See--remote-control-passwordfor ways to restrict actions allowed by remote control.--remote-control-passwordβ restrict which actions remote control is allowed to take π works just likeremote_control_passwordβ you specify a password and a list of actions, exactly as forremote_control_password. For example:
--remote-control-password '"my passphrase" get-* set-colors'
This password is in effect for this window only. Note that any passwords you've defined for remote_control_password in kitty.conf are also in effect, and you can override them by using the same password here. You can also disable all the remote_control_password global passwords for this window by using:
--remote-control-password '!'
This option only takes effect if --allow-remote-control is also specified. Can be specified multiple times to create multiple passwords. Added to kitty in version 0.26.0 π§
--stdin-source[=none]β pass the screen contents as STDIN to the child process π₯ here's the menu of what you can feed it:@selectionβ the currently selected text in the--source-window.@screenβ the contents of the--source-window.@screen_scrollbackβ same as@screen, but it includes the scrollback buffer as well.@alternateβ the secondary screen of the--source-window. For example, if you run a full screen terminal application, the secondary screen is the screen you return to when you quit the application.@first_cmd_output_on_screenβ the output from the first command run in the shell on screen.@last_cmd_outputβ the output from the last command run in the shell.@last_visited_cmd_outputβ the first output below the last scrolled position viascroll_to_prompt; this needs shell integration to work.- Choices:
none,@alternate,@alternate_scrollback,@first_cmd_output_on_screen,@last_cmd_output,@last_visited_cmd_output,@screen,@screen_scrollback,@selection
--stdin-add-formatting[=no]β when you're using--stdin-source, this adds formatting escape codes π without it, only plain text gets sent.--stdin-add-line-wrap-markers[=no]β when you're using--stdin-source, this adds a carriage return at every line wrap location (i.e. where long lines get wrapped at the screen edges) π super useful if you want to pipe to a program that wants to duplicate the screen layout of the screen.--markerβ creates a marker that highlights text in the newly created window β¨ syntax is the same as for thetoggle_markeraction (see/marks).--os-window-classβ sets theWM_CLASSproperty on X11 and the application id property on Wayland for the newly created OS window when you're using--typeπͺ defaults to whatever the parent kitty process uses, which in turn defaults tokitty.--os-window-nameβ sets theWM_NAMEproperty on X11 for the newly created OS Window when you're using--type. Defaults to--os-window-class.--os-window-titleβ sets the title for the newly created OS window π this title overrides any titles set by programs running in kitty. The special valuecurrentcopies the title from the OS Window containing the--source-window.--os-window-state[=normal]β the initial state for the newly created OS Window.- Choices:
normal,fullscreen,maximized,minimized
- Choices:
--os-window-positionβ the position, for example10x20, on screen at which to place the newly created OS Window π this may or may not work depending on the policies of the desktop environment / window manager. It never works on Wayland. π--logoβ path to a PNG image to use as the logo for the newly created window πΈ seewindow_logo_path. Relative paths are resolved from the kitty configuration directory.--logo-positionβ the position for the window logo. Only takes effect if--logois specified. Seewindow_logo_position.--logo-alpha[=-1]β how much the window logo should be faded into the background. Only takes effect if--logois specified. Seewindow_logo_alpha.--colorβ change colors in the newly launched window π¨ you can either give it a path to a.conffile with the same syntax askitty.confto read the colors from, or specify them individually, like:
--color background=white --color foreground=red
--spacingβ set the margin and padding for the newly created window π«Ά for examplemargin=20orpadding-left=10ormargin-h=30. The shorthand form sets all values, and the*-hand*-vvariants set horizontal and vertical values respectively. Can be specified multiple times. Note that this is ignored for overlay windows, since those use the settings from the base window.--watcher,-wβ path to a Python file π appropriately named functions in this file get called for various events, like when the window is resized, focused or closed. See the section on watchers in the launch command documentation:watchers. Relative paths are resolved relative to the kitty config directory. Global watchers for all windows can be specified withwatcherinkitty.conf.--os-panelβ options to control the creation of desktop panels π₯οΈ takes the same settings as the panel kitten, except for--overrideand--config. Can be specified multiple times. For example, to create a desktop panel at the bottom of the screen that's two lines high:
launch --type os-panel --os-panel lines=2 --os-panel
edge=bottom sh -c "echo; echo; echo hello; sleep 5s"
--hold-after-ssh[=no]β when you're using--cwd=currentor similar from a window that's running the ssh kitten, the new window runs a local shell after disconnecting from the remote host, if this option is specified πΈ--help,-h[=no]β show help for this command π
okay that's a whole lotta options but you're literally doing so good, bestie β keep going, there's more π
β¨ Global options β¨
okay so before we get into the launch-y stuff, there's a whole lil' set of global options that handle talking to kitty itself β the address, the password, the whole vibe check π these apply no matter what you're launching, so pay attention bestie π«Ά
--toβ the address of the kitty instance you wanna control, periodt. This is the same address you handed to kitty via the--listen-onoption or thelisten_onsetting inkitty.conf. If you don't specify it, the env varKITTY_LISTEN_ONgets checked instead π and if that's also missing? The messages just go to the controlling terminal for this process β which means it only works if this process is being run inside a kitty window, iykyk.--passwordβ a password to use when contacting kitty π this makes kitty ask the user for permission to perform the specified action, unless the password has already been accepted before or is pre-configured inkitty.conf. Wanna use a blank password? Specify--use-passwordasalways. iconic.--password-file [=rc-pass]β a file to read the password from π trailing whitespace gets ignored (we don't care about your messy edges, bestie). Relative paths are resolved from the kitty configuration directory. Use-to read from STDIN. Usefd:numto read from the file descriptornum. This one gets used if no--passwordis supplied, and it defaults to checking for therc-passfile in the kitty configuration directory π--password-env [=KITTY_RC_PASSWORD]β the name of an environment variable to read the password from πΈ used if no--password-fileis supplied. Defaults to checking the env varKITTY_RC_PASSWORD. slay.--use-password [=if-available]β okay so if no password is available, kitty will usually just send the remote control command without one, no drama. This option lets you force it to always or never use the supplied password. If you set it toalwaysand no password is provided, the blank password gets used π«Ά- Choices:
if-available,always,never
- Choices:
and that's the whole page, bestie ππ you made it to the end β go forth and remote-control your kitty with main character energy πβ¨ this lil' icon is version 0.49.2, dated Oct 01, 2026, and honestly? she ate. ππ·
π¦ where this page comes from
- arch rolling: kitty 0.49.2-1 Β· GPL-3.0-only
- nixpkgs unstable: kitty-bin 0.49.2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms