두 개의 화면이 있고 매일 i3에 새 배경화면을 설정하는 스크립트가 있습니다. 스크립트는 기본적으로 이미지를 다운로드한 후 다음 명령을 실행합니다.
convert {save_location} -trim JPG:- | feh --bg-max -
이는 대화형으로 실행될 때 매우 잘 작동합니다. 아래 표시된 것처럼 모든 화면에 동일한 배경 화면의 복사본이 표시됩니다.
|@@@@@@@@| |@@@@@@@@|
|@@hello@| |@@hello@|
|@@@@@@@@| |@@@@@@@@|
표시 변수가 다음으로 설정되었습니다: 0
echo $DISPLAY
:0
그러나 실행하면 다음과 같습니다 crontab -e
.
0 1 * * * DISPLAY=:0 python .../change_wallpaper.py
그러면 모든 화면에 배경화면 사본이 설정되지 않습니다. 두 화면을 하나로 취급하고 이 배경 화면을 "결합된 화면"의 중앙에 설정합니다.
|----@@@@| |@@@@----|
|----@@he| |llo@----|
|----@@@@| |@@@@----|
이것은 분명히 추악해 보입니다.
검색했지만 이 문제를 해결하는 방법에 대한 좋은 조언을 찾을 수 없었습니다. 어쩌면 커뮤니티의 누군가가 몇 가지 팁을 제공할 수도 있습니다. 미리 감사드립니다.
내 환경: Ubuntu 20.04, i3, gdm
답변1
자, 소스코드를 읽어본 후ㅋㅋㅋ, 문제는 xinerama와 관련이 있다고 확신합니다. 이 문제를 완벽한 방법으로 해결할 수는 없지만 해결 방법으로 작동하는 스크립트는 다음과 같습니다.
#!/bin/bash
# Compute screen size
size=$(xrandr | grep *+ -m 1 \
| sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
# then manually collate a combined picture for two screens and
# launch feh without xinerama functionality
convert [path/to/picture] \
-trim \
-resize $size \
-background black -compose Copy \
-gravity center -extent $size \
-quality 92 +duplicate +append JPG:- \
| feh --bg-max --no-xinerama -
스크립트 주석에 작성된 대로 스크립트는 화면 크기를 계산한 다음 두 화면의 결합된 그림을 수동으로 구성하고(imagemagick 도구 사용) Xinerama 기능이 전혀 없이 feh를 시작합니다.
이는 cron 또는 대화식으로 실행될 수 있습니다. 단, 화면 크기가 다르면 제대로 작동하지 않을 수 있습니다.