Including, checking for incoming calls, missed calls, sms and the start of a dialer using rofimaster
parent
afb6634bec
commit
1ab519531c
6 changed files with 259 additions and 55 deletions
@ -0,0 +1,54 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
CALL_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/Calls/" |
||||
SMS_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/SMS/" |
||||
|
||||
die(){ |
||||
echo "$@" > /dev/stderr |
||||
rm "$FILE" |
||||
exit 1 |
||||
} |
||||
|
||||
trimWhitespace(){ |
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' |
||||
} |
||||
|
||||
deleteEmptyLines(){ |
||||
sed '/^$/ d' |
||||
} |
||||
|
||||
# Iterate over options breaking -ab into -a -b when needed and --foo=bar into |
||||
# --foo bar |
||||
optstring=h |
||||
unset options |
||||
while (($#)); do |
||||
case $1 in |
||||
# If option is of type -ab |
||||
-[!-]?*) |
||||
# Loop over each character starting with the second |
||||
for ((i=1; i < ${#1}; i++)); do |
||||
c=${1:i:1} |
||||
|
||||
# Add current char to options |
||||
options+=("-$c") |
||||
|
||||
# If option takes a required argument, and it's not the last char make |
||||
# the rest of the string its argument |
||||
if [[ $optstring = *"$c:"* && ${1:i+1} ]]; then |
||||
options+=("${1:i+1}") |
||||
break |
||||
fi |
||||
done |
||||
;; |
||||
|
||||
# If option is of type --foo=bar |
||||
--?*=*) options+=("${1%%=*}" "${1#*=}") ;; |
||||
# add --endopts for -- |
||||
--) options+=(--endopts) ;; |
||||
# Otherwise, nothing special |
||||
*) options+=("$1") ;; |
||||
esac |
||||
shift |
||||
done |
||||
set -- "${options[@]}" |
||||
unset options |
@ -0,0 +1,38 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" |
||||
source "$DIR/common" |
||||
|
||||
usage(){ |
||||
echo "missedCalls" |
||||
echo "-a --all Print all (default)" |
||||
echo "-c --count Print count" |
||||
echo "-l --list Print list" |
||||
} |
||||
|
||||
toprint="all" |
||||
# Read the options and set stuff |
||||
while [[ $1 = -?* ]]; do |
||||
case $1 in |
||||
-a|--all) toprint="all" ;; |
||||
-c|--count) toprint="count" ;; |
||||
-l|--list) toprint="list" ;; |
||||
-h|--help) usage; exit;; |
||||
--) shift; break ;; |
||||
*) die "invalid option: '$1'." ;; |
||||
esac |
||||
shift |
||||
done |
||||
|
||||
[ -f "$CALL_DIR/missed-calls" ] || exit |
||||
|
||||
if [ "$toprint" = "count" ] || [ "$toprint" = "all" ]; then |
||||
count="$(cat "$CALL_DIR/missed-calls" | deleteEmptyLines | wc -l )" |
||||
echo "$count missed calls" |
||||
fi |
||||
|
||||
if [ "$toprint" = "list" ] || [ "$toprint" = "all" ]; then |
||||
cat "$CALL_DIR/missed-calls" |
||||
fi |
||||
|
@ -0,0 +1,29 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
# This was mostly taken from sxmo: |
||||
# https://git.sr.ht/~mil/sxmo-utils/tree/1.3.2/item/scripts/modem/sxmo_modemmonitor.sh#L181-205 |
||||
# |
||||
# Although the proccess for managing calls etc is a bit simpler IMO |
||||
|
||||
# Monitor for incoming calls |
||||
dbus-monitor --system "interface='org.freedesktop.ModemManager1.Modem.Voice',type='signal',member='CallAdded'" | \ |
||||
while read -r line; do |
||||
echo "$line" | grep -E "^signal" && checkCall |
||||
done & |
||||
|
||||
# Monitor for incoming texts |
||||
dbus-monitor --system "interface='org.freedesktop.ModemManager1.Modem.Messaging',type='signal',member='Added'" | \ |
||||
while read -r line; do |
||||
echo "$line" | grep -E "^signal" && checkSMS |
||||
done & |
||||
|
||||
# Monitor for finished calls |
||||
dbus-monitor --system "interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',arg0='org.freedesktop.ModemManager1.Call'" | \ |
||||
while read -r line; do |
||||
echo "$line" | grep -E "^signal" && checkCall |
||||
done & |
||||
|
||||
wait |
||||
wait |
||||
wait |
||||
|
Loading…
Reference in new issue