c4a9071b3e
We also don't explain too much about systemd -- you're expected to find out or know about that agnostically of this project. Also some features that we don't really want to advertise super widely are not worth mentioning here.
79 lines
2.9 KiB
Markdown
79 lines
2.9 KiB
Markdown
[![Tests](https://img.shields.io/travis/cdown/clipmenu/develop.svg)](https://travis-ci.org/cdown/clipmenu)
|
|
|
|
clipmenu is a simple clipboard manager using [dmenu][] (or [rofi][] with
|
|
`CM_LAUNCHER=rofi`) and [xsel][].
|
|
|
|
# Demo
|
|
|
|
![Demo](https://cloud.githubusercontent.com/assets/660663/24079784/6f76da94-0c88-11e7-8251-40b1f02ebf3c.gif)
|
|
|
|
# Usage
|
|
|
|
Start `clipmenud`, then run `clipmenu` to select something to put on the
|
|
clipboard. For systemd users, a user service called `clipmenud` is packaged as
|
|
part of the project.
|
|
|
|
You may wish to bind a shortcut in your window manager to launch `clipmenu`.
|
|
|
|
All args passed to clipmenu are transparently dispatched to dmenu. That is, if
|
|
you usually call dmenu with args to set colours and other properties, you can
|
|
invoke clipmenu in exactly the same way to get the same effect, like so:
|
|
|
|
clipmenu -i -fn Terminus:size=8 -nb '#002b36' -nf '#839496' -sb '#073642' -sf '#93a1a1'
|
|
|
|
For a full list of environment variables that clipmenud can take, please see
|
|
`clipmenud --help`.
|
|
|
|
# Features
|
|
|
|
The behavior of `clipmenud` can be customized through environment variables.
|
|
Despite being only <300 lines, clipmenu has many useful features, including:
|
|
|
|
* Customising the maximum number of clips stored (default 1000)
|
|
* Disabling clip collection temporarily with `clipctl disable`, reenabling with
|
|
`clipctl enable`
|
|
* Not storing clipboard changes from certain applications, like password
|
|
managers
|
|
* Taking direct ownership of the clipboard
|
|
* ...and much more.
|
|
|
|
Check `clipmenud --help` to view all possible environment variables and what
|
|
they do. If you manage `clipmenud` with `systemd`, you can override the
|
|
defaults by using `systemctl --user edit clipmenud` to generate an override
|
|
file.
|
|
|
|
# Installation
|
|
|
|
Several distributions, including Arch and Nix, provide clipmenu as an official
|
|
package called `clipmenu`.
|
|
|
|
## Manual installation
|
|
|
|
If your distribution doesn't provide a package, you can manually install using
|
|
`make install` (or better yet, create a package for your distribution!). You
|
|
will need `xsel` and `clipnotify` installed, and also `dmenu` unless you plan
|
|
to use a different launcher.
|
|
|
|
# How does it work?
|
|
|
|
clipmenud is less than 300 lines, and clipmenu is less than 100, so hopefully
|
|
it should be fairly self-explanatory. However, at the most basic level:
|
|
|
|
## clipmenud
|
|
|
|
1. `clipmenud` uses [clipnotify](https://github.com/cdown/clipnotify) to wait
|
|
for new clipboard events.
|
|
2. If `clipmenud` detects changes to the clipboard contents, it writes them out
|
|
to the cache directory and an index using a hash as the filename.
|
|
|
|
## clipmenu
|
|
|
|
1. `clipmenu` reads the index to find all available clips.
|
|
2. `dmenu` is executed to allow the user to select a clip.
|
|
3. After selection, the clip is put onto the PRIMARY and CLIPBOARD X
|
|
selections.
|
|
|
|
[dmenu]: http://tools.suckless.org/dmenu/
|
|
[rofi]: https://github.com/DaveDavenport/Rofi
|
|
[xsel]: http://www.vergenet.net/~conrad/software/xsel/
|