実行中のXプログラムのアイコンをダンプする方法は?

実行中のXプログラムのアイコンをダンプする方法は?

実行中のXプログラムのアイコンを取得する方法はありますか?たとえば、xfwm4を介してウィンドウを切り替えると、対応するアイコンが表示されます。

ベストアンサー1

これは私にとって効果的です。すべてのアプリケーションとすべてのウィンドウマネージャでは機能しない可能性があります。このpam形式は少なくともImageMagickでサポートされているため、必要に応じて以下を使用してdisplayそれを表示して他の形式に変換できますconvert

xprop -notype 32c _NET_WM_ICON |
  perl -0777 -pe '@_=/\d+/g;
    printf "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n", splice@_,0,2;
    $_=pack "N*", @_;
    s/(.)(...)/$2$1/gs' > icon.pam

(その後、アイコンをインポートするウィンドウをクリックしてxpropの-idオプションも参照してください)

アイデアは、xpropを使用してプロパティを32ビット10進整数リストにインポートし、Perlを使用してグラフィック形式に変換することです。ここでは単純化のためにpamを選択しましたが、_NET_WM_ICONはARGBで、pamはバイトを並べ替える必要がありました。 RGBA。

pam 形式に関する注意。それネットワークPBM形式のnetpbmは、古いUnix画像処理ツールボックスです。ただし、さまざまな問題(主にライセンスの問題)のため、最新のnetpbmバージョンはDebianとその派生バージョン(Ubuntuなど)によってパッケージ化されていません。これは、ほとんどのpam変換ユーティリティが存在しないことを意味します。最新のnetpbmを使用する他のシステムでは、上記の出力をパイプしてpamrgbatopngpng画像を生成できます。

おすすめ記事