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