実行中の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を使用する他のシステムでは、上記の出力をパイプしてpamrgbatopng
png画像を生成できます。