X11中如何旋转窗口

X11中如何旋转窗口

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=X1weston 的外观定义为 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

相关内容