Home

Awesome

<p align='center'> <img src="./assets/logo_light.svg#gh-light-mode-only" /> <img src="./assets/logo_dark.svg#gh-dark-mode-only" /> </p> <p align="center"> Automates terminal operations. </p> <p align='center'> <a href="https://github.com/koki-develop/clive/releases/latest"><img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/koki-develop/clive?style=flat"></a> <a href="https://github.com/koki-develop/clive/releases/latest"><img alt="GitHub all releases" src="https://img.shields.io/github/downloads/koki-develop/clive/total?style=flat"></a> <a href="./LICENSE"><img src="https://img.shields.io/github/license/koki-develop/clive?style=flat" /></a> <a href="https://github.com/koki-develop/clive/actions/workflows/ci.yml"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/koki-develop/clive/ci.yml?branch=main&logo=github&style=flat" /></a> <a href="https://codeclimate.com/github/koki-develop/clive/maintainability"><img alt="Code Climate maintainability" src="https://img.shields.io/codeclimate/maintainability/koki-develop/clive?logo=codeclimate&style=flat" /></a> <a href="https://goreportcard.com/report/github.com/koki-develop/clive"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/koki-develop/clive" /></a> <a href="https://codecov.io/github/koki-develop/clive"><img alt="Codecov" src="https://img.shields.io/codecov/c/github/koki-develop/clive?logo=codecov" /></a> </p>

<p align="center"> English | <a href="./README.ja.md">日本語</a> </p>

cLive

:information_source: Prerequisite

cLive requires ttyd (version 1.7.4 or higher) to be installed.
For example, if you are using homebrew, you can install it with brew install.

$ brew install ttyd

See the ttyd documentation for more information.

:zap: Installation

[!NOTE] There are prerequisites for using cLive. See Prerequisite for details.

Homebrew

$ brew install clive

Homebrew Tap

$ brew install koki-develop/tap/clive

go install

$ go install github.com/koki-develop/clive@latest

Releases

Download the binary from the releases page.

:beginner: Getting Started

First, run clive init.

$ clive init
Created ./clive.yml

A file named clive.yml will then be created with the following contents:

# documentation: https://github.com/koki-develop/clive#settings
settings:
  loginCommand: ["bash", "--login"]
  fontSize: 22
  defaultSpeed: 10

# documentation: https://github.com/koki-develop/clive#actions
actions:
  - pause
  - type: echo 'Welcome to cLive!'
  - key: enter

Finally, run clive start to launch the browser and start cLive.

$ clive start

:rocket: Commands

Available commands:

clive init

Create a config file.

$ clive init
FlagDefaultDescription
-c, --config./clive.ymlConfig file name.

clive start

Start cLive actions. See Configuration for the config file.

$ clive start
FlagDefaultDescription
-c, --config./clive.ymlConfig file name.

clive validate

Validate a config file.

$ clive validate
FlagDefaultDescription
-c, --config./clive.ymlConfig file name.

clive completion

Generate the autocompletion script for clive for the specified shell.
See each sub-command's help for details on how to use the generated script.

$ clive completion <shell>

# e.g.
$ clive completion bash
$ clive completion bash --help

Available shells:

:gear: Configuration

The config file consists of actions and settings.

actions

Actions to run.
Available actions:

type

Type characters.

FieldRequiredDefaultDescription
typeYesN/ACharacters to type.
countNo1Number of times to repeat the action.
speedNo10Interval between key typing (milliseconds).
# e.g.
actions:
  - type: echo 'Hello World'
    count: 10 # Optional
    speed: 100 # Optional

key

Enter special keys.
Available keys:

FieldRequiredDefaultDescription
keyYesN/ASpecial key to type.
countNo1Number of times to repeat the action.
speedNo10Interval between key typing (milliseconds).
# e.g.
actions:
  - key: enter
    count: 10 # Optional
    speed: 100 # Optional

ctrl

Press the Ctrl key with other keys.

FieldRequiredDefaultDescription
ctrlYesN/ACharacters to enter with the ctrl key.
countNo1Number of times to repeat the action.
speedNo10Interval between key typing (milliseconds).
# e.g.
actions:
  - ctrl: c # Ctrl+c
    count: 10 # Optional
    speed: 100 # Optional

sleep

Sleep for a specified number of milliseconds.

FieldRequiredDefaultDescription
sleepYesN/ATime to sleep (milliseconds).
# e.g.
actions:
  - sleep: 3000 # Sleep for 3 seconds.

pause

Pause actions.
Press enter to continue.

# e.g.
actions:
  - pause

screenshot

Take a screenshot.
Screenshots are saved in screenshots/.
The directory to save the screenshots can be changed in settings.screenshotsDir.

FieldRequiredDefaultDescription
screenshotNo<ACTION_INDEX>_<yyyymmddHHMMSS>.pngFile name of the screenshot.
# e.g.
actions:
  - screenshot
  - screenshot: foobar.png # Optional

settings

Basic settings.
Available settings:

loginCommand

Login command and args.
Default: ["bash", "--login"].

# e.g.
settings:
  loginCommand: ["zsh", "--login"]

fontSize

Font size.
Default: 22

# e.g.
settings:
  fontSize: 36

fontFamily

Font family.

# e.g.
settings:
  fontFamily: monospace

defaultSpeed

Default interval between key typing.
Default: 10

# e.g.
settings:
  defaultSpeed: 100

skipPauseBeforeQuit

Whether to skip pausing before quitting.
Default: false

# e.g.
settings:
  skipPauseBeforeQuit: true

screenshotsDir

Directory to save screenshots.
Default: screenshots

# e.g.
settings:
  screenshotsDir: path/to/pictures

browserBin

Path to an executable browser binary.
See the go-rod documentation for supported browsers.

# e.g.
settings:
  browserBin: /Applications/Sidekick.app/Contents/MacOS/Sidekick # use Sidekick

headless

Whether to run the browser in headless mode.
Default: false

# e.g.
settings:
  headless: true

width

Window width.

# e.g.
settings:
  width: 1600

height

Window height.

# e.g.
settings:
  height: 800

:book: Examples

For more examples see the examples/ directory.

:coffee: Buy me a coffee

If you like this project, please consider buying me a coffee.

<a href="https://www.buymeacoffee.com/koki.sato"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" width="217px" height="60px"></a>

:memo: License

MIT License