X11 中可以旋转单个窗口吗?我尝试使用 Xephyr 但遇到了错误 100458。
如果有帮助的话,我使用 XMonad 作为 WM。
答案1
我进行了一些搜索,但很惊讶没有找到现成的解决方案。一种可能是使用 KWin 并为其编写“Kwin 效果”:https://blog.martin-graesslin.com/blog/2009/07/how-to-write-a-kwin-effect/。此外,可以想象 gnome shell 扩展,但目前还不存在。
解决方案:Weston 是 Wayland 的参考实现。它允许使用超级键+鼠标中键旋转窗口。由于这仅适用于 Wayland 客户端,因此您可以在 weston 中运行 Xwayland,在 Xwayland 上运行 X 应用程序,并旋转 Xwayland 显示。如果您的应用程序支持 Wayland(例如,基于 GTK3、QT5 或 SDL),则无需 Xwayland 即可在 weston 中使用。
对于 Xwayland 上的 X 应用程序
weston
WAYLAND_DISPLAY=wayland-0 Xwayland :5
DISPLAY=:5 yourXapplication
DISPLAY=:5 x-window-manager # additionally run a window manager for comfort
(在 Gnome-Wayland 上,您可以直接运行 Xwayland,无需使用 weston,但我不知道 Gnome-Wayland 是否有用于旋转窗口的选项)。
对于没有 Xwayland 的 QT5 应用程序:
weston
WAYLAND_DISPLAY=wayland-0 QT_QPA_PLATFORM=wayland yourQT5application
对于没有 Xwayland 的 GTK3 和 SDL 应用程序:
weston
WAYLAND_DISPLAY=wayland-0 yourGTK3application
(注意:您可以指定一个 wayland 套接字/WAYLAND_DISPLAY,weston --socket=mywaylandsocket
而不是假设它是wayland-0
。您需要在 Gnome-Wayland 上执行此操作,因为它使用wayland-0
自身)
答案2
我正在使用 Weston 添加第二个答案,它比我的第一个答案有点不同,但更有用。创建一个~/.config/weston.ini
包含以下内容的文件:
[core]
modules=xwayland.so
shell=desktop-shell.so
idle-time=0
[shell]
background-color=0xff002244
locking=false
# panel-location=none
[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/weston-terminal
[launcher]
icon=/usr/share/icons/hicolor/48x48/apps/firefox.png
path=/usr/bin/firefox
[output]
name=X1
mode=600x800
transform=90
# wanna get mad? use: transform=flipped-270
scale=1
这weston.ini
使得xwayland.so
韦斯顿无根无身。[output]
的部分将name=X1
weston 的外观定义为 X 客户端。
mode=600x800
设置屏幕/窗口大小。transform=90
旋转 weston 显示。scale=1
如果需要,设置比例因子。- 这些
[launcher]
部分可用于为您的 X 应用程序创建自定义面板启动器。
请参阅man weston.ini
和/usr/share/doc/weston/examples/weston.ini
了解更多信息和选项。
panel-location=none
(您可以使用 禁用它,解析 weston 的输出xserver listening on display :1
并使用,而不是使用 weston 面板DISPLAY=:1 yourXapp
)