Crontab이 i3의 두 화면 모두에서 feh를 올바르게 실행하지 않습니다(표시 변수가 0으로 설정됨).

Crontab이 i3의 두 화면 모두에서 feh를 올바르게 실행하지 않습니다(표시 변수가 0으로 설정됨).

두 개의 화면이 있고 매일 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 또는 대화식으로 실행될 수 있습니다. 단, 화면 크기가 다르면 제대로 작동하지 않을 수 있습니다.

관련 정보