upstartを使用してRedshiftを起動するのに適した時期はいつですか?

upstartを使用してRedshiftを起動するのに適した時期はいつですか?

入手しようとしてきました。赤い片スタート今後特に、ユーザーを切り替えるときに明るいスタート画面が見えないようにログインしてください。

Redshiftをサービスとして実行することは完全にはサポートされていないようです(例:このエラー)しかしそうです。可能原則として。

試した後AskUbuntuで見つけたいくつかのコンテンツそれでもうまくいかない場合、現在私の試みは私自身のスタートアップを構築することです/etc/init/redshift.conf

# Redshift

description "Redshift"
author      "[email protected]"

start on (started lightdm)

script
  exec redshift -c /etc/redshift.conf
end script

stop on runlevel [016]

私の考えでは、LightDMが実行された後に起動するのが効果的であり、停止することをお勧めします。

これで、これは私のログファイルに書き込まれます/var/log/upstart/redshift.log

`RANDR Query Version' returned error -1
Initialization of randr failed.

このエラーをインターネット検索しても、多くの情報は提供されません。私推測するまだ早く、ディスプレイマジックに関連するいくつかのサービスはまだ実行されていません。

私の表情はどうすればいいですかstart on

Ubuntu 14.04 LTS; 3.13.0-77-一般 #121-Ubuntu SMP... x86_64 GNU/Linux
RandR サーバーバージョン 1.12.1;

答え1

赤編がvs。Xサーバー。システムの起動の一部として起動できますが、これは脆弱です。 Xサーバーセッション(Xログインセッションよりも幅広い)のコンテキストで開始することは安定しています。

複数の X サーバーが、ある時点で同じマシン上で実行できます。彼らは先着順にディスプレイ番号を割り当てます。表示番号は、プログラムが接続するサーバーを知る方法と、プログラムがDISPLAY環境変数でサーバーを見つける方法です。 GUIプログラムを起動する自然な方法は、DISPLAY環境変数を希望の値に設定することです。

lightdmがXサーバーを起動する最初のエンティティであると仮定できるため、起動操作で:0環境変数を表示してハードコードします。DISPLAY=:0また、変数を設定する必要がありますXAUTHORITY(参照:リモートXモニターでウィンドウを開く(「モニターを開けません」理由)?)。 Ubuntuのlightdmはクッキーを/var/lib/lightdm/.Xauthority

env DISPLAY=":0"
env XAUTHORITY="/var/lib/lightdm/.Xauthority"

しかし、これは壊れやすいです。ディスプレイlightdmが最終的に配置されているとします:0。競合状態のため、現在の形式では動作しないと思います。lightdmXサーバーが起動して実行される前に、ジョブが開始されたと見なすことができます(ただし、これについてはよくわかりません。何がわかりません。ジョブが開始されたと計算されます)。

きれいな方法は、lightdmにRedshiftを起動させることです。これを行うと、適切な時間に適切なコンテキストで始まります。このセクションの行を編集して追加/etc/lightdm/lightdm.confします。redshift -c /etc/redshift.confdisplay-setup-scriptSeatDefaults

[SeatDefaults]
display-setup-script=redshift -c /etc/redshift.conf &

&バックグラウンドで起動するように注意してくださいredshift(そうでない場合は、lightdmが完了するのを待ちます)。 X サーバーがシャットダウンすると Redshift もシャットダウンすると仮定します。 Xアプリケーションは通常、ディスプレイが消えたときに終了するため、プロセスを追跡して明示的に終了する必要はありません。

答え2

避けるlightdm-freeze

その理由は、&シェルに渡されず、レッドシフトにパラメータとして渡されるためです(ps -aux検証を参照)。この問題を解決するには、f.exスクリプトを生成してください。

redshift -c  /etc/redshift.conf &

存在する/root/bin/redshift.sh。 chmod 755と/etc/lightdm/lightdm.conf.d/90-redshift.conf含めるように編集

[Seat:*]
display-setup-script=/root/bin/redshift.sh

[Seat:*]新しいようです[SeatDefaults])。

関連情報