linux如何设置显示器亮度调节软件,为 Linux 启用色温和亮度调节工具
## 前言
大家都知道,长时间注视电子屏幕对眼睛伤害很大。特别是在夜晚的时候,亮度过高的屏幕更是让人的眼睛异常酸痛。虽然我们可以通过使用显示器的配置菜单,更改屏幕亮度和色温,但每次都要手动调,未免太过麻烦。实际上,在 Linux 下,有好几款自动调节屏幕色温和亮度的工具。
## 使用 RedShift
RedShift 是 redshift 命令的图形化工具,集成为 gnome 插件。RedShift 界面简洁,非常容易使用,能改根据时间自动地调整屏幕色温:
![](https://leanote.com/api/file/getImage?fileId=58fbf3f1ab644129eb004ed5)
对于 Fedora 用户,可以使用下面命令进行安装:
sudo dnf copr enable mystro256/gnome-redshift
sudo dnf install gnome-shell-extension-redshift
注意,由于 Wayland 默认不支持 RedShift,因此需要一些额外的工作来使它工作。具体见附录。
**2017-04-23 更新**
如果遇到下图所示错误:
![](https://leanote.com/api/file/getImage?fileId=58fbf1b4ab644129eb004e9a)
请加上 --allowerasing 安装,如果还是不行,请尝试将桌面服务器切换为 xorg 后再次尝试。
## 使用 ddccontrol
ddccontrol 工具可以配置显示器的参数,因此灵活性较高,但配置比较复杂。对于大部分用户而言,可能只需要配置显示器的色温和亮度。为了方便配置,可以使用国外友人编写好的工具:[danielng01/iris-floss-wayland](https://github.com/danielng01/iris-floss-wayland)。这个工具把所有设备检测和操作都封装起来了,使得我们只需要给出目标色温和亮度的值即可。**注意,运行这个工具需要 root 权限**。
### 安装 ddccontrol
sudo dnf install ddccontrol
### 安装 iris-floss-wayland
由于我的系统是 Fedora 25,而默认图形服务器是 Wayland,因此安装的简化工具是 iris-floss-wayland。如果读者的图形服务器是 X11,可以到[Iris Floss仓库](https://github.com/danielng01/iris-floss)下载工具。
下载完成后,执行 make 进行编译。然后会生成可执行文件 iris-floss-wayland。以`sudo`方式执行该程序,同时给出两个参数——第一个是色温,第二个是亮度。如下面的代码将色温设置为 5000K,亮度设置为 40%:
sudo ./iris-floss-wayland 5000 40
如果执行后不起作用,可以加上`-v`标志,输出调试信息。
### 使用 crontab
使用 ddccontrol 工具的一个缺点是需要自己调用它,而使用 RedShift 则不需要,因为 RedShift 因此把这一切都包装好了。为了能改按照时间自动地进行屏幕色温和亮度的切换,可以使用`crontab`命令。如果不熟悉 crontab,可以阅读本文附录给出的相关教程。
#### 创建 crontab 文件
由于需要以 root 运行 iris-floss-wayland(实际上 ddccontrol ),因此 crontab 的添加用户应该是 root。可以在 root 家目录下创建一个 crontab 文件(假设名为 .cron/screen_light_mode.cron),然后为它添加以下内容:
# Siwtching screen to day mode, starts at 6 am.
0 6-17 * * * switch-to-day-light-mode
# Siwtching screen to night mode, starts at 6 pm.
0 18-23 * * * switch-to-night-light-mode
其中以'#'开头的是注释,crontab 会忽略它。文件中的一行代表一条 crontab 记录,一个包含六列,各列的定义如下:
分 时 日 月 星期 要运行的命令
对于`0 6-17 * * * switch-to-day-light-mode`来说,意思是每天6点到17点,每整时调用命令 switch-to-day-light-mode。
#### 分离配置与调用
在这里,命令 switch-to-day-light-mode 只是对 iris-floss-wayland 调用的一个封装。为什么要做这样一个封装呢?结果很明显:将调用和配置分开。如果将与参数有关的命令直接写在 crontab 中,则每一次修改参数都要运行相关的 crontab 命令进行更新。
这个封装我保存在文件 /etc/profile.d/screen_light_mode.sh,该文件的内容如下:
```bash
# Command of siwtching screen light mode
# Change these params to fit your eyes.
day_temperature=5000
day_lightness=40
night_temperature=3300
night_lightness=35
# The following content should not be modified.
day_light_mode_cmd="sudo iris-floss-wayland $day_temperature $day_lightness"
night_light_mode_cmd="sudo iris-floss-wayland $night_temperature $night_lightness"
export current_screen_light_mode
current_screen_light_mode=${current_screen_light_mode:-"day"}
switch-to-day-light-mode()
{
if [ "$current_screen_light_mode" = "night" ]; then
current_screen_light_mode="day"
$day_light_mode_cmd $*
fi
}
switch-to-night-light-mode()
{
if [ "$current_screen_light_mode" = "day" ]; then
current_screen_light_mode="night"
$night_light_mode_cmd $*
fi
}
```
通过修改 day_temperature、day_lightness、night_temperature 以及 night_lightness 分别为白天模式和晚上模式指定色温和亮度。
### 添加 crontab 任务
完成了 crontab 文件的创建后,执行下列命令就完成了定期任务的添加:
crontab .cron/screen_light_mode.cron
再罗嗦一句,记得是为特权用户添加该任务,否则配置工具将因缺少权限而执行失败。
### 添加开机服务
添加 crontab 解决了日光和夜光模式的自动切换,但它无法解决一个问题:在检查间隔期间启动机器的话,便无法自动根据当前时间切换。虽然我们可以将 crontab 的执行间隔缩小,但那样未免杀鸡用牛刀了。实际上,简单地添加一个开机任务,根据启动系统时的时间,更改屏幕模式即可 。
对于使用 systemd 的 Linux 发行版来说,以往存放在 /etc/rc.d/ 目录下的开机启动脚本都会被映射为一个 systemd service unit(服务单元)。服务单元相比以往的启动脚本更容易管理,因为我们可以使用 `systemctl` 命令对其进行管理。sytemd 提供了向前兼容性,使得我们可以像往常那样在 /etc/rc.d/rc.local 中添加启动脚本。但在添加启动脚本之前,要需要进行一些配置工作,使 rc.local 机制工作。
首先编辑 /etc/rc.d/rc.local 文件,在文件中添加以下内容:
. /root/scripts/auto-switch-screen-light-mode.sh
注意为 /etc/rc.d/rc.local 添加可执行权限:
sudo chmod +x /etc/rc.d/rc.local
接着,编辑 /usr/lib/systemd/system/rc-local.service,添加以下内容:
[Install]
WantedBy=multi-user.target
然后使能 rc-local 服务:
sudo systemctl enable rc-local.service
到此 rc.local 就配置好了,下次启动系统时,便会自动地执行 rc.local 文件中的内容。
最后,完成我们的启动脚本的编写。/root/scripts/auto-switch-screen-light-mode.sh 的内容如下:
```bash
#!/usr/bin/bash
# Automatically switch screen light mode according to current date's hour.
# Load configurations.
. /etc/profile.d/screen_light_mode.sh
# Get current hour.
date_hour=`date +"%H"`
# Determine screen light mode.
if [ "$date_hour" -lt "18" ]; then
$day_light_mode_cmd $*
current_screen_light_mode="day"
else
$night_light_mode_cmd $*
current_screen_light_mode="night"
fi
```
## 总结
能改使用 RedShift 工具就好办了……可惜的是在我的系统上安装 RedShift 提示缺少依赖 gnome-settings-daemon-redshift,,而我在网上又找不到,最后只能转而使用 ddccontrol。
ddccontrol 不仅配置麻烦,要自己做一堆附加工作,而且还时不时不能工作。看着身边小伙伴用着和我一样的系统(Fedora 25),却没有这些问题,一个 dnf 就达成了需求。看来还是得找时间好好解决 RedShift 的依赖问题。
**2017-04-22 更新**
坑爹啊……今天再一次尝试安装 RedShift,但又遇到了同样的错误:
![](https://leanote.com/api/file/getImage?fileId=58fbf1b4ab644129eb004e9a)
这一次抱着试试的心态加上了选项 --allowerasing,结果安装成功了!之前好像也有试过,但没有成功……在这期间也就把桌面服务器从 Wayland 换成了xorg,该不会是因为这个才……如果你也遇到了这样的问题,你可以试一下。
## References
- [Redshift functionality on Fedora 25 (GNOME + Wayland).](http://www.thelinuxrain.com/articles/redshift-functionality-on-fedora-25-gnome-wayland-yes-its-possible)
- [crontab 定时任务](http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html)
- [Fedora 23 实现开机自启脚本](https://semsevens.com/2016/03/08/make-startup-script-in-fedora/)
- [Improve your sleep by using Redshift on Fedora](https://fedoramagazine.org/safe-eyes-redshift/)
linux如何设置显示器亮度调节软件,为 Linux 启用色温和亮度调节工具相关推荐
- lg分屏软件支持linux吗,LG显示器分屏软件-OnScreen Control(快速分屏)下载v2.95-领航下载站...
OnScreen Control是LG为其显示器用户提供的一款功能非常强大的显示器分屏软件,OnScreen Control可以快速的帮助用户分割屏幕显示区域,领航小编觉得这个功能对于那些经常需要运行 ...
- linux中设置环境变量_如何在Linux中设置环境变量
linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...
- Linux时钟设置-硬件时钟与软件时钟
Linux里分硬件时钟与系统时钟等两种时钟. 1.硬件时钟: (1)定义:硬件时钟是存储在主板上CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电.对应于嵌入式设备有一个RTC(Real ti ...
- linux下设置显示器对比度
在没有安装显卡驱动的情况下如何设置对比度? 命令如下: xgamma -gamma 0.70 其中数值的范围为:0-10.00 但该命令重启后就会失效,因此需要在用户变量下添加该命令,即在用户目录下任 ...
- linux中realplayer.rpm格式的软件安装,Linux中安装Realplay 10.0 的方法
一.什么是RealPlay : Realplay 在Windows大家经常用,不必介绍:呵... ... 在一两年前,如果说Rlealplay 能在Linux操作系统中正常的运行,有点异想天开:目前看 ...
- linux中realplayer.rpm格式的软件安装,Linux系统中Realplay 10.0的安装和使用
一.什么是RealPlay Realplay 在Windows大家经常用,不必介绍:呵... ... 在一两年前,如果说Rlealplay 能在Linux操作系统中正常的运行,有点异想天开:目前看来运 ...
- linux ubuntu 设置ip地址命令行,Ubuntu Linux上的IP地址管理
如今,一切都在互联网上.说"互联网已经成为我们生活的基本必需品"是正确的.互联网是相互连接的网络的网络.要浏览互联网,应该了解网络的基本知识,即如何将本地网络连接到互联网.首先,连 ...
- linux qt设置应用程序图标大小,Qt5 linux如何设置窗口图标图像
我有一个用Qtdevise器devise的用户界面,并用c ++编写了代码. 我正在使用catkin ,这只是cmake,来build立我的项目. 目前当程序启动时,应用程序图标看起来像, .我想这是 ...
- linux 脚本设置定时,脚本添加定时任务(Linux)
引言:前段时间写了个脚本,用来定时备份数据库的 ,后来定时任务也添加了,结果却要求写个脚本去添加定时任务,哎...当时真是一头雾水!后来请教了下高人,得以解决.下面我们来看到脚本. #!/bin/ba ...
- win7调整屏幕亮度_三星屏幕亮度微调app免费版下载-三星手机屏幕亮度微调软件一键操作版v1.0 最新版...
三星手机屏幕亮度微调软件一键操作版,是一款非常实用的亮度调节软件,软件内功能强大,用户在智能感光模式下,可以一键轻松调节屏幕亮度,并且手机上的内容也看的一清二楚,有效的保护了用户的用眼问题. 三星手机 ...
最新文章
- jsTree设置默认节点全部展开的方法
- Haskell语言实现求解一个整数所有因子的代码及运行结果
- VTK:PolyData之ShrinkPolyData
- 计算机音乐 phd,美国大学音乐(Music)专业PhD排名
- ygo游戏王卡组_游戏王:二线卡组脱颖而出的战将,混沌青眼卡组,仪式卡组的骄傲...
- thinkphp的分页类
- 计算机类系统能力培养试点学校,南昌航空大学获批教育部计算机类专业系统能力培养试点高校...
- java 常用 函数_java在线报表中有哪些常用函数
- [SOJ] 无路可逃?
- Java发送HTTP POST请求(内容为xml格式)
- JAVA调用Web Service接口的五种方式
- ESP8285调试记录
- 字节跳动“蚕食”B端,搅局企业服务?
- 15个素材下载网站,从此不做「伸手党」!
- CLUSTERDOWN Hash slot not served 记录一次线上redis插槽问题
- matlabrobert锐化_图像锐化matlab算法
- 科创人|容联七陌CEO陈光:90后街舞少年的CEO修炼手册
- 敬畏传奇——直面第一台可编程电子计算机:Colossus
- 阿里云HaaS100物联网开发板学习笔记(六)做个智能灯---一个完整的开发例子
- 1.socket网络编程