环境:
ubuntu16.04 lts acer aspire 4752G i5-2450M

内容来源:点击这里

ubuntu无法调整屏幕亮度,对笔记本来说很耗电,同时也很刺眼,因为它是默认以最大亮度来工作的。
所谓的调整,方法为下面的其中一种:
1、Fn+左右的快捷键,亮度没有变化
2、在亮度与锁屏中拉动进度条亮度没有变化
 

原因:
fn+(x)调节的是: /sys/class/backlight/acpi_video0/brightness文件,而I卡的文件是/sys/class/backlight/intel_backlight/brightness。

什么是i卡?
三种主要品牌显卡: Nvidia , AMD/ATI 和 Intel 
Nvidia
提供最基本的仅支持 2D 的开源驱动(只提供闭源驱动)。但闭源驱动的性能非常好,与 Windows 上的性能几乎差不多。而且 Nvidia 的驱动更新很频繁,而且他们还会使用 VDPAU 加速 API 来提供快速视频加速,这个加速 API 功能仅被当前最新的 Adobe Flash beta 支持。所以,如果你经常观看全屏高清视频的话,一块 Nvidia 显卡加上他们的驱动应该是最佳方案了。但是 Nvidia 至今还不支持 Xrandr 协议,Xrandr 协议可以允许 X 来调整显示分辨率,或者扩展/克隆到外部显示器。
AMD/ATI
在 AMD 收购 ATI 之前,可以说在 Linux 上基本没有像样的 ATI 驱动。不过自从被 AMD 收购后,情况就变得大为不同。ATI 的闭源 Linux 驱动有了跨越式的发展,而且还支持 Xrandr 协议,这样你就可以完全使用 Ubuntu 内置分辨率调整工具了。而且在性能方面也非常好,也可以与 Wine 一起很好的工作。AMD 在 Linux 驱动方面确实贡献卓越。当然有一点与 Nividia 驱动相似的,那就是也不支持 KMS 。闭源的 AMD 驱动使用与 Nvidia 不同的视频 API ,而是唤作的 VA-API,不幸的是 Adobe 目前至今还没有支持它,所以基于 Flash 的高清视频受到一定的影响。另外与 Nvidia 相比欠缺的一点是,AMD 驱动需要花费更多的时间来支持新版内核及新的 X Server 版本,但对于 Ubuntu 用户来说并不是问题,因为它会默认搭载在 Ubuntu 发行版中。
Intel
可以说, Intel 是开源 Linux 图形卡驱动方面的王者,他们只发布 Linux 平台上的开源驱动,这也意味着你能体验到像 KMS 及 Xrandar 支持这样的所有功能。但 Intel 也并不完美,如果你拥有一块基于 GMA500 的卡的话,它基本上无法工作于 Ubuntu 上,因为这是英特尔购买了其他公司的芯片组后并更名了它,而且他们也不能为其开发开源驱动,虽然目前英特尔还在解决此问题。Intel 的另外一个最大缺点是他们的硬件性能远远不如 AMD 和 Nvidia ,并且对于游戏支持也不够好。 
总结
如果对于你来说有开源驱动是非常重要的事,那么你可以用 Intel 或 AMD 的卡;如果你更关注性能,那么你可以用 AMD 或 Nvidia 的卡。总的来说, AMD/ATI 是更加前沿,更加值得推荐,因为他们在提供稳定开源驱动的同时,还提供了可靠快速的闭源驱动,堪称两全其美。

回来原来的问题

一种比较将就的方法就是刚开机的时候就按Fn+左右键,这样就可以改变亮度了。一旦进去之后就不可以改变了。
===============================================
比较完美的方法如下:
1.修改 grub
$ sudo vi /etc/default/grub 
把GRUB_CMDLINE_LINUX="" 
改成GRUB_CMDLINE_LINUX="acpi_backlight=vendor" 
-----------------------------------------------------------------------------
下面是修改后的grub文件:

# If you change this file, run 'update-grub' afterwards to update 
# /boot/grub/grub.cfg. 
# For full documentation of the options in this file, see: 
#   info -f grub -n 'Simple configuration' 
 
