ImageMagick을 사용하여 루트 창에 여러 이미지 표시

ImageMagick을 사용하여 루트 창에 여러 이미지 표시

데스크톱 환경을 실행하지 않고 기본 창 관리자(그루터기 WM). 따라서 데스크탑 배경을 설정하는 일반적인 방법은 display -window root <image file>내가 원하는 작업을 수행하는 WM 시작 스크립트에서 실행하는 것입니다.

다중 모니터를 사용하는 경우 X-root 창은 두 모니터에 걸쳐 있으며 데드 스페이스를 포함합니다. 따라서 명령줄을 실행하면 이미지가 전체 창에 걸쳐 늘어나거나 타일링되므로 쓸모가 없습니다. 이를 사용하여 -geometry두 모니터 중 하나에 이미지를 표시할 수 있지만 이미지를 다시 실행하면(두 모니터 모두에서 보기) 다른 모니터를 덮어씁니다. display한 번의 호출로 두 개의 이미지를 표시하는 기능은 없는 것 같습니다 .

display두 모니터에 서로 다른 이미지를 표시하는 방법은 무엇입니까 ? 아니면 데스크탑 환경 없이 "데스크탑 배경 이미지" 효과를 어떻게 얻을 수 있습니까?

답변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

관련 정보