# Clipboard Ruby Gem [![version](https://badge.fury.io/rb/clipboard.svg)](https://badge.fury.io/rb/clipboard) [](https://travis-ci.org/janlelis/clipboard) Lets you access the clipboard from everywhere. Currently supported platforms: - Linux - MacOS - Windows - Cygwin (POSIX environment for Windows) - WSL (Windows Subsystem for Linux) - Gtk+ (Cross Platform Widget Toolkit) - Java (on JRuby) ## Usage * `Clipboard.copy` - Copies a string to system clipboard * `Clipboard.paste` - Paste contents from system clipboard as string * `Clipboard.clear` - Empties the system clipboard ## Setup Add the following lines to your `Gemfile`: ```ruby gem 'clipboard' gem 'ffi', :platforms => [:mswin, :mingw] ``` - Important note for **Linux** users: The clipboard requires the *xclip* or the *xsel* command-line program. On debian and ubuntu, xclip can be installed with: `sudo apt-get install xclip` ## Clipboard Implementations In most environments, the appropriate clipboard implementation can be detected automatically. If none is found, the gem will fallback to a file based one, which will just write to/read from `~/.clipboard` instead of the system clipboard. You can check the implementation used with: `Clipboard.implementation` ### Alternative Clipboard Providers There are two implementations included in this gem, which are not used by default. You can opt-in to use them if you think they are a better fit for your application environment: #### Java Activate with: `Clipboard.implementation = Clipboard::Java` This is an option for [JRuby users](https://www.jruby.org/) which will use the clipboard functionality from the Java standard library. #### GTK+ Activate with: `Clipboard.implementation = Clipboard::Gtk` This utilizes the **GTK+** library. See [Ruby-GNOME2](https://github.com/ruby-gnome2/ruby-gnome2#ruby-gnome2) for more info. Requires the `gtk3` or `gtk2` gem to be installed. ## Tips & Tricks ### Linux: Using Clipboard via SSH To be able to use the clipboard through SSH, you need to install `xauth` on your server and connect via `ssh -X` or `ssh -Y`. Please note that some server settings restrict this feature. ### Linux: Paste From Specific X11 Selection The clipboard on Linux is divided into multiple clipboard selections. You can choose from which clipboard you want to `paste` from by passing it as an argument. The default is *:clipboard*, other options are *:primary* and *:secondary*. `Clipboard.copy` always copies to all three clipboards. ### Windows: Encoding Info Windows uses [UTF-16LE](https://en.wikipedia.org/wiki/UTF-16) as its default encoding, so pasted strings will always come in UTF-16. You can then manually convert them to your desired encoding, for example, UTF-8, using the [String#encode](ruby-doc.org/core-2.3.0/String.html#method-i-encode) method: ```ruby Clipboard.paste.encode('UTF-8') ``` ### CLI Utility: blip The [blip gem]((https://gist.github.com/janlelis/781835)) is a handy command-line wrapper for the clipboard gem. It lets you quickly copy file content to your clipboard: ``` $ blip FILE_NAME ``` Without any arguments, it will just paste the contents of the clipboard. ### MIT Copyright (c) 2010-2018 Jan Lelis released under the MIT license. Contributions by and thanks to Michael Grosser and [all the other contributors!](https://github.com/janlelis/clipboard/graphs/contributors)