Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Be happy with your clipboard! (really? well, maybe...)

This is a small group of scripts to help handle your clipboard. They are aimed for people who uses X but like terminal applications.

It only handle text clipboard entries.

It handles selection 'CLIPBOARD' and 'PRIMARY' as one. So what you copy with the mouse can be pasted with the keyboard and the other way round.

Tested only with Python 3.5.

These scripts were somehow inspired by Clipit and AutoKey.

Using current example interface it can looks like this:

Screenshot: show_history popup opened


  • Clipboard history daemon accessible through dbus (is this safe?)
  • Clipboard history display and selection (using urwid)
  • Smart copy&paste (automatically handling of Ctrl+Shift+c|v for terminals and Ctrl+c|v for other applications)

Planned features

  • Transcribe clipboard instead of using Ctrl(+Shift)+v (useful when Ctrl(+Shift)+v is not allowed).
  • Paste snippets.
  • Automate mouse clicks (like: press button1 ten times).


Clone or copy this repository and install python dependencies listed in requirements.txt. But pygobject and dbus-python seem not to be working with pip, so you'll have to install them with your distro package manager. =/

For Arch Linux that would be:

# pacman -S python-gobject dbus-glib python-dbus

If you also want to install the other deps with package manager:

# pacman -S python-docopt python-urwid

And, in Arch Linux, python-xlib for Python 3 is only in AUR. One way to install it would be:

# yaourt -S python-xlib

More one dependency...

You'll also need to install wmctrl (it's a program, not a Python lib) for "smart focus" functionality (see below).

Again, in Arch Linux:

# pacman -S wmctrl


Still reading? Ok, I'll tell how I use the scripts, so you can see if they are useful for you:

Smart Copy&Paste

To avoid having to use Ctrl+c to copy a text from Firefox and Ctrl+Shift+v to paste it on terminal, the script handle that to me. I have a system wide hotkey that calls copy and another for paste. This 2 hotkeys will use Ctrl+Shift+c|v or Ctrl+c|v according to which window is on focus.

You need to configure which window classes should receive a Ctrl+Shift+c|v instead of just Ctrl+c|v. See config section below.

Clipboard History

For the history to be recorded a daemon must be running. Start it with daemon, stop it with (not implemented).

To display the history, call It should open a terminal application. Select an entry with arrow keys and enter or the hotkey in the start of the line. Use esc to close without changing the current clipboard. Example: Pressing b should set the clipboard for the previous entry. Pressing c would set it for the previous to the previous entry. After selecting an entry, try pasting it with Ctrl(+Shift)+v or copy.

To display the history in a "popup window", call --open-terminal. This should open a terminal window and display the clipboard history inside of it. See configs section about how to set which terminal emulator and shell to use. is only an example of an application to display clipboard history using Urwid (I like Urwid =) ). Other interfaces can be made (with GTK for example) using the same daemon provided here ( daemon), communicating through dbus.

Smart Focus

When closing the history opened in a popup, sometimes the focus goes to a window different from the one you were editing previous to opening the popup. To avoid that, show_history --open-terminal tries to change the focus back to the previous window using wmctrl, which must be installed for it to work. If you don't want this behavior use show_history --open-terminal --no-focus-change.


Configuration must be done editing the file (really? yeah...). It tries to guess configuration based on $TERMINAL and $SHELL, but it may not work...

Setting a custom title for the popup window you can later customize its behavior/appearance with the window manager (see example below).

i3 configuration tips

I use i3, so I can give some extra tips configuring there. Add the lines below to ~/.i3/config. Don't forget to set things between <>.

set $CLIPTOPIA_FOLDER <path cliptopia src folder>

# start daemon
exec python $CLIPTOPIA_FOLDER/ daemon
# smart copy&paste
bindsym --release <copy hotkey> exec --no-startup-id $CLIPTOPIA_FOLDER/ copy
bindsym --release <paste hotkey> exec --no-startup-id $CLIPTOPIA_FOLDER/ paste
# open history popup
bindsym --release <show history hotkey> exec "$CLIPTOPIA_FOLDER/ --open-terminal"
# set popup window to float (now a real popup!)
for_window [title="cliptopia-popup"] floating enable


No description, website, or topics provided.







No releases published


No packages published