GRUB_DEFAULT=0 
#GRUB_HIDDEN_TIMEOUT=0 
GRUB_HIDDEN_TIMEOUT_QUIET=true 
GRUB_TIMEOUT=10 
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` 
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
GRUB_CMDLINE_LINUX="acpi_backlight=vendor" 
 
# Uncomment to enable BadRAM filtering, modify to suit your needs 
# This works with Linux (no patch required) and with any kernel that obtains 
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) 
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" 
 
# Uncomment to disable graphical terminal (grub-pc only) 
#GRUB_TERMINAL=console 
 
# The resolution used on graphical terminal 
# note that you can use only modes which your graphic card supports via VBE 
# you can see them in real GRUB with the command `vbeinfo' 
#GRUB_GFXMODE=640x480 
 
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux 
#GRUB_DISABLE_LINUX_UUID=true 
 
# Uncomment to disable generation of recovery mode menu entries 
#GRUB_DISABLE_RECOVERY="true" 
 
# Uncomment to get a beep at grub start 
#GRUB_INIT_TUNE="480 440 1"

-----------------------------------------------------------------------------------

2. 更新: grub.cfg
$ sudo update-grub 
查看grub.cfg,可以发现每个启动项都加入了"acpi_backlight=vendor" 
PS:grub.cfg 位于 /boot/grub/grub.cfg

修改影响屏幕亮度的文件
$ sudo vi /sys/class/backlight/intel_backlight/brightness 
默认是976(这也是我们开机每次都是最亮的原因)
改变数值(0 - 976),保存后屏幕亮度会发生对应的变化
另外,可以输入下面的命令来直接改变其数值
echo 50 > /sys/class/backlight/intel_backlight/brightness
这样里面的数值就改成了50了,当然其他数值都是一样的。不过,这一命令要在root环境下
PS:怎样进入root环境呢?
$ sudo su 
root@ubuntu:/home/zero#
这样系统就自动到zero用户目录下了

什么你没有root帐户? 看下面

$ sudo passwd
[sudo] password for zero: Enter your sudo password. Enter new UNIX password: Enter your new root password. Retype new UNIX password: Enter repassword. passwd: password updated successfully
==================================================================
3. 锁定亮度
是不是每次都这样设定呢?太麻烦了
把echo 50> /sys/class/backlight/intel_backlight/brightness 添加到 /etc/rc.local 就能开机自动设定屏幕初始亮度了。

$ sudo vi /etc/rc.local

============================================================
修改/etc/rc.local如下:
#!/bin/sh -e 
# rc.local 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# In order to enable or disable this script just change the execution 
# bits. 
# By default this script does nothing. 
 #加上下面的这句
echo 50 > /sys/class/backlight/intel_backlight/brightness 
exit 0
===========================================================
另外调节gamma值,需要root权限。
root@ubuntu:/home/zero# xgamma -gamma .7 
-> Red  1.000, Green  1.000, Blue  1.000 
<- Red  0.700, Green  0.700, Blue  0.700

关于gamma:
gamma值是用曲线表示的,这是一种人的眼睛对光的一种感应曲线,其中包括了物理量、身理感官及心理的感知度。 
如果一个显示器若要完整的表现出高度真实的画面(无论是高亮度的画面或低亮度的画面),则显示器的对比很少必须5000:1以上,而我们的显示器由于成本的考虑,我们只能做出500~1000:1时,我们就必须用gamma修正来作补偿,也就是在较暗的影片我们选择较高的gamma值(如2或3,甚至4),以牺牲部分亮部的层次来获取更多的暗部层次;相反的在一些较亮的影片(外景较多)则我们则选择较低的gamma值(如0,-1甚至-2)以牺牲部分的暗部层次,来使得亮部层次(如云层)能更分明。 
PS:什么是显示器的对比?
所谓的对比,是指最亮除以最暗

在实际的景色环境中,您极少可能从很亮的画面瞬间进入很暗的画面,但在电影或电视和游戏画面上则我们经常会突然从很亮的画面进入很暗的画面,或从很暗的画面进入很亮的画面,因此正确的gamma曲线设定可以帮助我们获得最真实的视觉感受。

重启就大功告成了。

  
亮度最大的时候


亮度较小的时候 
看起来变化 不是很大,可能是截图的原因吧。没想到可以把整个屏幕 都调黑的,嘿嘿

