1
0
Fork 0
forked from wry/wry

autocommit 2022-02-28 00:14:11 CET

This commit is contained in:
Julian Orth 2022-02-28 00:14:11 +01:00
parent db88f2db42
commit 0e9afcbfa5
22 changed files with 1013 additions and 239 deletions

View file

@ -19,7 +19,7 @@ use crate::backends::dummy::DummyBackend;
use crate::backends::xorg::{XorgBackend, XorgBackendError};
use crate::client::Clients;
use crate::clientmem::ClientMemError;
use crate::dbus::Dbus;
use crate::dbus::{Dbus, FALSE};
use crate::event_loop::EventLoopError;
use crate::forker::ForkerError;
use crate::globals::Globals;
@ -40,6 +40,7 @@ use crate::utils::clonecell::CloneCell;
use crate::utils::errorfmt::ErrorFmt;
use crate::utils::numcell::NumCell;
use crate::utils::queue::AsyncQueue;
use crate::utils::run_toplevel::RunToplevel;
use crate::wheel::WheelError;
use crate::wire_dbus::org;
use crate::xkbcommon::XkbContext;
@ -47,7 +48,6 @@ use acceptor::Acceptor;
use async_engine::AsyncEngine;
use event_loop::EventLoop;
use log::LevelFilter;
use std::borrow::Cow;
use std::cell::Cell;
use std::ops::Deref;
use std::rc::Rc;
@ -140,6 +140,7 @@ fn main_() -> Result<(), MainError> {
let xkb_keymap = xkb_ctx.keymap_from_str(include_str!("keymap.xkb")).unwrap();
let wheel = Wheel::install(&el)?;
let engine = AsyncEngine::install(&el, &wheel)?;
let (_run_toplevel_future, run_toplevel) = RunToplevel::install(&engine);
let node_ids = NodeIds::default();
let state = Rc::new(State {
xkb_ctx,
@ -175,21 +176,39 @@ fn main_() -> Result<(), MainError> {
pending_container_titles: Default::default(),
pending_float_layout: Default::default(),
pending_float_titles: Default::default(),
dbus: Dbus::new(&engine),
dbus: Dbus::new(&engine, &run_toplevel),
});
let _future = state.eng.spawn({
let dbus = state.dbus.system().unwrap();
async move {
const LOGIND: &str = "org.freedesktop.login1";
let reply = dbus
.call_async(
LOGIND,
"/org/freedesktop/login1",
org::freedesktop::login1::manager::GetSession {
session_id: std::env::var("XDG_SESSION_ID").unwrap().into(),
},
)
.await
.unwrap();
let reply = dbus
.call_async(
LOGIND,
&reply.get().object_path,
org::freedesktop::login1::session::TakeControl { force: FALSE },
)
.await;
log::info!("{:?}", reply);
let reply = dbus
.get_async::<org::freedesktop::login1::manager::BootLoaderEntries>(
LOGIND,
"/org/freedesktop/login1",
)
.await;
log::info!("{:?}", reply);
}
});
state.dbus.system().unwrap().call_noreply(
"org.freedesktop.DBus",
"/org/freedesktop/dbus",
org::freedesktop::dbus::HelloCall,
);
state.dbus.system().unwrap().call_noreply(
"org.freedesktop.login1",
"/org/freedesktop/login1",
org::freedesktop::login1::manager::GetSessionCall {
// session_id: Cow::Owned(std::env::var("XDG_SESSION_ID").unwrap()),
session_id: Cow::Borrowed("hurr durr"),
},
);
forker.install(&state);
let backend = XorgBackend::new(&state)?;
state.backend.set(backend);