README.md

# Clipboard

[![Hex.pm](https://img.shields.io/hexpm/v/clipboard.svg)](https://hex.pm/packages/clipboard)

Copy and paste from system clipboard.

Sick of `IO.puts(json)` then manually selecting your terminal? Try `Clipboard.copy(json)`!

Wraps ports to system-specific utilities responsible for clipboard access. It uses the default
clipboard utilities on macOS, Linux and Windows but can be configured to call any executable.

## Examples

```elixir
Clipboard.copy("Hello, World!")
"Hello, World!"

"Bye, World!"
|> Clipboard.copy() # Insert into pipelines
|> send_to_api()

# And paste too!
Clipboard.paste()
"Bye, World!"
```

## Options

Clipboard uses these utilities by default.

| OS      | Utilities            |
|---------|----------------------|
| macOS   | `pbcopy` & `pbpaste` |
| Linux   | `xclip`              |
| Windows | `clip`               |

However, you can instruct Clipboard to use another command by setting `config.exs`.

```elixir
config :clipboard,
  unix: [
    copy: {"xsel", ["-i"]},
    paste: {"xsel", ["-o"]},
  ]
```

Supported operating systems are `:macos`, `:unix` and `:windows`.


## Installation

Add `clipboard` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [{:clipboard, ">= 0.0.0", only: [:dev]}]
end
```

Don’t forget to update your dependencies.

```
$ mix deps.get
```

## Caveats

Pasting on Windows doesn’t work out of the box because `clip` only supports copying.

## Links

* [Documentation][1]
* [Hex][2]

## License

Clipboard is released under [MIT][3] license.

[1]: https://hexdocs.pm/clipboard/Clipboard.html

[2]: https://hex.pm/packages/clipboard

[3]: https://github.com/jayjun/clipboard/blob/master/LICENSE.md