User guide / Install and run

Windows support

Development reference · View source

Runyte runs natively on x86-64 Windows 11 24H2 or later, inside Windows Terminal. The rest of this guide applies to Windows too; this section lists what is missing, what is limited, and what works differently.

Release ZIP. Releases from 0.3.2 onward include an x86-64 Windows ZIP with runyte.exe, the configuration example, and licence material.

  • Its hash is in SHA256SUMS. Compare Get-FileHash -Algorithm SHA256 <archive.zip> with that entry before extracting.
  • Executables are unsigned.
  • The ZIP does not bundle the x64 Microsoft Visual C++ runtime (VCRUNTIME140.dll). Install Microsoft’s x64 Visual C++ Redistributable if it is absent.

Building from source needs Rust 1.88 or newer and Visual Studio Build Tools with the C++ toolchain and Windows SDK. The bundled grammars require the C compiler.

cargo build --release --locked
.\target\release\runyte.exe --ide README.md

Not available on Windows

  • The recent-root and worktree shortcuts in the session manager’s Ctrl-o directory chooser. The chooser itself accepts drive paths and backslashes.
  • :session-stop and --session-stop without a workspace. Name the workspace by ID, name, or path.
  • Git and language servers installed as .cmd, .bat, or .ps1 wrappers. Only native .exe and .com executables are used. To run a script-based language server, configure its interpreter as the executable and pass the script in args.
  • Working directories whose ordinary Windows spelling is 260 UTF-16 units or longer. The workspace, terminals, Git, language servers, :pipe, and the :quit-here destination all refuse them. Opening files at such paths is not affected.
  • UNC working directories for cmd.exe terminals. Use a shell that supports them.
  • Language-server file URIs for network shares, device paths, and alternate data streams.
  • Private runtime storage (logs, language-server approvals, the MCP adapter, the :quit-here handoff) anywhere other than local NTFS.
  • Preserving unsaved editor state when the outer console window is closed. Ctrl+C and Ctrl+Break in the outer console request an orderly shutdown, but Windows may end the process before cleanup finishes after a close.
  • Starting a detached persistent host when the launching process runs in a job that forbids breakaway. -a and --session-restart report the refusal and leave no new host running, and a restart checks this before stopping the old host. Attaching to a host that is already running still works.

Not validated

  • ARM64 Windows
  • MinGW builds
  • Windows versions older than 11 24H2
  • Outer terminals other than Windows Terminal
  • Network shares and long-path filesystem operations
  • PowerShell 7 for the :quit-here wrapper
  • Keyboard layouts or IMEs beyond the automated input cases

When one of these fails, recoverable edits are preserved.

Differences from Linux and macOS

  • Configuration defaults to %APPDATA%\runyte\config.yaml. A nonempty XDG_CONFIG_HOME takes precedence, and --config selects an explicit file.
  • Terminals use ConPTY and start %COMSPEC%, falling back to cmd.exe. Command lines use native Windows quoting; see Windows terminals .
  • :pipe runs Windows PowerShell rather than /bin/sh; see Shell pipes .
  • :quit-here needs the PowerShell 5.1 wrapper runyte.ps1 ; see change the shell directory on exit .
  • Git is enabled when git.exe or git.com is found on an absolute PATH entry accepted by PATHEXT. Without Git, Git commands are disabled with a reason and editing still works. Restart Runyte after installing Git or changing PATH.
  • Paste: Windows Terminal reserves Ctrl-v for its own paste action. Runyte recognizes the empty paste event some versions send for an image, even while a multi-key command waits for its next key; if the terminal sends nothing, use Alt-v. Bracketed paste arrives as text in every mode, so pasted lines never run editor commands.
  • Saves replace existing files with ReplaceFileW, which keeps their metadata. Another program opening the file during a save can briefly get a missing-file or sharing error. The wrote message means the whole document is on disk.
  • Two hosts for one project can run at the same time. The session manager and the session strip show them as separate rows, and selecting one by path or ID is refused as ambiguous; use its name or pick the row.
  • :session-clean is available inside the editor. On Linux and macOS use runyte --session-clean.
  • A bare runyte with mode: mux attaches only to a project it can discover, and otherwise refuses without creating a workspace, as a bare -a does. -a DIRECTORY makes that directory a workspace; --init only creates one.
  • --serve stops the host when the process that launched it exits.
  • Plugins can request the processes capability for managed native helper processes.
  • workspace.state_anchor chooses where retained state lives; see Windows state anchor .
  • External programs for binary files open differently; see Opening binary files on Windows .