web-dev-qa-db-ja.com

f.Luxの自動動作を上書きできますか?

私が偶然見つけたSUの別の質問で誰かがそれについて言及したとき、私は f.Lux について知りました。シンプルで独創的で便利なソフトウェアなので、ずっと使っています。

ただし、写真を編集したり、その他の色に敏感なタスクを実行したりするために、夜間に無効にしたい場合があります。同様に、部屋の窓を完全に暗くしてsiestaの準備をしているときに、日中に有効にしたい場合もあります。 (私の出身地では、ほぼ毎日昼寝をしています)。

これを考慮に入れると、f.Luxの非自動バージョンが私のニーズに理想的なものであることがわかりました。自動的にアクティブになる夜間に一時停止するオプションがあることは知っていますが、指示がない限りアクティブにしないでください。

だから、私はあなたにスクリーンショットを残します、そこで(あなたが私が見るのと同じものを見れば)あなたは自由にアクティブ化/非アクティブ化するオプションがないことに気付くでしょう。誰かがこれを行う方法を知っていますか?

おそらく、Ubuntuのf.Luxには別のGUIがありますか?

package 'fluxgui' version 1.1.8 running on Ubuntu oneiric (11.10)

3
the_midget_17

私もこの問題を抱えていました。 Redshift は、f.Luxの機能と、色温度を手動で設定する機能を備えたオープンソースツールです。

f.Luxは、あなたがいる夜だと思った場合にのみ色温度を変更するので、f.Luxをだまして日中に実行させるpythonスクリプトも作成しました。逆の計算を行います。地球上を指し、フラックスにそれらの座標を与えます。

これを使用するには、このコードをファイルに保存する必要があります。ホームディレクトリのflux.py。次に、ターミナルを開き、python ~/flux.pyでファイルを実行します。

#!/usr/bin/env python
# encoding: utf-8

""" Run flux (http://stereopsis.com/flux/)
    with the addition of default values and
    support for forcing flux to run in the daytime.
"""

import argparse
import subprocess
import sys


def get_args():
    """ Get arguments from the command line. """

    parser = argparse.ArgumentParser(
            description="Run flux (http://stereopsis.com/flux/)\n" +
                        "with the addition of default values and\n" +
                        "support for forcing flux to run in the daytime.",
            formatter_class=argparse.RawTextHelpFormatter)

    parser.add_argument("-lo", "--longitude",
            type=float,
            default=0.0,
            help="Longitude\n" +
                "Default : 0.0")

    parser.add_argument("-la", "--latitude",
            type=float,
            default=0.0,
            help="Latitude\n" +
                "Default : 0.0")

    parser.add_argument("-t", "--temp",
            type=int,
            default=3400,
            help="Color temperature\n" +
                "Default : 3400")

    parser.add_argument("-b", "--background",
            action="store_true",
            help="Let the xflux process go to the background.\n" +
                "Default : False")

    parser.add_argument("-f", "--force",
            action="store_true",
            help="Force flux to change color temperature.\n"
                "Default : False\n"
                "Note    : Must be disabled at night.")

    args = parser.parse_args()
    return args


def opposite_long(degree):
    """ Find the opposite of a longitude. """

    if degree > 0:
        opposite = abs(degree) - 180
    else:
        opposite = degree + 180

    return opposite


def opposite_lat(degree):
    """ Find the opposite of a latitude. """

    if degree > 0:
        opposite = 0 - abs(degree)
    else:
        opposite = 0 + degree

    return opposite


def main(args):
    """ Run the xflux command with selected args,
        optionally calculate the antipode of current coords
        to trick xflux into running during the day.
    """

    if args.force == True:
        pos_long, pos_lat = (opposite_long(args.longitude),
                            opposite_lat(args.latitude))
    else:
        pos_long, pos_lat = args.longitude, args.latitude

    if args.background == True:
        background = ''
    else:
        background = ' -nofork'

    xflux_cmd = 'xflux -l {pos_lat} -g {pos_long} -k {temp}{background}'

    subprocess.call(xflux_cmd.format(
        pos_lat=pos_lat, pos_long=pos_long,
        temp=args.temp, background=background),
        Shell=True)


if __name__ == '__main__':
    try:
        main(get_args())
    except KeyboardInterrupt:
        sys.exit()
5
haesken