ImageMagickを使用してルートウィンドウに複数の画像を表示する

ImageMagickを使用してルートウィンドウに複数の画像を表示する

デスクトップ環境を実行せずにメインウィンドウマネージャ(スタブ WM)。したがって、デスクトップの背景を設定する一般的な方法は、display -window root <image file>私が望むタスクを実行するWM起動スクリプトで実行することです。

複数のモニターを使用している場合、X-root ウィンドウは両方のモニターにまたがり、デッドスペースが含まれます。したがって、コマンドラインを実行すると、画像がウィンドウ全体に広がるかタイル化されるため、役に立ちません。これを使用して-geometry両方のモニターのいずれかにイメージを表示できますが、イメージを再実行すると(両方のモニターで表示)、他のモニターを上書きします。display1回の呼び出しで2つの画像を表示する機能はないようです。

display2台のモニターに異なる画像を表示するには?または、デスクトップ環境なしで「デスクトップの背景画像」効果をどのように取得できますか?

答え1

使用できるmontageフルディスプレイを含む単一の画像を作成し、生成されdisplay -window rootた画像を呼び出します。

または、次のものを使用できます。xloadimage複数の画像を幸せにタイリングします。個々のモニターが認識されないため、画像がフルスクリーンでない場合、または異なるサイズのモニターを使用している場合は、画像の位置を手動で使用または調整する必要があり-atます。-geometry

xloadimage -onroot -at 1680,0 image1.jpg -at 0,0 image2.png

答え2

これが私が使用したものです。

DIR=$HOME/Pictures/Desktop
IMG1="$(ls $DIR/*jpg | shuf | head -1)"
IMG2="$(ls $DIR/*jpg | shuf | head -1)"
montage  -background "#000000" -geometry 1920x1080 $IMG1 $IMG2 jpg:- | display  -foreground "#000000" -backdrop  -window root jpg:-

ルートウィンドウには2つのランダム画像が表示されますが、幸いにも私のモニタは同じ解像度で動作します。

答え3

Xサーバーがxrandrをサポートしている場合 - 次のように検索しました。x壁紙よりシンプルで直接的です。これは私のXsetupの一部です。

# Display different wallpapers for each monitor
cmd='xwallpaper '
if xrandr --listactivemonitors
then
    # xrandr is available: get output names from xrandr
    for output in $(xrandr --listactivemonitors | cut -d ' ' -f6 )
    do
       # set different image for each monitor
       img=$(ls /usr/share/backgrounds/active/*.jpg | shuf | head -1 )
       cmd="$cmd --output $output --stretch $img "
    done
else
    # fallback: xrandr not available
    img=$(ls /usr/share/backgrounds/active/*.jpg | shuf | head -1 )
    cmd="$cmd --no-randr --stretch $img "
fi
$cmd

関連情報