2013-09-09 07:35:57 +00:00
# clipboard
2013-08-14 22:43:35 +00:00
2016-04-21 22:39:12 +00:00
> Perform copy and paste operations on the system clipboard.
2016-04-21 22:35:29 +00:00
2023-01-19 19:59:35 +00:00
Process: [Main ](../glossary.md#main-process ), [Renderer ](../glossary.md#renderer-process ) (non-sandboxed only)
2016-11-01 23:35:31 +00:00
2019-05-06 15:11:48 +00:00
On Linux, there is also a `selection` clipboard. To manipulate it
2014-06-05 06:48:12 +00:00
you need to pass `selection` to each method:
2023-11-21 07:50:08 +00:00
```js
2018-09-13 16:10:51 +00:00
const { clipboard } = require('electron')
2019-09-18 23:00:43 +00:00
2021-11-16 04:13:18 +00:00
clipboard.writeText('Example string', 'selection')
2016-07-26 01:39:25 +00:00
console.log(clipboard.readText('selection'))
2014-06-05 06:48:12 +00:00
```
2015-08-24 21:35:43 +00:00
## Methods
2014-06-05 06:48:12 +00:00
2015-08-26 23:28:44 +00:00
The `clipboard` module has the following methods:
2015-08-24 21:35:43 +00:00
2015-08-28 17:34:48 +00:00
**Note:** Experimental APIs are marked as such and could be removed in future.
2015-08-24 21:35:43 +00:00
### `clipboard.readText([type])`
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2013-08-14 22:43:35 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - The content in the clipboard as plain text.
2013-08-14 22:43:35 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
clipboard.writeText('hello i am a bit of text!')
const text = clipboard.readText()
console.log(text)
// hello i am a bit of text!'
```
2015-08-24 21:35:43 +00:00
### `clipboard.writeText(text[, type])`
2013-08-14 22:43:35 +00:00
2021-11-16 04:13:18 +00:00
* `text` string
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2013-08-14 22:43:35 +00:00
2015-07-23 17:01:00 +00:00
Writes the `text` into the clipboard as plain text.
2013-08-14 22:43:35 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
const text = 'hello i am a bit of text!'
clipboard.writeText(text)
```
2016-05-26 21:26:12 +00:00
### `clipboard.readHTML([type])`
2015-05-22 09:29:11 +00:00
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2015-05-22 09:29:11 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - The content in the clipboard as markup.
2015-05-22 09:29:11 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
clipboard.writeHTML('< b > Hi< / b > ')
const html = clipboard.readHTML()
console.log(html)
// < meta charset = 'utf-8' > < b > Hi< / b >
```
2016-05-26 21:26:12 +00:00
### `clipboard.writeHTML(markup[, type])`
2015-05-22 09:29:11 +00:00
2021-11-16 04:13:18 +00:00
* `markup` string
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2015-05-22 09:29:11 +00:00
2015-08-24 21:35:43 +00:00
Writes `markup` to the clipboard.
2015-05-22 09:29:11 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
2022-02-01 08:57:33 +00:00
clipboard.writeHTML('< b > Hi< / b > ')
2019-09-18 23:00:43 +00:00
```
2015-08-24 21:35:43 +00:00
### `clipboard.readImage([type])`
2015-03-26 04:53:48 +00:00
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2015-03-26 04:53:48 +00:00
2016-12-19 17:40:07 +00:00
Returns [`NativeImage` ](native-image.md ) - The image content in the clipboard.
2015-03-26 04:53:48 +00:00
2015-08-24 21:35:43 +00:00
### `clipboard.writeImage(image[, type])`
2015-03-26 04:53:48 +00:00
* `image` [NativeImage ](native-image.md )
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2015-08-24 21:35:43 +00:00
Writes `image` to the clipboard.
2015-03-26 04:53:48 +00:00
2016-05-26 21:26:12 +00:00
### `clipboard.readRTF([type])`
2016-02-05 08:06:21 +00:00
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2016-02-05 08:06:21 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - The content in the clipboard as RTF.
2016-02-05 08:06:21 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
clipboard.writeRTF('{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\nThis is some {\\b bold} text.\\par\n}')
const rtf = clipboard.readRTF()
console.log(rtf)
// {\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\nThis is some {\\b bold} text.\\par\n}
```
2016-05-26 21:26:12 +00:00
### `clipboard.writeRTF(text[, type])`
2016-02-04 18:38:47 +00:00
2021-11-16 04:13:18 +00:00
* `text` string
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2016-02-04 18:38:47 +00:00
Writes the `text` into the clipboard in RTF.
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
const rtf = '{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\nThis is some {\\b bold} text.\\par\n}'
clipboard.writeRTF(rtf)
```
2016-06-25 00:16:38 +00:00
### `clipboard.readBookmark()` _macOS_ _Windows_
2016-06-24 22:20:49 +00:00
2016-09-24 23:59:30 +00:00
Returns `Object` :
2016-10-25 03:35:18 +00:00
2021-11-16 04:13:18 +00:00
* `title` string
* `url` string
2016-09-24 23:59:30 +00:00
2016-06-24 22:35:30 +00:00
Returns an Object containing `title` and `url` keys representing the bookmark in
the clipboard. The `title` and `url` values will be empty strings when the
2021-09-01 19:55:07 +00:00
bookmark is unavailable. The `title` value will always be empty on Windows.
2016-06-24 22:20:49 +00:00
2016-06-25 00:16:38 +00:00
### `clipboard.writeBookmark(title, url[, type])` _macOS_ _Windows_
2016-06-24 22:20:49 +00:00
2021-11-16 04:13:18 +00:00
* `title` string - Unused on Windows
* `url` string
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2016-06-24 22:20:49 +00:00
2021-09-01 19:55:07 +00:00
Writes the `title` (macOS only) and `url` into the clipboard as a bookmark.
2016-06-24 22:20:49 +00:00
2016-09-21 17:28:37 +00:00
**Note:** Most apps on Windows don't support pasting bookmarks into them so
you can use `clipboard.write` to write both a bookmark and fallback text to the
clipboard.
```js
2019-09-18 23:00:43 +00:00
const { clipboard } = require('electron')
2023-06-05 07:26:26 +00:00
clipboard.writeBookmark('Electron Homepage', 'https://electronjs.org')
2016-09-21 17:28:37 +00:00
```
2016-10-25 05:09:42 +00:00
### `clipboard.readFindText()` _macOS_
2021-11-16 04:13:18 +00:00
Returns `string` - The text on the find pasteboard, which is the pasteboard that holds information about the current state of the active application’ s find panel.
2019-09-18 23:00:43 +00:00
This method uses synchronous IPC when called from the renderer process.
The cached value is reread from the find pasteboard whenever the application is activated.
2016-10-25 05:09:42 +00:00
### `clipboard.writeFindText(text)` _macOS_
2021-11-16 04:13:18 +00:00
* `text` string
2016-10-25 05:09:42 +00:00
2019-09-18 23:00:43 +00:00
Writes the `text` into the find pasteboard (the pasteboard that holds information about the current state of the active application’ s find panel) as plain text. This method uses synchronous IPC when called from the renderer process.
2016-10-25 05:09:42 +00:00
2015-08-24 21:35:43 +00:00
### `clipboard.clear([type])`
2015-03-26 04:53:48 +00:00
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2014-06-05 06:48:12 +00:00
2015-08-24 21:35:43 +00:00
Clears the clipboard content.
2013-08-14 22:43:35 +00:00
2015-08-24 21:35:43 +00:00
### `clipboard.availableFormats([type])`
2013-08-14 22:43:35 +00:00
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2013-08-14 22:43:35 +00:00
2021-11-16 04:13:18 +00:00
Returns `string[]` - An array of supported formats for the clipboard `type` .
2013-08-14 22:43:35 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
const formats = clipboard.availableFormats()
console.log(formats)
// [ 'text/plain', 'text/html' ]
```
2017-03-16 22:45:41 +00:00
### `clipboard.has(format[, type])` _Experimental_
2013-08-14 22:43:35 +00:00
2021-11-16 04:13:18 +00:00
* `format` string
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2013-08-14 22:43:35 +00:00
2021-11-16 04:13:18 +00:00
Returns `boolean` - Whether the clipboard supports the specified `format` .
2015-05-27 08:05:51 +00:00
2019-09-18 23:00:43 +00:00
```js
2018-09-13 16:10:51 +00:00
const { clipboard } = require('electron')
2019-09-18 23:00:43 +00:00
2021-11-01 14:00:36 +00:00
const hasFormat = clipboard.has('public/utf8-plain-text')
2019-09-18 23:00:43 +00:00
console.log(hasFormat)
2021-07-06 12:17:13 +00:00
// 'true' or 'false'
2015-05-27 08:05:51 +00:00
```
2017-03-16 22:45:41 +00:00
### `clipboard.read(format)` _Experimental_
2015-05-27 08:05:51 +00:00
2021-11-16 04:13:18 +00:00
* `format` string
2017-03-16 22:45:41 +00:00
2021-11-16 04:13:18 +00:00
Returns `string` - Reads `format` type from the clipboard.
2017-03-16 22:45:41 +00:00
2021-07-06 12:17:13 +00:00
`format` should contain valid ASCII characters and have `/` separator.
`a/c` , `a/bc` are valid formats while `/abc` , `abc/` , `a/` , `/a` , `a`
are not valid.
2017-03-16 22:45:41 +00:00
### `clipboard.readBuffer(format)` _Experimental_
2021-11-16 04:13:18 +00:00
* `format` string
2015-05-27 08:05:51 +00:00
2017-03-16 22:45:41 +00:00
Returns `Buffer` - Reads `format` type from the clipboard.
2013-08-14 22:43:35 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
const buffer = Buffer.from('this is binary', 'utf8')
2021-07-06 12:17:13 +00:00
clipboard.writeBuffer('public/utf8-plain-text', buffer)
2019-09-18 23:00:43 +00:00
2021-07-06 12:17:13 +00:00
const ret = clipboard.readBuffer('public/utf8-plain-text')
2019-09-18 23:00:43 +00:00
2023-03-02 11:24:59 +00:00
console.log(buffer.equals(ret))
2019-09-18 23:00:43 +00:00
// true
```
2017-04-21 07:26:57 +00:00
### `clipboard.writeBuffer(format, buffer[, type])` _Experimental_
2017-04-21 07:23:25 +00:00
2021-11-16 04:13:18 +00:00
* `format` string
2017-04-21 07:23:25 +00:00
* `buffer` Buffer
2021-11-16 04:13:18 +00:00
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2017-04-21 07:23:25 +00:00
2017-04-21 07:30:23 +00:00
Writes the `buffer` into the clipboard as `format` .
2017-04-21 07:23:25 +00:00
2019-09-18 23:00:43 +00:00
```js
const { clipboard } = require('electron')
const buffer = Buffer.from('writeBuffer', 'utf8')
2021-07-06 12:17:13 +00:00
clipboard.writeBuffer('public/utf8-plain-text', buffer)
2019-09-18 23:00:43 +00:00
```
2015-08-24 21:35:43 +00:00
### `clipboard.write(data[, type])`
2015-07-07 05:17:33 +00:00
* `data` Object
2021-11-16 04:13:18 +00:00
* `text` string (optional)
* `html` string (optional)
2016-10-30 10:46:20 +00:00
* `image` [NativeImage ](native-image.md ) (optional)
2021-11-16 04:13:18 +00:00
* `rtf` string (optional)
* `bookmark` string (optional) - The title of the URL at `text` .
* `type` string (optional) - Can be `selection` or `clipboard` ; default is 'clipboard'. `selection` is only available on Linux.
2015-07-07 05:17:33 +00:00
2019-09-18 23:00:43 +00:00
Writes `data` to the clipboard.
```js
2018-09-13 16:10:51 +00:00
const { clipboard } = require('electron')
2019-09-18 23:00:43 +00:00
clipboard.write({
text: 'test',
html: '< b > Hi< / b > ',
rtf: '{\\rtf1\\utf8 text}',
bookmark: 'a title'
})
console.log(clipboard.readText())
// 'test'
console.log(clipboard.readHTML())
// < meta charset = 'utf-8' > < b > Hi< / b >
console.log(clipboard.readRTF())
// '{\\rtf1\\utf8 text}'
console.log(clipboard.readBookmark())
// { title: 'a title', url: 'test' }
2015-07-07 05:17:33 +00:00
```