aboutsummaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
Diffstat (limited to 'extras')
-rwxr-xr-xextras/HOME/.local/bin/media-control67
-rwxr-xr-xextras/HOME/.local/bin/media-select.sh26
2 files changed, 65 insertions, 28 deletions
diff --git a/extras/HOME/.local/bin/media-control b/extras/HOME/.local/bin/media-control
index 34a2633..c3febcd 100755
--- a/extras/HOME/.local/bin/media-control
+++ b/extras/HOME/.local/bin/media-control
@@ -6,37 +6,48 @@ then
exit
fi
-target_hint="spotify"
-while [[ "$1" == --* ]] ; do
- arg="$1"
- case "$arg" in
- --target-hint=*)
- target_hint="${arg/--target-hint=/}"
- ;;
- *)
- echo "Bad Argument $1"
- exit 1
- ;;
- esac
- shift
-done
-
-# Some targets (spotifyd) don't have a stable dbus path.
-targets="$( \
- dbus-send \
- --print-reply \
- --dest=org.freedesktop.DBus \
- /org/freedesktop/DBus org.freedesktop.DBus.ListNames \
- | sed 's#.*string \"\(.*\)"#\1#' \
- | grep MediaPlayer2)"
+function get-default-target() {
+ local target_hint="spotify"
+ while [[ "$1" == --* ]] ; do
+ local arg="$1"
+ case "$arg" in
+ --target-hint=*)
+ target_hint="${arg/--target-hint=/}"
+ ;;
+ *)
+ echo "Bad Argument $1"
+ exit 1
+ ;;
+ esac
+ shift
+ done
+
+ # Some targets (spotifyd) don't have a stable dbus path.
+ local targets="$( \
+ dbus-send \
+ --print-reply \
+ --dest=org.freedesktop.DBus \
+ /org/freedesktop/DBus org.freedesktop.DBus.ListNames \
+ | sed 's#.*string \"\(.*\)"#\1#' \
+ | grep MediaPlayer2)"
+
+ # Prefer the target hint.
+ target="$(echo "$targets" | grep -i "$target_hint" | head -n1)"
+ if [ -z "$target" ] ; then
+ # If no spotify, pick an arbitrary one
+ target="$(echo "$targets" | head -n1)"
+ fi
+}
-# Prefer the target hint.
-target="$(echo "$targets" | grep -i "$target_hint" | head -n1)"
-if [ -z "$target" ] ; then
- # If no spotify, pick an arbitrary one
- target="$(echo "$targets" | head -n1)"
+media_selection_file=$XDG_RUNTIME_DIR/rde/vars/MEDIA
+if [ -f "$media_selection_file" ] ; then
+ target=$(cat "$media_selection_file")
+else
+ get-default-target
fi
+echo "Sending to taget: $target"
+
function mpris2_dbus_player_do {
dbus-send \
--print-reply \
diff --git a/extras/HOME/.local/bin/media-select.sh b/extras/HOME/.local/bin/media-select.sh
new file mode 100755
index 0000000..0d2f9de
--- /dev/null
+++ b/extras/HOME/.local/bin/media-select.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+runtime_dir=$XDG_RUNTIME_DIR/rde/vars/
+mkdir -p $runtime_dir
+
+media_selection_file=$runtime_dir/MEDIA
+
+raw_dbus_opts=$( \
+ dbus-send \
+ --print-reply \
+ --dest=org.freedesktop.DBus \
+ /org/freedesktop/DBus org.freedesktop.DBus.ListNames | \
+ grep MediaPlayer2 | \
+ sed 's#.*["]\(.*\)["]#\1#')
+
+selection="$(echo -e "$raw_dbus_opts\ndefault" | \
+ $ROFI -i -p "Control Media" \
+ -theme-str '* {theme-color: #88ff88;}')"
+
+if [ ! -z "$selection" ] ; then
+ if [ "$selection" == "default" ] ; then
+ rm $media_selection_file
+ else
+ echo "$selection" > $media_selection_file
+ fi
+fi