Crontabはi3の両方の画面でfehを正しく実行しません(表示変数は0に設定されています)。

Crontabはi3の両方の画面でfehを正しく実行しません(表示変数は0に設定されています)。

2つの画面があり、毎日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

これにより、すべての画面に壁紙のコピーが設定されなくなります。両方の画面を1つとして扱い、この壁紙を「結合画面」の中央に設定します。

|----@@@@|  |@@@@----|
|----@@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 -

スクリプトコメントに書かれているように、スクリプトは画面サイズを計算し、2つの画面の組み合わせ画像を手動で設定し(imagemagickツールを使用して)、Xinerama機能がまったくなくfehを起動します。

これはcronまたは対話式で実行できます。ただし、画面サイズが異なると正しく動作しないことがあります。

おすすめ記事