xwayland: Expose DISPLAY variable to clients
This commit is contained in:
parent
51f53aa899
commit
e5f4911bb6
3 changed files with 23 additions and 2 deletions
|
|
@ -900,6 +900,15 @@ impl State {
|
||||||
.arg("-c")
|
.arg("-c")
|
||||||
.arg(command)
|
.arg(command)
|
||||||
.env("WAYLAND_DISPLAY", &self.common.socket)
|
.env("WAYLAND_DISPLAY", &self.common.socket)
|
||||||
|
.env(
|
||||||
|
"DISPLAY",
|
||||||
|
&self
|
||||||
|
.common
|
||||||
|
.xwayland_state
|
||||||
|
.values()
|
||||||
|
.find_map(|s| s.display.map(|v| format!(":{}", v)))
|
||||||
|
.unwrap_or(String::new()),
|
||||||
|
)
|
||||||
.env_remove("COSMIC_SESSION_SOCK")
|
.env_remove("COSMIC_SESSION_SOCK")
|
||||||
.spawn()
|
.spawn()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,9 @@ pub fn setup_socket(handle: LoopHandle<Data>, state: &State) -> Result<()> {
|
||||||
.into_string()
|
.into_string()
|
||||||
.map_err(|_| anyhow!("wayland socket is no valid utf-8 string?"))?,
|
.map_err(|_| anyhow!("wayland socket is no valid utf-8 string?"))?,
|
||||||
);
|
);
|
||||||
|
if let Some(display) = state.common.xwayland_state.values().find_map(|s| s.display) {
|
||||||
|
env.insert(String::from("DISPLAY"), format!(":{}", display));
|
||||||
|
}
|
||||||
let message = serde_json::to_string(&Message::SetEnv { variables: env })
|
let message = serde_json::to_string(&Message::SetEnv { variables: env })
|
||||||
.with_context(|| "Failed to encode environment variables into json")?;
|
.with_context(|| "Failed to encode environment variables into json")?;
|
||||||
let bytes = message.into_bytes();
|
let bytes = message.into_bytes();
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,22 @@ use std::process::Command;
|
||||||
pub fn ready(state: &State) {
|
pub fn ready(state: &State) {
|
||||||
if booted() {
|
if booted() {
|
||||||
match Command::new("systemctl")
|
match Command::new("systemctl")
|
||||||
.args(["--user", "import-environment", "WAYLAND_DISPLAY"])
|
.args(["--user", "import-environment", "WAYLAND_DISPLAY", "DISPLAY"])
|
||||||
.env("WAYLAND_DISPLAY", &state.common.socket)
|
.env("WAYLAND_DISPLAY", &state.common.socket)
|
||||||
|
.env(
|
||||||
|
"DISPLAY",
|
||||||
|
&state
|
||||||
|
.common
|
||||||
|
.xwayland_state
|
||||||
|
.values()
|
||||||
|
.find_map(|s| s.display.map(|v| format!(":{}", v)))
|
||||||
|
.unwrap_or(String::new()),
|
||||||
|
)
|
||||||
.status()
|
.status()
|
||||||
{
|
{
|
||||||
Ok(x) if x.success() => {}
|
Ok(x) if x.success() => {}
|
||||||
Ok(x) => slog_scope::warn!(
|
Ok(x) => slog_scope::warn!(
|
||||||
"Failed to import WAYLAND_DISPLAY into systemd (exit code {:?})",
|
"Failed to import WAYLAND_DISPLAY/DISPLAY into systemd (exit code {:?})",
|
||||||
x.code()
|
x.code()
|
||||||
),
|
),
|
||||||
Err(err) => slog_scope::error!(
|
Err(err) => slog_scope::error!(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue