web-dev-qa-db-ja.com

別のプログラムのタイトルバーを削除する

過剰なライブラリを使用してプログラムを開発し、そのタイトルバーを削除したいと考えています。

過剰なライブラリからタイトルバーを削除することは不可能であるため、外部ツールを使用してタイトルバーを削除する必要があります。

Windowsオペレーティングシステムで他のウィンドウ装飾を操作することが可能であるという事実に関して、私はこの障害に対する同様の救済策を見つけたいと考えています。

スクリプトまたは単純なX11アプリケーションで特定のウィンドウのタイトルバーを削除する方法について何かアイデアはありますか?

10
Sponge Comrade

Wmctrl

これは一種の関連ですが、wmctrlコマンドを使用して、このミステリーアプリケーションのタイトルバーのテキストを変更できます。

アプリケーションgvimを実行したとしましょう。開いているウィンドウを一覧表示すると、次のように表示されます。

$  wmctrl -l
0x04402eed -1 grinchy N/A
0x00c00003 -1 grinchy Bottom Expanded Edge Panel
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x02a00004  0 grinchy saml@grinchy:~
0x06800003  0 grinchy [No Name] - GVIM

そのため、gvimウィンドウのタイトルは「[No Name]-GVIM」です。wmctrlを使用して、そのように名前を変更できます。

$ wmctrl -r "[No Name] - GVIM" -N "new name"

-lスイッチをもう一度実行すると、新しい名前が表示されます。

$ wmctrl -l
0x04402eed -1 grinchy N/A
0x00c00003 -1 grinchy Bottom Expanded Edge Panel
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x02a00004  0 grinchy saml@grinchy:~
0x06800003  0 grinchy new name

すべての装飾

このAskUbuntuのQ&Aでは、この方法について説明しています。 gnomeでMPlayerのタイトルバーを非表示にできますか?

これは Python-window-toggle-decorations.py の要旨であり、希望どおりの動作をするように見えました。ニーズに合わせて変更できる場合があります。

window-toggle-decorations.py

#! /usr/bin/python2
import gtk.gdk
w = gtk.gdk.window_foreign_new( gtk.gdk.get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0] )
w.set_decorations( (w.get_decorations()+1)%2 ) # toggle between 0 and 1
gtk.gdk.window_process_all_updates()
gtk.gdk.flush()

# now bind this to super-r or something 
10
slm

Muktupavelsが開発した単純なCプログラムがあります。 https://Gist.github.com/muktupavels

私はそれを使用し、それは非常にうまくいきます。ここだよ

https://Gist.github.com/muktupavels/d03bb14ea6042b779df89b4c87df975d

特定のアプリケーションのタイトルバーのオンとオフを切り替えることができます。

それを使用するには、_libx11-dev_ライブラリがインストールされていることを確認してください

_Sudo apt-get install -y libx11-dev
_

次に、このコマンドを使用してコードをコンパイルします

_gcc toggle-decorations.c -Wall -o toggle-decorations `pkg-config --cflags --libs x11`
_

このコマンドで実行します

_./toggle-decorations $(wmctrl -lx | grep -E "name_of_your_application_here" | grep -oE "[0-9a-z]{10}")
_

ここで、$(...)は、wmctrlを使用してアプリケーションの_--id_をキャプチャします。

私はこの素晴らしい仕事をしなかったし、それを信用していません。

それはmuktupavelsによって行われました。

5
Kes