台式机有亮度控制吗?
我正在使用Ubuntu Trusty tahr并且我注意到没有亮度控制(如滑块),在Windows中我将使用英特尔的图形媒体加速器来降低亮度,但这里看起来不可能。
我将使用我的电脑深夜学习和我的显示器的硬件按钮被淘汰,所以任何帮助将是apreciated。
在这个网站上 ,不久前我发现了一个很好的剧本。 这不是我的!
我从上网本开始使用它,运行Xubuntu
,似乎可以运行任何东西。
由于没有发布仅限链接的答案,这里是:
#!/usr/bin/env python from gi.repository import Gtk import subprocess class BrightnessScale: def __init__(self): # get active monitor and current brightness self.monitor = self.getActiveMonitor() self.currB = self.getCurrentBrightness() def initUI(self): # initliaze and configure window window = Gtk.Window() window.set_title('Brightness Scale') window.set_default_size(250, 50) window.set_position(Gtk.WindowPosition.CENTER) window.set_border_width(10) # slider configuration self.adjustment = Gtk.Adjustment(self.currB, 0, 100, 1, 10, 0) self.scale = Gtk.HScale() self.scale.set_adjustment(self.adjustment) self.scale.set_digits(0) # close Gtk thread on closing window window.connect("destroy", lambda w: Gtk.main_quit()) # setup event handler on value-changed self.scale.connect("value-changed", self.scale_moved) # add the scale to window window.add(self.scale) # show all components in window window.show_all() # close window on pressing escape key accGroup = Gtk.AccelGroup() key, modifier = Gtk.accelerator_parse('Escape') accGroup.connect(key, modifier, Gtk.AccelFlags.VISIBLE, Gtk.main_quit) window.add_accel_group(accGroup) def showErrDialog(self): self.errDialog = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, "Unable to detect active monitor, run 'xrandr --verbose' on command-line for more info") self.errDialog.set_title("brightness control error") self.errDialog.run() self.errDialog.destroy() def initStatus(self): if(self.monitor == "" or self.currB == ""): return False return True def getActiveMonitor(self): #Find display monitor monitor = subprocess.check_output("xrandr -q | grep ' connected' | cut -d ' ' -f1", shell=True) if(monitor != ""): monitor = monitor.split('\n')[0] return monitor def getCurrentBrightness(self): #Find current brightness currB = subprocess.check_output("xrandr --verbose | grep -i brightness | cut -f2 -d ' '", shell=True) if(currB != ""): currB = currB.split('\n')[0] currB = int(float(currB) * 100) else: currB = "" return currB def scale_moved(self, event): #Change brightness newBrightness = float(self.scale.get_value())/100 cmd = "xrandr --output %s --brightness %.2f" % (self.monitor, newBrightness) cmdStatus = subprocess.check_output(cmd, shell=True) if __name__ == "__main__": # new instance of BrightnessScale brcontrol = BrightnessScale() if(brcontrol.initStatus()): # if everything ok, invoke UI and start Gtk thread loop brcontrol.initUI() Gtk.main() else: # show error dialog brcontrol.showErrDialog()
如何使用
-
将脚本粘贴到空文件中,将其保存为
~/bin
brightness_set
(您可能需要创建目录)。 让它可执行 -
将其添加到快捷键:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。 单击“+”并添加命令:
brightness_set
-
退出并重新登录,它应该工作
编辑
要创建一个好的设置,可以通过在~/.local/share/applications
添加.desktop
文件,使Dash,Launcher或任何其他应用程序菜单中的滑块可用。
[Desktop Entry] Type=Application Name=Brightness Scale Icon=/path/to/set_brightness.png Exec=brightness_set OnlyShowIn=Unity;
-
在
Icon=
行中,设置图标的路径。 Yopu可以选择您自己的图标,或者将下面的图标保存为set_brightness.png
: - 在
Exec=
行中,假设脚本在$PATH
(包括Ubuntu上的~/bin
)和可执行文件
这不会使您的亮度function键工作,但它是一个workround。
使用以下命令安装Brightness Controller :使用以下命令安装Brightness Controller :
sudo add-apt-repository ppa:apandada1/brightness-controller sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt-get update sudo apt-get update
对于具有最多4个监视器支持的版本1:
sudo apt-get install brightness-controller sudo apt-get install brightness-controller-simple
对于具有多显示器支持和其他function的版本2:您可以使用其滑块控制两个显示器的亮度。
sudo apt-get install brightness-controller
基于xrandr
和zenity
设置亮度更容易的zenity
:
#! /bin/bash displays=($(xrandr | awk '/ connected /{print $1}')) if (( ${#displays[@]} > 1 )) then selected_display="$(zenity --list --title 'Select Display' --radiolist --column '' --column 'Display' $(xrandr | awk '/ connected /{print NR,$1}'))" else selected_display="${displays[0]}" fi zenity --scale --title "Set brightness of $selected_display" --value=100 --print-partial | while read brightness do xrandr --output "$selected_display" --brightness $(awk '{print $1/100}' <<<"$brightness"}) done
安装Zenity和xrandr:
sudo apt-get install x11-xserver-utils zenity
将脚本保存在某处,使其可执行( chmod +x some-script.sh
),如果您愿意, 可以创建一个启动器 。 然后,您可以运行该脚本并使用此GUI来设置亮度。
截图:
自定义亮度使用dbus和zenity scale控制脚本
介绍:
知道Ubuntu的Unity依赖于dbus
服务来向内核和硬件传递许多设置和事件,我已经整理了一个依赖于dbus
和zenity --scale
的简单bash脚本。
安装
脚本可以从这里复制,也可以从我的github导入。
要手动复制脚本:
- 打开
gedit
文本编辑器,复制代码,保存文件。 记住位置。 最好是在$HOME/bin
文件夹中。 - 打开终端,导航到脚本位置。 发出
chmod +x scriptName.sh
- 此时脚本已准备就绪。 您可以将其绑定到键盘快捷键 , 桌面或启动器 。
要从github导入:
-
sudo apt-get install git
- 如果您没有
$HOME/bin
目录,请创建一个。 -
cd $HOME/bin/; git clone https://github.com/SergKolo/sergrep.git
下载完成后, ubright.sh
使用ubright.sh
,位于$HOME/bin/sergrep
。
脚本来源
#!/usr/bin/env bash # ########################################################### # Author: Serg Kolo , contact: 1047481448@qq.com # Date: February 25th, 2016 # Purpose: Simple brightness control for Ubuntu Unity # Written for: https://askubuntu.com/q/583863/295286 # Tested on: Ubuntu 14.04 LTS ########################################################### # Copyright: Serg Kolo , 2016 # # Permission to use, copy, modify, and distribute this software is hereby granted # without fee, provided that the copyright notice above and this permission statement # appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. # set -x ARGV0="$0" ARGC="$#" main () { local DISPLAY=:0 getPercentage | setBrightness > /dev/null # echo $(getPercentage) } setBrightness() { local PERCENTAGE read PERCENTAGE [[ -n "$PERCENTAGE" ]] || exit 1 dbus-send --session --print-reply\ --dest=org.gnome.SettingsDaemon.Power\ /org/gnome/SettingsDaemon/Power \ org.gnome.SettingsDaemon.Power.Screen.SetPercentage uint32:"$PERCENTAGE" } getPercentage() { local PCT PCT="$(zenity --scale --text='Choose brightness level')" if [[ -n PCT ]] then echo "${PCT}" fi } main
附加信息:虽然这里的许多答案都依赖于xrandr
,但值得注意的是xrandr
并不是一个“实际”的硬件解决方案,也就是说,它可能会改变屏幕的颜色,使其看起来不那么明亮,但实际的功耗来自屏幕没有减少。 来自xrandr手册页:
– 亮度亮度
将当前附加到输出的crtc上的gamma值乘以指定的浮点值。 适用于过亮或过暗的输出。 但是,这只是一个软件修改,如果您的硬件支持实际更改亮度,您可能更喜欢使用xbacklight。
这个答案依赖于dbus
接口,它改变了实际的亮度设置,由/sys/class/backlight
的子文件夹中的文件表示。 因此,通过使用dbus
我们实际上控制了硬件。
相关文章
- 如何通过终端改变亮度