Ubuntu 16.04 LTS 完善解决亮度调整的更多相关文章

  1. Ubuntu 16.04 LTS sublime text 3 解决不能输入中文

    sublime text 3 安装完成后不能输入中文,让人很是不爽.下面内容可以解决使用问题! 一.首先要注意几个问题. 1)sublime_imfix.c 文件放在home目录下面. 2)如果你在步 ...

  2. Ubuntu 16.04 LTS上git提交出现警告Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts. 的解决方法

    问题: Ubuntu 16.04 LTS执行 git pull时总会出现以下警告: Warning: Permanently added 'github.com,52.74.223.119' (RSA ...

  3. tips of my ubuntu 16.04 LTS

    update_0 : sudo .../idea.sh 才会把idea安装上,不加sudo也会启动,但是不会在开始菜单中找到程序. ---------------------------------- ...

  4. Ubuntu 16.04 LTS运行robo3t报错

    系统环境:Ubuntu 16.04 LTS. 安装robomongo Robo 3T,运行时报以下错误: jaxu@jaxu-ubuntu:/usr/local/share/robo3t--linux ...

  5. Ubuntu 16.04 LTS软件包管理基本操作

    前文 Ubuntu 16.04 新特性中我们已经介绍过,随着 Ubuntu 16.04 LTS 的发布,Ubuntu 的软件包管理命令也发生了变化,新系统采用了 Debian 项目中所使用的 APT( ...

  6. 在Ubuntu 16.04 LTS上用g++和gcc编译C/C++代码错误提示“.../x86_64-linux-gnu/crt1.o: ELF section name out of range”

    (有一些图片我是直接从个人的CSDN博客上复制来的) 最近一个多月来,我曾经多次尝试在Ubuntu 16.04 LTS上使用g++和gcc(这俩好像合起来叫MinGW?)来编译C/C++代码,但是在解 ...

  7. [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...

  8. Ubuntu 16.04 LTS设置屏幕分辨率并永久保存所设置的分辨率

    一.问题: 1.新装完Ubuntu 16.04 LTS后,进入系统打开命令行窗口,界面的分辨率显示是最小的: 2.进入System settings-->Displays 设置屏幕分辨率 显示& ...

  9. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

随机推荐

  1. 【微信开发】JS和PHP分别判断当前浏览器是否微信浏览器

    1.PHP端 //判断是否微信浏览器 -xzz1125 function is_weixin() { if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMes ...

  2. 【LeetCode】117. Populating Next Right Pointers in Each Node II (2 solutions)

    Populating Next Right Pointers in Each Node II Follow up for problem "Populating Next Right Poi ...

  3. javascript获取地址栏参数

    http://gzycm520.blog.51cto.com/175220/71030方法一: <script type="text/javascript"> < ...

  4. 使用spring AOP获得session的思路

    由于Spring 的AOP面向切面编程,与Servlet容器没有任何关联,所以想要获得Session会话比较麻烦. 当然Struts2同样不依赖Servlet容器,可以在Spring AOP中可以使用 ...

  5. Python 列表 list() 方法

    描述 Python 列表 list() 方法用于将可迭代对象(字符串.列表.元祖.字典)转换为列表. 注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中. ...

  6. 【实用代码片段】将json数据绑定到html元素 (转)

    jQuery扩展 jQuery.fn.extend({ 'jsonBind':function(json){ var dom=this; dom.find('[json-bind]').each(fu ...

  7. 最简单的TCP网络封包解包(补充)-序列化

    如若描述或者代码当中有谬误之处,还望指正. 将数据能够在TCP中进行传输的两种方法1.直接拷贝struct就可以了:2.序列化. 拷贝Struct存在的问题1.不能应付可变长类型的数据,比如STL中的 ...

  8. 3dmax fx shader, vertex color

    美术那边需要一个能在3dmax里用的支持diffuse纹理和顶点色的additive shader(不带光照). 以前没搞过这个,于是从3dmax自带的vertexcolor.fx,DiffuseBu ...

  9. LeetCode总结 -- 树的求和篇

    树的求和属于树的题目中比較常见的,由于能够有几种变体,灵活度比較高,也能够考察到对于树的数据结构和递归的理解. 一般来说这些题目就不用考虑非递归的解法了(尽管事实上道理是跟LeetCode总结 -- ...

  10. windows 添加打印机

    控制面板---->硬件和声音---->设备和打印机--->点击添加打印机 最后安驱动(选择通用) OK!