X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=btrfsmaint;h=c35004ef2fc7e5bb18c5142ab266390327f94053;hb=21bddd1d26a0349f3932f12c65fbc0775e855880;hp=0204ed5aa78a4e9043e0aae3a624066252a77955;hpb=72c18f3a6a7f1ed0ca16af654a1f804ab96e1ff9;p=distro-setup diff --git a/btrfsmaint b/btrfsmaint index 0204ed5..c35004e 100755 --- a/btrfsmaint +++ b/btrfsmaint @@ -3,7 +3,7 @@ [[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@" -set -e; . /usr/local/lib/err; set +e +set -e; . /usr/local/lib/bash-bear; set +e # inspired from # https://github.com/kdave/btrfsmaintenance @@ -32,21 +32,16 @@ e() { } check-idle() { - type -p xprintidle &>/dev/null || return 0 + type -p xscreensaver-command &>/dev/null || return 0 + export XAUTHORITY=/home/iank/.Xauthority export DISPLAY=:0 - # a hours, a movie could run that long. - idle_limit=$((1000 * 60 * 60 * 2)) - idle_time=$idle_limit - while read -r user; do - new_idle_time=$(sudo -u $user xprintidle 2>/dev/null) ||: - if [[ $new_idle_time && $new_idle_time -lt $idle_time ]]; then - idle_time=$new_idle_time + locked=false + if lock_info=$(xscreensaver-command -time); then + if [[ $lock_info != *non-blanked* ]]; then + locked=true fi - done < <(users | tr " " "\n" | sort -u) - if (( idle_time < idle_limit )); then - idle=false else - idle=true + locked=true fi } @@ -107,7 +102,6 @@ readonly check dryrun force stats main() { - idle=true if ! $force; then check-idle if ! $check; then @@ -115,7 +109,7 @@ main() { max_min=300 # When the cron kicks in, we may not be idle (physically sleeping) yet, so # wait. - while ! $idle && (( min < max_min )); do + while ! $locked && (( min < max_min )); do min=$(( min + 1 )) sleep 60 check-idle @@ -161,7 +155,7 @@ EOF #### end look for diff in stats, eg: increasing error count #### if $check; then - if ! $idle; then + if ! $locked; then if $dryrun; then echo "$0: not idle. if this wasnt a dry run, btrfs scrub cancel $mnt" else