More MPRIS support work

This commit is contained in:
Peter Steenbergen 2021-10-31 19:30:37 +01:00
parent e008a836e4
commit 0cb7d6a158
10 changed files with 144 additions and 3 deletions

View File

@ -22,7 +22,6 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to OpenVoiceOS"
BR2_INIT_SYSTEMD=y
# BR2_TARGET_ENABLE_ROOT_LOGIN is not set
BR2_SYSTEM_BIN_SH_BASH=y
# BR2_TARGET_GENERIC_GETTY is not set
BR2_SYSTEM_DHCP="eth0"
# BR2_ENABLE_LOCALE_PURGE is not set
BR2_GENERATE_LOCALE="en_US.UTF-8"

View File

@ -0,0 +1,25 @@
From 97ae976abdfa5a722bc32885e1ef498a04af2f3d Mon Sep 17 00:00:00 2001
From: Peter Steenbergen <info@j1nx.nl>
Date: Sun, 31 Oct 2021 13:36:46 +0100
Subject: [PATCH 1/1] Switch to system dbus
---
src/dbus_mpris.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/dbus_mpris.rs b/src/dbus_mpris.rs
index 838f3b3..1e97540 100644
--- a/src/dbus_mpris.rs
+++ b/src/dbus_mpris.rs
@@ -114,7 +114,7 @@ fn create_spotify_api(token: &RspotifyToken) -> Spotify {
async fn create_dbus_server(api_token: RspotifyToken, spirc: Arc<Spirc>, device_name: String) {
// TODO: allow other DBus types through CLI and config entry.
let (resource, conn) =
- connection::new_session_sync().expect("Failed to initialize DBus connection");
+ connection::new_system_sync().expect("Failed to initialize DBus connection");
tokio::spawn(async {
let err = resource.await;
panic!("Lost connection to D-Bus: {}", err);
--
2.33.1

View File

@ -0,0 +1,15 @@
<?xml version="1.0"?><!--*-nxml-*-->
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- System-wide Mycroft services run as 'mycroft' user. -->
<policy user="mycroft">
<allow own="com.openvoiceos"/>
<allow send_destination="com.openvoiceos.mycroft.audio"/>
<allow receive_sender="com.openvoiceos.mycroft.audio"/>
</policy>
</busconfig>

View File

@ -0,0 +1,23 @@
<!-- initial version, based on /etc/dbus-1/system.d/avahi-dbus.conf, with thanks -->
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Allow users "root" and "mycroft" to own the Shairport Sync service -->
<policy user="root">
<allow own="org.gnome.ShairportSync"/>
</policy>
<policy user="mycroft">
<allow own="org.gnome.ShairportSync"/>
</policy>
<!-- Allow anyone to invoke methods on Shairport Sync server -->
<policy context="default">
<allow send_destination="org.gnome.ShairportSync"/>
<allow receive_sender="org.gnome.ShairportSync"/>
</policy>
</busconfig>

View File

@ -0,0 +1,21 @@
<!-- initial version, based on /etc/dbus-1/system.d/avahi-dbus.conf, with thanks -->
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Allow users "root" and "mycroft" to own the Shairport Sync MPRIS service -->
<policy user="mycroft">
<allow own="org.mpris.MediaPlayer2.ShairportSync"/>
</policy>
<policy user="root">
<allow own="org.mpris.MediaPlayer2.ShairportSync"/>
</policy>
<!-- Allow anyone to invoke methods on Shairport Sync MPRIS server -->
<policy context="default">
<allow send_destination="org.mpris.MediaPlayer2.ShairportSync"/>
<allow receive_sender="org.mpris.MediaPlayer2.ShairportSync"/>
</policy>
</busconfig>

View File

@ -0,0 +1,21 @@
<!-- initial version, based on /etc/dbus-1/system.d/avahi-dbus.conf, with thanks -->
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Allow users "root" and "mycroft" to own the SpotifyD MPRIS service -->
<policy user="mycroft">
<allow own="org.mpris.MediaPlayer2.spotifyd"/>
</policy>
<policy user="root">
<allow own="org.mpris.MediaPlayer2.spotifyd"/>
</policy>
<!-- Allow anyone to invoke methods on SpotifyD MPRIS server -->
<policy context="default">
<allow send_destination="org.mpris.MediaPlayer2.spotifyd"/>
<allow receive_sender="org.mpris.MediaPlayer2.spotifyd"/>
</policy>
</busconfig>

View File

@ -66,6 +66,7 @@
"backends": {
"local": {
"type": "ovos_common_play",
"dbus_type": "system",
"active": true
},
"vlc": {

View File

@ -0,0 +1,29 @@
export PATH="/usr/bin:/usr/sbin"
if [ "$PS1" ]; then
if [ "`id -u`" -eq 0 ]; then
export PS1='# '
else
export PS1='$ '
fi
fi
if test -z "${XDG_RUNTIME_DIR}"; then
export XDG_RUNTIME_DIR=/run/user/${UID}
if ! test -d "${XDG_RUNTIME_DIR}"; then
mkdir "${XDG_RUNTIME_DIR}"
chmod 0700 "${XDG_RUNTIME_DIR}"
fi
fi
if test -z "${DBUS_SESSION_BUS_ADDRESS}"; then
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${UID}/bus
fi
export EDITOR='/bin/vi'
# Source configuration files from /etc/profile.d
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
unset i

View File

@ -1,4 +1,6 @@
general = {
name = "OpenVoiceOS";
output_backend = "pa";
dbus_service_bus = "system";
mpris_service_bus = "system";
};

View File

@ -1,11 +1,16 @@
[Unit]
Description=Shairport-sync
Wants=network.target
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target
After=pulseaudio.service
Requires=avahi-daemon.service
After=network.target sound.target avahi-daemon.service
After=avahi-daemon.service
[Service]
Type=simple
User=mycroft
# Avahi daemon needs some time until fully ready
ExecStartPre=/bin/sleep 3
ExecStart=/usr/bin/shairport-sync