Skip to content

Commit a1d0057

Browse files
committed
#413 link xwayland socket properly for X11 apps fedora
1 parent f71e585 commit a1d0057

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

root/defaults/startwm_wayland.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,17 @@ export XDG_CURRENT_DESKTOP=KDE
9797
export XDG_SESSION_TYPE=wayland
9898
export KDE_SESSION_VERSION=6
9999
unset DISPLAY
100+
export DISPLAY=:1
101+
sudo mkdir -p /tmp/.X11-unix
102+
sudo chmod 1777 /tmp/.X11-unix
100103
dbus-run-session bash -c '
101-
WAYLAND_DISPLAY=wayland-1 kwin_wayland --no-lockscreen &
104+
WAYLAND_DISPLAY=wayland-1 python3 /kwin-xwayland.py &
102105
KWIN_PID=$!
103106
sleep 2
104107
if [ -f /usr/lib/libexec/polkit-kde-authentication-agent-1 ]; then
105108
/usr/lib/libexec/polkit-kde-authentication-agent-1 &
106109
elif [ -f /usr/libexec/polkit-kde-authentication-agent-1 ]; then
107-
/usr/libexec/polkit-kde-authentication-agent-1
110+
/usr/libexec/polkit-kde-authentication-agent-1 &
108111
fi
109112
WAYLAND_DISPLAY=wayland-0 plasmashell
110113
kill $KWIN_PID

root/kwin-xwayland.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env python3
2+
import socket
3+
import os
4+
5+
display_env = os.environ.get("DISPLAY", ":1")
6+
display_num = display_env.lstrip(":")
7+
path = f"/tmp/.X11-unix/X{display_num}"
8+
9+
if os.path.exists(path):
10+
os.remove(path)
11+
12+
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
13+
s.bind(path)
14+
s.listen(128)
15+
16+
fd = s.fileno()
17+
os.set_inheritable(fd, True)
18+
19+
os.execlp(
20+
"kwin_wayland",
21+
"kwin_wayland",
22+
"--no-lockscreen",
23+
"--xwayland",
24+
f"--xwayland-display=:{display_num}",
25+
f"--xwayland-fd={fd}"
26+
)

0 commit comments

Comments
 (0)