diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-10 09:55:44 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-10 09:55:44 +0400 |
| commit | 02f37c8573afb8cce9f38e8d4a809ea58ca3eae8 (patch) | |
| tree | 7125f7dd3719d1e5367aeec834bec0ec1446a364 /src/dbus/mutter_display_config.rs | |
| parent | 66533ae0b1b84c0d5acbc5e6618fb1700eeb61db (diff) | |
| download | niri-02f37c8573afb8cce9f38e8d4a809ea58ca3eae8.tar.gz niri-02f37c8573afb8cce9f38e8d4a809ea58ca3eae8.tar.bz2 niri-02f37c8573afb8cce9f38e8d4a809ea58ca3eae8.zip | |
Extract dbus server startup
Diffstat (limited to 'src/dbus/mutter_display_config.rs')
| -rw-r--r-- | src/dbus/mutter_display_config.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/dbus/mutter_display_config.rs b/src/dbus/mutter_display_config.rs index 1807f01d..663d3f8e 100644 --- a/src/dbus/mutter_display_config.rs +++ b/src/dbus/mutter_display_config.rs @@ -3,9 +3,12 @@ use std::sync::{Arc, Mutex}; use serde::Serialize; use smithay::output::Output; +use zbus::fdo::RequestNameFlags; use zbus::zvariant::{OwnedValue, Type}; use zbus::{dbus_interface, fdo}; +use super::Start; + pub struct DisplayConfig { connectors: Arc<Mutex<HashMap<String, Output>>>, } @@ -86,3 +89,18 @@ impl DisplayConfig { Self { connectors } } } + +impl Start for DisplayConfig { + fn start(self) -> anyhow::Result<zbus::blocking::Connection> { + let conn = zbus::blocking::Connection::session()?; + let flags = RequestNameFlags::AllowReplacement + | RequestNameFlags::ReplaceExisting + | RequestNameFlags::DoNotQueue; + + conn.object_server() + .at("/org/gnome/Mutter/DisplayConfig", self)?; + conn.request_name_with_flags("org.gnome.Mutter.DisplayConfig", flags)?; + + Ok(conn) + } +} |
