Skip to main content

Typio: Make Your Terminal Type Like a Human

Project description

Typio: Make Your Terminal Type Like a Human


built with Python3 GitHub repo size PyPI version

Overview

Typio is a lightweight Python library that prints text to the terminal as if it were being typed by a human. It supports multiple typing modes (character, word, line, sentence, typewriter, and adaptive), configurable delays and jitter for natural variation, and seamless integration with existing code via a simple function or a decorator. Typio is designed to be minimal, extensible, and safe, making it ideal for demos, CLIs, tutorials, and storytelling in the terminal.

PyPI Counter
Github Stars
Branch main dev
CI
Code Quality CodeFactor

Installation

Source Code

PyPI

Usage

Function

Use type_print function to print text with human-like typing effects. You can control the typing speed, randomness, mode, and output stream.

Example

from typio import type_print
from typio import TypeMode

type_print("Hello, world!")

type_print(
    "Typing with style and personality.",
    delay=0.06,
    jitter=0.02,
	end="\n",
    mode=TypeMode.ADAPTIVE,
)

You can also redirect the output to any file-like object:

with open("output.txt", "w") as file:
    type_print("Saved with typing effects.", file=file)

Parameters

Name Type Description Default
text str Text to be printed --
delay float Base delay (seconds) between emitted units 0.04
jitter float Random delay variation (seconds) 0
end str Ending character(s) \n
mode TypeMode | Callable Typing mode (built-in or custom) TypeMode.CHAR
file TextIOBase Output stream sys.stdout

Built-in Modes

Mode Description
TypeMode.CHAR Emit text character by character
TypeMode.WORD Emit text word by word, preserving whitespace
TypeMode.LINE Emit text line by line
TypeMode.SENTENCE Emit text character by character with longer pauses after ., !, ?
TypeMode.TYPEWRITER Emit text character by character with longer pauses after newlines
TypeMode.ADAPTIVE Emit text with adaptive delays based on character type (spaces, punctuation, alphanumeric)

Decorator

Use the @typestyle decorator to apply typing effects to all print calls inside a function, without changing the function's implementation.

Example

from typio import typestyle
from typio import TypeMode

@typestyle(delay=0.05, mode=TypeMode.TYPEWRITER)
def intro():
    print("Welcome to Typio.")
    print("Every print is typed.")

intro()

Parameters

Name Type Description Default
delay float Base delay (seconds) between emitted units 0.04
jitter float Random delay variation (seconds) 0
mode TypeMode | Callable Typing mode (built-in or custom) TypeMode.CHAR

Custom Mode

Typio also allows defining custom typing modes.

A custom mode is a callable that receives a typing context and the text being printed.

Example

This custom mode, named dramatic, adds exaggerated pauses after punctuation to create a dramatic typing effect.

from typio import TypioContext

def dramatic(ctx: TypioContext, text: str):
    for ch in text:
        ctx.emit(ch)
        if ch in ".!?":
            ctx.sleep(delay=ctx.delay * 6)

Usage with type_print function:

type_print(
    "Wait... what?!",
    mode=dramatic,
    delay=0.05,
    jitter=0.02,
)

Usage with @typestyle decorator:

@typestyle(delay=0.06, mode=dramatic)
def demo():
    print("This is serious.")
    print("Very serious!")

demo()

Parameters

This table describes the TypioContext API, which is the interface exposed to custom typing modes for emitting text, controlling timing, and accessing delay settings.

Name Type Description
emit(text) method Emit a text fragment using typing effects
sleep(delay=None, jitter=None) method Pause execution with optional delay and jitter override
flush() method Flush the underlying output stream
delay property Base delay in seconds
jitter property Jitter value in seconds

CLI

Typio provides a simple command line interface for printing text with typing effects.

Example

> typio --text="Hello world!" --mode=typewriter --delay=0.03

Issues & Bug Reports

Just fill an issue and describe it. We'll check it ASAP!

  • Please complete the issue template

Show Your Support

Star This Repo

Give a ⭐️ if this project helped you!

Donate to Our Project

Bitcoin

1KtNLEEeUbTEK9PdN6Ya3ZAKXaqoKUuxCy

Ethereum

0xcD4Db18B6664A9662123D4307B074aE968535388

Litecoin

Ldnz5gMcEeV8BAdsyf8FstWDC6uyYR6pgZ

Doge

DDUnKpFQbBqLpFVZ9DfuVysBdr249HxVDh

Tron

TCZxzPZLcJHr2qR3uPUB1tXB6L3FDSSAx7

Ripple

rN7ZuRG7HDGHR5nof8nu5LrsbmSB61V1qq

Binance Coin

bnb1zglwcf0ac3d0s2f6ck5kgwvcru4tlctt4p5qef

Tether

0xcD4Db18B6664A9662123D4307B074aE968535388

Dash

Xd3Yn2qZJ7VE8nbKw2fS98aLxR5M6WUU3s

Stellar

GALPOLPISRHIYHLQER2TLJRGUSZH52RYDK6C3HIU4PSMNAV65Q36EGNL

Zilliqa

zil1knmz8zj88cf0exr2ry7nav9elehxfcgqu3c5e5

Coffeete

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Unreleased

0.4 - 2026-02-19

Added

  • Command line interface

Changed

  • _emit method modified
  • README.md updated
  • Test system modified

0.3 - 2026-02-11

Added

  • TypioContext class

Changed

  • Test system modified
  • README.md updated
  • _TypioPrinter class all attributes changed to private
  • _emit method modified
  • _sleep function modified

0.2 - 2026-02-04

Changed

  • README.md updated
  • end parameter added to type_print function
  • Test system modified

0.1 - 2026-01-31

Added

  • type_print function
  • typestyle decorator
  • CHAR mode
  • WORD mode
  • LINE mode
  • SENTENCE mode
  • TYPEWRITER mode
  • ADAPTIVE mode

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

typio-0.4.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

typio-0.4-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file typio-0.4.tar.gz.

File metadata

  • Download URL: typio-0.4.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for typio-0.4.tar.gz
Algorithm Hash digest
SHA256 fbb8aed5b2ab10c1c8dd88de66929c9539994a34487ce3df80bb85109dadc22a
MD5 4e59e92d3bf9a45c79cf78ff02032374
BLAKE2b-256 a372677b45b8601fea00050fbe5b3b1584bd5e6aa8618010ee0d5e5c6e6cffb0

See more details on using hashes here.

File details

Details for the file typio-0.4-py3-none-any.whl.

File metadata

  • Download URL: typio-0.4-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for typio-0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 89e6e4ff0acee981c5f350e6dc02767ffb2450e15021befe70357b8e8dfcace3
MD5 b4be64f9ec1a284e09bc90552d0fab34
BLAKE2b-256 38aebc06251a63b9ad9c2dac6865913c4c97b1f06bf69eb01d614aea1d26e47e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page