アプリケーションウィンドウの親を再割り当てするためのラッパー(ウィンドウフレームなし)

アプリケーションウィンドウの親を再割り当てするためのラッパー(ウィンドウフレームなし)

Cinnamon言い換えれば、私はウィンドウマネージャにオプションがないデスクトップ環境(Debian Sid)を使用しています。飾らないアプリケーションウィンドウ。

私が見る多くのプログラムは、上記のウィンドウマネージャにフレームやその他のアイテム(Google Chromeなど)を独自に提供するように指示します。それが存在するのか、それともこのようなラッパーを書くことができるのか疑問に思います。

$ noframes mupdf my16:9slides.pdf

一度実行したら、ウィンドウマネージャにフレームなどを気にしないように指示し、アプリケーションを実行して親を再割り当てしてください。

(おそらくわずかな)利点は、この例では、ウィンドウの縦横比が16:9に近く、1/4スクリーン拡大機能を使用すると、ウィンドウが利用可能なスペースにほぼ正確に収まるということです。

PS:私から.twmrc

NoTitle {"mupdf" ...}

答え1

次のコードを使用してタイトルバーを無効/有効にできます。

#!/usr/bin/python2
from gtk.gdk import *

w=window_foreign_new((get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0])

if w.get_decorations() == 0 :
    w.set_decorations(DECOR_ALL)
else:
    w.set_decorations(0)

window_process_all_updates()

それから来るこの点。これはこの記事に基づいて書かれています。特定のWMの装飾を削除
記事で述べたように、興味のあるウィンドウから装飾を削除するショートカットを作成できます。

CinnamonキーボードショートカットでSuper+U実行可能で、内のシーケンス(私が使用する)をスクリプトにバインドしますPATH。アクティブウィンドウでシーケンスをクリックすると装飾が削除されます。叩くと戻ってきます。

答え2

これをテストするためにインストールしていませんが、アプリが境界線にもかかわらず全画面表示される場合は、全画面ウィンドウから装飾を削除できる「Cinnamon Maximus」拡張機能がある可能性があります。

あるいは、ウィンドウの上書きリダイレクトフラグを設定するなど、画期的な方法を試してみることもできます。これを行うには、ウィンドウマネージャがウィンドウを管理してはいけません。その後、ウィンドウをルートウィンドウにリセットします。このフルスクリーンモードを終了できない可能性があるため、何らかの方法でアプリを終了できることを確認してください。

たとえば、xlogoを実行してrootウィンドウIDを取得し、xdotoolを使用してxlogo設定を変更します。

$ xlogo &
$ xwininfo -root | grep id:
xwininfo: Window id: 0xc1 (the root window) (has no name)
$ xdotool search xlogo  set_window --overrideredirect 1  windowreparent 0xc1

関連情報