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:
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