web-dev-qa-db-ja.com

X11でウィンドウを回転させる方法

X11で単一のウィンドウを回転させることは可能ですか? Xephyrを使おうとしましたが、 bug 100458 に遭遇しました。

それが助けになるなら、私はWMとしてXMonadを使用します。

5

私は少し検索しましたが、これに対する準備ができた解決策が見つからないことに驚いています。 KWinを使用して、「Kwin​​エフェクト」を作成する可能性があります。 https://blog.martin-graesslin.com/blog/2009/07/how-to-write-a-kwin-effect / 。また、gnome Shell拡張機能も考えられますが、まだ存在していません。

回避策:WestonはWaylandのリファレンス実装です。スーパーキー+マウスの中ボタンでウィンドウを回転させることができます。これはWaylandクライアントでのみ機能するため、ウェストンでXwaylandを実行し、XwaylandでXアプリケーションを実行し、Xwaylandディスプレイを回転させることができます。アプリケーションがWaylandをサポートしている場合(GTK3、QT5、SDLなどに基づく)、これはXwaylandがなくてもウェストンで機能します。

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では、westonを使用せずにXwaylandを直接実行できますが、ウィンドウを回転するGnome-Waylandオプションを認識していません)。

Xwaylandを使用しないQT5アプリケーションの場合:

weston
WAYLAND_DISPLAY=wayland-0  QT_QPA_PLATFORM=wayland  yourQT5application

Xwaylandを使用しないGTK3およびSDLアプリケーションの場合:

weston
WAYLAND_DISPLAY=wayland-0 yourGTK3application

(注:ウェイランドソケット/ WAYLAND_DISPLAYをweston --socket=mywaylandsocketと想定する代わりに、wayland-0で指定できます。Gnome-Waylandではwayland-0自体を使用するため、これを行う必要があります)

3
mviereck

Westonを使用して2番目の回答を追加します。これは、最初の回答とは少し異なり、より使いやすくなっています。次の内容でファイル~/.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セクションは、ウェストンのXクライアントとしての外観を定義します。

  • mode=600x800は画面/ウィンドウサイズを設定します。
  • transform=90はウェストンディスプレイを回転させます。
  • scale=1は、必要に応じて倍率を設定します。
  • [launcher]セクションを使用して、Xアプリケーション用のカスタムパネルスターターを作成できます。

詳細とオプションについては、man weston.iniおよび/usr/share/doc/weston/examples/weston.iniを参照してください。

(ウェストンパネルを使用する代わりに、panel-location=noneで無効にし、ウェストンの出力をxserver listening on display :1で解析し、DISPLAY=:1 yourXappを使用できます)

1
mviereck