몇 초 사용 후 자동으로 클립보드를 지우고 싶습니다.
#!/usr/bin/env bash
LOCKFILE=/tmp/.clearclip-lock
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
exit 1
fi
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
touch ${LOCKFILE}
echo $$ > ${LOCKFILE}
if xclip -o -selection clipboard 1>&2 2>/dev/null; then
if watch -n 0.5 -t --chgexit xclip -o -selection clipboard @>/dev/null; then
sleep 10
xsel -bc
fi
fi
rm -f ${LOCKFILE}
저는 방금 이 대략적인 실행 파일 작업을 시작했으며 ~/mypath/clearclip
사용자 로컬 시스템 타이머를 사용하여 실행하고 싶습니다. 그럼에도 불구하고 서비스에서 오류가 발생합니다.Error opening terminal: unknown.
# ~/.local/share/systemd/user/clearclip.service
[Unit]
Description=clear the clipboard
ConditionFileIsExecutable=%h/_path/clearclip.sh
[Service]
Environment=DISPLAY=:0
ExecStart=%h/_path/clearclip.sh
Type=oneshot
내 주요 질문은 다음과 같습니다.
동일한 기능을 수행하지만 비대화식으로 수행하는 도구가 있습니까 watch -g
? 당신의 접근 방식은 무엇입니까? 출력을 비교하거나 예상대로 복원하거나 다른 작업을 수행하기 위해 while 루프에서 tmp 파일에 출력을 쓰시겠습니까?
또 다른 질문: 듀얼 타이머 설정은 어떻게 생겼나요?
예를 들어, 타이머는 클립보드가 변경되는 시기를 확인하고 클립보드 선택을 지우는 다른 타이머를 트리거(또는 다시 시작)합니다.
2018년 7월 25일에 수정됨:
이번 주에 나는 사용자 타이머와 함께 이 스크립트를 사용하는 것을 포기했습니다. opening terminal
오류를 제거하기 위해 터미널을 에뮬레이트하기 위해 zpty를 사용하고 있지만 궁극적으로 clearclip &
는 ~/.config/zsh/.zlogin
.
#!/usr/bin/env zsh
# zmodload zsh/zpty
oclip=""
let count='-1'
let timeout=70
clipchanged() {
if ! xclip -o -selection clipboard 2>/dev/null 1>&2; then
count='-1'
return 1
fi
clip="$(xclip -o -selection clipboard)"
if [[ -z "$clip" ]] || [[ "$oclip" == "$clip" ]]; then
return 1
elif [[ -z "$oclip" ]]; then
oclip="$clip"
return 1
else
(( count=timeout ))
oclip="$clip"
return 0
fi
}
while true; do
if (( count > 0 )); then
((count--))
# echo -n "\r\033[K$count"
fi
if (( count == 0 )); then
xsel -bc
fi
if clipchanged; then
(( count=timeout ))
fi
sleep .5
done
2020년 9월 7일에 수정됨:
제목에 적절한 질문을 추가했지만 금방 아이디어를 포기했습니다. 클립보드를 지우거나 변경 사항에 대해 조치를 취하려면 --watch
다음 옵션을 사용합니다 wl-copy(1)
.
--watch command...
Instead of pasting once and exiting, continuously watch the clipboard for changes, and run the specified command each time a new selection appears. The spawned process can read the clipboard contents from its standard input. This mode requires a compositor that supports the wlroots data-control protocol.