taikutaiku
User GuidePluginsAPI Reference

Mobile

Using taiku on phones and tablets.

Taiku works on phones and tablets through any mobile browser, with no app install required. The interface adapts to touch input and small screens while preserving full terminal functionality. You can join a session, type commands, copy output, and interact with tunneled previews, all from your phone.

Single-tile view

On desktop, taiku displays a tiled workspace where multiple terminals sit side by side. On mobile, the screen is too narrow for meaningful tiling, so taiku switches to a single-tile view: one terminal fills the screen at a time.

To switch between terminals, swipe left or right, or tap the dot navigation bar at the bottom of the screen. Each dot represents one terminal or tile in the session. The currently active tile is highlighted.

This detection is based on both viewport width and touch capability. A narrow browser window on a desktop machine does not trigger mobile mode; the device must also report touch support. The breakpoint is 767 pixels wide. This avoids accidental mobile mode when resizing a desktop browser window.

The touch keyboard bar

Mobile virtual keyboards lack many keys that terminals need constantly: Escape, Tab, Control combinations, pipe characters, tildes. Taiku adds a keyboard bar above the virtual keyboard that provides quick access to all of these.

The keyboard bar is organized into fan groups. Each group is a single button on the bar that expands into a set of related keys when you interact with it. The interaction model has two modes:

Quick tap fires the most recently used key in that group (or the default if you have not used the group yet). This is optimized for repeated actions. If you just sent Ctrl+C, tapping the Ctrl group again sends Ctrl+C immediately without opening the fan.

Hold and slide opens the full fan. Hold your finger on a group for about 200 milliseconds, and the fan expands upward, showing all available keys. Slide your finger to the key you want and release. The fan closes and the selected key is sent. If you start sliding before the hold threshold, the fan opens immediately.

Some groups behave differently. The Ctrl and Opt groups support sticky mode: a single tap arms the modifier, and the next key you type on the virtual keyboard is combined with that modifier. Tap the Ctrl group once, then type c on the keyboard, and Ctrl+C is sent. Tap the Ctrl group again to disarm it, or it disarms automatically after the next keypress.

The arrow and symbol groups use pin mode: tapping toggles the fan open or closed, and it stays open until you dismiss it. This is useful when you need to send several arrow keys in succession (navigating command history or moving through a file in vim, for example).

Available fan groups

Esc sends the Escape key. This is a simple button with no fan.

Tab expands to Tab, Enter (insert newline without executing), and literal \n. The enter variant uses Ctrl+V Ctrl+J to insert a newline in readline-compatible shells without submitting the command.

Ctrl (^) provides the most common control combinations:

  • C (Ctrl+C, interrupt)
  • D (Ctrl+D, EOF)
  • Z (Ctrl+Z, suspend)
  • L (Ctrl+L, clear screen)
  • R (Ctrl+R, reverse search)
  • O (Ctrl+O)
  • B (Ctrl+B)

Opt provides Alt/Option key combinations for word-level editing:

  • Backspace (delete word backward)
  • B (move back one word)
  • F (move forward one word)
  • D (delete word forward)
  • . (insert last argument from previous command)

Arrows provides directional navigation: up, down, left, right, and Shift+Tab. This group uses pin mode, so tapping it keeps the arrows visible for repeated use.

Symbol groups are split across four fans to keep each one manageable:

  • !# contains !, @, #, $, %, ^, &, *
  • () contains all bracket types: (, ), [, ], {, }, <, >
  • `~ contains backtick, tilde, dash, underscore, equals, plus, backslash, pipe
  • ,.; contains comma, period, semicolon, colon, single quote, double quote, underscore, question mark

Sel opens the selection and clipboard group: Paste, Copy All (copies the entire terminal buffer), Line selection mode, and Character selection mode.

Tools provides Undo (Ctrl+_), Clips (clipboard history), and Upload (file import).

Text selection

Selecting text in a terminal on a touch device is inherently awkward. The terminal intercepts touch events for scrolling and interaction, and the browser's built-in text selection does not understand terminal line boundaries. Taiku solves this with explicit selection modes, accessible from the Sel fan group.

Off is the default. Touch events interact with the terminal normally: scrolling, tapping to focus, and so on. No text is selected.

Line mode selects whole lines. Tap a line to select it, or drag across multiple lines to select a range. This is the fastest way to copy terminal output that spans several lines, like the output of ls or a build log. Selected text is automatically copied to the clipboard.

Character mode enables precise drag selection. Press and drag across the terminal to select specific characters. This is useful for copying a single value from a line of output, like a URL, hash, or filename. Selected text is copied on release.

After making a selection, the mode remains active so you can make additional selections without re-opening the fan. Tap the corresponding mode button again (or tap "Off") to return to normal terminal interaction.

Responsive panels

On desktop, panels like peek, tunnels, and chat appear as sidebars alongside the terminal. On mobile, these panels appear as bottom sheets that slide up from the bottom of the screen. They overlay the terminal rather than displacing it, and you can dismiss them by swiping down or tapping outside.

The file viewer expands to full screen on mobile when opened, since a split view would be too narrow to be useful on a phone screen.

Chat works the same way as on desktop, but appears as a bottom sheet. You can send messages, see presence indicators, and receive notifications.

Viewport handling

Virtual keyboards on mobile devices resize the visible area of the page. Without careful handling, the active terminal can slide behind the keyboard, making it impossible to see what you are typing.

Taiku tracks the visual viewport height using the browser's visualViewport API. When the keyboard opens, the viewport shrinks, and taiku detects this by comparing the current viewport height to the initial window height. If the viewport is less than 75% of the full height, taiku considers the keyboard open and adjusts the layout accordingly.

The keyboard bar positions itself directly above the virtual keyboard, and the terminal resizes to fill the remaining space. If the browser tries to scroll the page to accommodate the keyboard (a common behavior on iOS), taiku forces a scroll back to the top to prevent a gap from appearing below the terminal.

This viewport tracking updates on both resize and scroll events, so it responds to keyboard appearances, disappearances, and viewport panning.

Image upload

On mobile, you can upload images directly into the session through the Tools fan group. Tap Upload to open your device's photo picker or camera. The uploaded image is shared with the session and viewable by all participants. This is useful for sharing screenshots of errors on other devices, photos of hardware setups, or any visual context that is faster to capture with a phone camera than to describe in text.

Tips for common mobile workflows

Monitoring a running session. Join the session URL from your phone. The single-tile view shows the active terminal. Swipe to check other terminals if the session has multiple shells. You have full read access without needing to type anything.

Sending a quick command. Tap the terminal to bring up the virtual keyboard. Type the command and hit enter. For commands that need special characters (pipes, redirects, tildes), use the symbol fan groups rather than trying to find them on the virtual keyboard's secondary layouts.

Copying output. Open the Sel fan and switch to Line mode. Tap the lines you want to copy. The text goes to your clipboard automatically. Switch back to Off mode when done.

Interrupting a process. Tap the Ctrl group once (it enters sticky mode), then type c on the virtual keyboard. Or hold the Ctrl group and slide to the C option in the fan. Either approach sends Ctrl+C.

Navigating command history. Tap the arrow group to pin it open. Tap the up arrow repeatedly to scroll through previous commands. Tap the arrow group button again to dismiss it when done.

Editing a long command. Use the Opt group for word-level navigation. Hold and slide to B to jump back one word, F to jump forward, or Backspace to delete the previous word. This is much faster than holding the left arrow key.

Working with vim or other full-screen programs. The Esc button is always visible on the keyboard bar for mode switching. The arrow pin group provides sustained navigation. For insert-mode typing, the regular virtual keyboard works normally.

On this page