From 7b4af3aef6e69d4aea1706af47bbba455e9f9a9b Mon Sep 17 00:00:00 2001 From: Subhaditya Nath Date: Sun, 30 May 2021 23:19:02 +0530 Subject: [PATCH] picom-trans: Use POSIX-compatible sed, grep \b \? \+ \| are GNU extensions to sed In BRE (Basic Regular Expressions) there is no \? \+ or \| In ERE (Extended Regular Expressions) there is ? + and | To specify sed to use ERE, specify the -E flag. GNU grep does not distinguish between BRE and ERE, but other implementations do. To make grep use ERE instead of BRE, specify the -E flag. The GNU extension \b has no equivalent in either BRE or ERE. So, in line number 216, I used the whole initial expected output. For quick reference (n/a means 'not available') - GNU BRE | POSIX BRE | POSIX ERE ------------------------------- \( | \( | ( \) | \) | ) \? | \{0,1\} | ? or {0,1} \+ | \{1,\} | + or {1,} \| | n/a | | \b | n/a | n/a --- bin/picom-trans | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/picom-trans b/bin/picom-trans index 99031d9b..27ba38e5 100755 --- a/bin/picom-trans +++ b/bin/picom-trans @@ -79,7 +79,7 @@ v= # Workaround: replace '-5' with '~5' so as not to confuse getopts. for v in "$@"; do - shift && set -- "$@" "$(echo "$v" | sed 's/^-\([0-9]\+%\?\)$/~\1/')" + shift && set -- "$@" "$(echo "$v" | sed -E 's/^-([0-9]+%?)$/~\1/')" done # This takes into account the fact that getopts stops on @@ -102,7 +102,7 @@ while test $# -gt 0; do OPTIND=$((OPTIND + 1)) ;; name=* | window=* | opacity=*) - v=$(echo "$OPTARG" | sed 's/^[^=]\+=//') + v=$(echo "$OPTARG" | sed -E 's/^[^=]+=//') ;; *) echo "$0: illegal option $OPTARG" >& 2 @@ -137,10 +137,10 @@ while test $# -gt 0; do done # clean up opacity. xargs == a poor man's trim. -opacity=$(echo "$opacity" | xargs | sed 's/%//g' | sed 's/^~\([0-9]\+\)$/-\1/') +opacity=$(echo "$opacity" | xargs | sed 's/%//g' | sed -E 's/^~([0-9]+)$/-\1/') # Validate opacity value -if test -z "$action" && ! echo "$opacity" | grep -q '^[+-]\?[0-9]\+$'; then +if test -z "$action" && ! echo "$opacity" | grep -qE '^[+-]?[0-9]+$'; then echo "Invalid opacity specified: $opacity." exit 1 fi @@ -213,7 +213,7 @@ fi # Get current opacity. cur=$(xprop -id "$topmost" -notype _NET_WM_WINDOW_OPACITY \ - | sed 's/^.*\b\([0-9]\+\).*$\|^.*$/\1/') + | sed -E 's/^_NET_WM_WINDOW_OPACITY = ([0-9]*)$|^.*$/\1/') # Remove the opacity property. if test x"$action" = x'delete' -o \( x"$action" = x'toggle' -a -n "$cur" \); then