i3でImageMagickを使用してURxvtで偽の透明度を実装する

i3でImageMagickを使用してURxvtで偽の透明度を実装する

i3で背景を設定する最も人気のある方法は、次のようにfeh使用するようです。

exec_always feh --bg-fill /home/user/Pictures/wallpaper.jpg

あなたのファイルに~/.config/i3/config。その後、以下を使用して透明に設定~/.Xresourcesできます。URxvt

URxvt.transparent:     true
URxvt.shading:         50
URxvt.blurRadius:      0
URxvt.background:      #d3d3d3
URxvt.foreground:      #1d1f21

fehご覧のとおり、この2つの機能は私の自宅のコンピュータで完全に連携します。今はひどいカラースキームを無視してください。

ここに画像の説明を入力してください。

fehこれで、さまざまな理由で職場でyumリポジトリへのアクセスが制限されました。また、自分自身やそのようなものをダウンロードしてコンパイルすることはできません。代わりに、私はImageMagickそのdisplay機能を使って背景を設定してきました。

exec_always display -window root /home/user/Pictures/wallpaper.jpg

壁紙自体を設定し、i3で動作します。

問題は、これはImageMagick実際にはルートイメージを設定するのではなく、オーバーレイのみを設定するように見え、URxvt最終的にデフォルトのグレーのルートイメージを読み取ることになります。このコンピュータも私の家のコンピュータであり、うまく動作するので問題はfehありません。URxvt

ここに画像の説明を入力してください。

  1. ImageMagick実際にルートの壁紙を設定するように背景を設定する他の方法はありますか?これが私が好む解決策です。
  2. 壁紙を設定するために使用できる他のソフトウェアや、あらかじめインストールされている共通ツールがある場合は良いですか?もう一度申し上げますが、feh私が職場で見てみるべきことにアクセスできないことに注意してください。私は見たこの投稿いくつかの言及がありましたが、作品に登場したことを確認する時間はありませんでした。 1. また、真の透明性のためにcompton、xcompmgrなどにアクセスすることはできません。

修正する:xsetroot私はImageMagickを使って画像に変換してみましたが、.jpg白黒のみをサポートする画像でのみ動作します。表示された画像とまだ同じであることを望んでいるので、動作しません。.bmpconvertxsetroot.xbm.jpg

答え1

ltraceこれを実行すると、fehピックスマップを作成し、XsetWindowBackgroundPixmapを使用してルートウィンドウに接続するように見えます(193はルートウィンドウIDの0xc1です)。

XOpenDisplay(...) = 0x22a8a50
XCreatePixmap(0x22a8a50, 193, 1920, 1080)        = 0x3000001
XSetWindowBackgroundPixmap(0x22a8a50, 193, 0x3000001, ...) = 1

しかし、もっと重要なのは、ルートウィンドウに2つのプロパティを設定することです。

XChangeProperty(0x22a8a50, 193, 312, 20)         = 1
XChangeProperty(0x22a8a50, 193, 807, 20)         = 1

あなたは見ることができます

$ xprop -root
  ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0x3000001
  _XROOTPMAP_ID(PIXMAP): pixmap id # 0x3000001

ImageMagickのようなプログラムは、displayルートの背景を変更したときにこれらのプロパティを更新しないようです。

使用後確認できますfeh。上記の2つのプロパティを削除すると、プログラムはxprop -root -remove ...透明urxvtな背景を表示しなくなります。

xpropオプションがありますが、それを-set使用してPixmap IDを設定または変更する方法がわかりません。

関連情報