aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/mod.rs1
-rw-r--r--src/backend/tty.rs2
-rw-r--r--src/main.rs7
-rw-r--r--src/niri.rs18
4 files changed, 21 insertions, 7 deletions
diff --git a/src/backend/mod.rs b/src/backend/mod.rs
index 64b1b5da..532b8a9c 100644
--- a/src/backend/mod.rs
+++ b/src/backend/mod.rs
@@ -84,6 +84,7 @@ impl Backend {
}
}
+ #[cfg_attr(not(feature = "dbus"), allow(unused))]
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
match self {
Backend::Tty(tty) => tty.connectors(),
diff --git a/src/backend/tty.rs b/src/backend/tty.rs
index 403f31ab..16ea4079 100644
--- a/src/backend/tty.rs
+++ b/src/backend/tty.rs
@@ -924,6 +924,7 @@ impl Tty {
}
pub fn suspend(&self) {
+ #[cfg(feature = "dbus")]
if let Err(err) = suspend() {
warn!("error suspending: {err:?}");
}
@@ -1026,6 +1027,7 @@ fn refresh_interval(mode: DrmMode) -> Duration {
Duration::from_nanos(refresh_interval)
}
+#[cfg(feature = "dbus")]
fn suspend() -> anyhow::Result<()> {
let conn = zbus::blocking::Connection::system().context("error connecting to system bus")?;
let manager = logind_zbus::manager::ManagerProxyBlocking::new(&conn)
diff --git a/src/main.rs b/src/main.rs
index c9d10ea0..57308f6b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,6 +5,7 @@ mod animation;
mod backend;
mod config;
mod cursor;
+#[cfg(feature = "dbus")]
mod dbus;
mod frame_clock;
mod handlers;
@@ -37,8 +38,6 @@ use tracing_subscriber::EnvFilter;
use utils::spawn;
use watcher::Watcher;
-use crate::dbus::DBusServers;
-
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Cli {
@@ -104,12 +103,14 @@ fn main() {
import_env_to_systemd();
// Inhibit power key handling so we can suspend on it.
+ #[cfg(feature = "dbus")]
if let Err(err) = state.niri.inhibit_power_key() {
warn!("error inhibiting power key: {err:?}");
}
}
- DBusServers::start(&mut state, is_systemd_service);
+ #[cfg(feature = "dbus")]
+ dbus::DBusServers::start(&mut state, is_systemd_service);
// Notify systemd we're ready.
if let Err(err) = sd_notify::notify(true, &[NotifyState::Ready]) {
diff --git a/src/niri.rs b/src/niri.rs
index 4adc9e31..0eccee18 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -1,5 +1,4 @@
use std::cell::RefCell;
-use std::cmp::max;
use std::collections::HashMap;
use std::ffi::OsString;
use std::path::PathBuf;
@@ -15,7 +14,6 @@ use smithay::backend::renderer::element::surface::{
render_elements_from_surface_tree, WaylandSurfaceRenderElement,
};
use smithay::backend::renderer::element::texture::TextureRenderElement;
-use smithay::backend::renderer::element::utils::{Relocate, RelocateRenderElement};
use smithay::backend::renderer::element::{
default_primary_scanout_output_compare, render_elements, AsRenderElements, Kind, RenderElement,
RenderElementStates,
@@ -74,10 +72,10 @@ use smithay::wayland::virtual_keyboard::VirtualKeyboardManagerState;
use crate::backend::{Backend, Tty, Winit};
use crate::config::Config;
use crate::cursor::Cursor;
+#[cfg(feature = "dbus")]
use crate::dbus::gnome_shell_screenshot::{NiriToScreenshot, ScreenshotToNiri};
#[cfg(feature = "xdp-gnome-screencast")]
use crate::dbus::mutter_screen_cast::{self, ScreenCastToNiri};
-use crate::dbus::DBusServers;
use crate::frame_clock::FrameClock;
use crate::layout::{output_size, Layout, MonitorRenderElement};
use crate::pw_utils::{Cast, PipeWire};
@@ -134,7 +132,9 @@ pub struct Niri {
pub cursor_image: CursorImageStatus,
pub dnd_icon: Option<WlSurface>,
- pub dbus: Option<DBusServers>,
+ #[cfg(feature = "dbus")]
+ pub dbus: Option<crate::dbus::DBusServers>,
+ #[cfg(feature = "dbus")]
pub inhibit_power_key_fd: Option<zbus::zvariant::OwnedFd>,
// Casts are dropped before PipeWire to prevent a double-free (yay).
@@ -352,6 +352,7 @@ impl State {
}
}
+ #[cfg(feature = "dbus")]
pub fn on_screen_shot_msg(
&mut self,
to_screenshot: &async_channel::Sender<NiriToScreenshot>,
@@ -533,13 +534,17 @@ impl Niri {
cursor_image: CursorImageStatus::default_named(),
dnd_icon: None,
+ #[cfg(feature = "dbus")]
dbus: None,
+ #[cfg(feature = "dbus")]
inhibit_power_key_fd: None,
+
pipewire,
casts: vec![],
}
}
+ #[cfg(feature = "dbus")]
pub fn inhibit_power_key(&mut self) -> anyhow::Result<()> {
let conn = zbus::blocking::ConnectionBuilder::system()?.build()?;
@@ -1520,12 +1525,17 @@ impl Niri {
Ok(())
}
+ #[cfg(feature = "dbus")]
pub fn screenshot_all_outputs(
&mut self,
renderer: &mut GlesRenderer,
include_pointer: bool,
on_done: impl FnOnce(PathBuf) + Send + 'static,
) -> anyhow::Result<()> {
+ use std::cmp::max;
+
+ use smithay::backend::renderer::element::utils::{Relocate, RelocateRenderElement};
+
let _span = tracy_client::span!("Niri::screenshot_all_outputs");
let mut elements = vec![];