clipmenu

Simple clipboard management using dmenu
git clone https://git.sinitax.com/cdown/clipmenu
Log | Files | Refs | README | LICENSE | sfeed.txt

commit 77aa1c4ae0bb3b529e1e732ad17ae7ff6096852b
parent f748a2e5a6afbb9d8114cba4eb20dace5f3aa2ca
Author: Chris Down <chris@chrisdown.name>
Date:   Tue, 20 Nov 2018 09:07:55 +0000

Merge branch 'release/5.6.0'

Diffstat:
M.travis.yml | 12++----------
Mclipdel | 2+-
Mclipmenud | 16++++++++++++++++
3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/.travis.yml b/.travis.yml @@ -1,10 +1,6 @@ -language: haskell +language: bash -install: - - cabal install shellcheck - -before_script: - - export PATH=$PATH:$HOME/.cabal/bin/ +dist: xenial script: - shellcheck -s bash clipmenu clipmenud @@ -12,7 +8,3 @@ script: matrix: fast_finish: true - -# Enable container based Travis CI infrastructure -# http://docs.travis-ci.com/user/migrating-from-legacy/ -sudo: false diff --git a/clipdel b/clipdel @@ -45,7 +45,7 @@ fi # https://github.com/koalaman/shellcheck/issues/1141 # shellcheck disable=SC2124 raw_pattern=$1 -esc_pattern=${raw_pattern/\#/'\#'} +esc_pattern=${raw_pattern//\#/'\#'} if ! [[ $raw_pattern ]]; then printf '%s\n' 'No pattern provided, see --help' >&2 diff --git a/clipmenud b/clipmenud @@ -16,6 +16,7 @@ cache_file_prefix=$cache_dir/line_cache lock_file=$cache_dir/lock lock_timeout=2 has_clipnotify=0 +has_xdotool=0 # This comes from the environment, so we rely on word splitting. # shellcheck disable=SC2206 @@ -93,6 +94,7 @@ Environment variables: - $CM_ONESHOT: run once immediately, do not loop (default: 0) - $CM_OWN_CLIPBOARD: take ownership of the clipboard (default: 1) - $CM_SELECTIONS: space separated list of the selections to manage (default: "clipboard primary") +- $CM_IGNORE_WINDOW: disable recording the clipboard in windows where the windowname matches the given regex (e.g. a password manager), do not ignore any windows if unset or empty (default: unset) EOF exit 0 fi @@ -113,6 +115,12 @@ if ! (( has_clipnotify )); then echo "WARN: See https://github.com/cdown/clipnotify." >&2 fi +command -v xdotool >/dev/null 2>&1 && has_xdotool=1 + +if [[ $CM_IGNORE_WINDOW ]] && ! (( has_xdotool )); then + echo "WARN: CM_IGNORE_WINDOW does not work without xdotool, which is not installed" >&2 +fi + exec {lock_fd}> "$lock_file" sleep_cmd=(sleep "${CM_SLEEP:-0.5}") @@ -128,6 +136,14 @@ while true; do fi fi + if [[ $CM_IGNORE_WINDOW ]] && (( has_xdotool )); then + windowname="$(xdotool getactivewindow getwindowname)" + if [[ "$windowname" =~ $CM_IGNORE_WINDOW ]]; then + debug "ignoring clipboard because windowname \"$windowname\" matches \"${CM_IGNORE_WINDOW}\"" + continue + fi + fi + if ! flock -x -w "$lock_timeout" "$lock_fd"; then if (( CM_ONESHOT )); then printf 'ERROR: %s\n' 'Timed out waiting for lock' >&2