Merge pull request #15 from lilyinstarlight/feature/xdg-data-dirs-sessions
Search all XDG_DATA_DIRS and XDG_DATA_HOME for sessions
This commit is contained in:
commit
df9f2092e8
3 changed files with 27 additions and 9 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
|
@ -825,6 +825,7 @@ dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
"upower_dbus",
|
"upower_dbus",
|
||||||
"wayland-client 0.31.1",
|
"wayland-client 0.31.1",
|
||||||
|
"xdg",
|
||||||
"zbus",
|
"zbus",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ pam-client = "0.5.0"
|
||||||
pwd.workspace = true
|
pwd.workspace = true
|
||||||
ron.workspace = true
|
ron.workspace = true
|
||||||
shlex = "1.2.0"
|
shlex = "1.2.0"
|
||||||
|
xdg = "2.5.2"
|
||||||
#TODO: reduce features
|
#TODO: reduce features
|
||||||
tokio = { workspace = true, features = ["full"] }
|
tokio = { workspace = true, features = ["full"] }
|
||||||
wayland-client = "0.31.1"
|
wayland-client = "0.31.1"
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,15 @@ use cosmic::{
|
||||||
};
|
};
|
||||||
use cosmic_greeter_daemon::{UserData, WallpaperData};
|
use cosmic_greeter_daemon::{UserData, WallpaperData};
|
||||||
use greetd_ipc::{codec::SyncCodec, AuthMessageType, Request, Response};
|
use greetd_ipc::{codec::SyncCodec, AuthMessageType, Request, Response};
|
||||||
use std::{collections::HashMap, env, error::Error, fs, io, path::Path, process, sync::Arc};
|
use std::{
|
||||||
|
collections::HashMap,
|
||||||
|
env,
|
||||||
|
error::Error,
|
||||||
|
fs, io,
|
||||||
|
path::{Path, PathBuf},
|
||||||
|
process,
|
||||||
|
sync::Arc,
|
||||||
|
};
|
||||||
use tokio::{net::UnixStream, time};
|
use tokio::{net::UnixStream, time};
|
||||||
use wayland_client::{protocol::wl_output::WlOutput, Proxy};
|
use wayland_client::{protocol::wl_output::WlOutput, Proxy};
|
||||||
use zbus::{dbus_proxy, Connection};
|
use zbus::{dbus_proxy, Connection};
|
||||||
|
|
@ -116,14 +124,22 @@ pub fn main() -> Result<(), Box<dyn Error>> {
|
||||||
Wayland,
|
Wayland,
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: allow custom directories?
|
let session_dirs = xdg::BaseDirectories::with_prefix("wayland-sessions")
|
||||||
let session_dirs = &[
|
.map_or(
|
||||||
(
|
vec![PathBuf::from("/usr/share/wayland-sessions")],
|
||||||
Path::new("/usr/share/wayland-sessions"),
|
|xdg_dirs| xdg_dirs.get_data_dirs(),
|
||||||
SessionType::Wayland,
|
)
|
||||||
),
|
.into_iter()
|
||||||
(Path::new("/usr/share/xsessions"), SessionType::X11),
|
.map(|dir| (dir, SessionType::Wayland))
|
||||||
];
|
.chain(
|
||||||
|
xdg::BaseDirectories::with_prefix("xsessions")
|
||||||
|
.map_or(
|
||||||
|
vec![PathBuf::from("/usr/share/xsessions")],
|
||||||
|
|xdg_dirs| xdg_dirs.get_data_dirs(),
|
||||||
|
)
|
||||||
|
.into_iter()
|
||||||
|
.map(|dir| (dir, SessionType::X11)),
|
||||||
|
);
|
||||||
|
|
||||||
let sessions = {
|
let sessions = {
|
||||||
let mut sessions = HashMap::new();
|
let mut sessions = HashMap::new();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue