xrandr --output LVDS-1 --brightness $(bc -l <<<"$(sed 's/Brightness: //' <<<$(xrandr --prop --verbose | grep Brightness)) $(if [ "$1" = "+" ];then echo +;else echo -;fi) 0.1")
目前,我已将此代码设置为Arch系统上XFCE中的键盘快捷键,它可以很好地将亮度调高或调低0.1个等级。唯一的问题是,执行一秒钟左右的时间足够慢,多次按下会更糟,并且可能会稍微降低整个计算机的速度。
您将如何改进代码?(我对shell脚本还很陌生,所以我也部分地要求它查看优化编写代码的过程。)
编辑:好的,所以我遵循了drewbenn的分析建议,并得到了以下信息:
time xrandr -q --verbose> / dev / null
real 0m1.746s
user 0m0.007s
sys 0m0.000s
那么,查询是最大的问题。我对其进行了更改,以便将当前亮度级别存储在某个位置的文件中,并且快捷键将运行以下代码:
#!/ bin / bash val = $(cat〜/ .bright_key_folder / lvl) if([“” $ 1“ ==” +“] && [[$(bc -l〜/ .bright_key_folder / lvl xrandr --output LVDS- 1-亮度$(cat〜/ .bright_key_folder / lvl) elif([“” $ 1“ ==”-“] && [[$(bc -l 0”)== 1]]) 然后 bc -l〜/。 bright_key_folder / lvl xrandr- 输出LVDS-1-亮度$(cat〜/ .bright_key_folder / lvl) fi
然后在启动时将亮度和文件值都重置为1。
如果代码已经在工作,但运行速度太慢,则下一步是开始分析。使用shell脚本编写脚本时,可以使用time
(尝试help time
查看其帮助页面)查看每个命令运行多长时间。
我认为bc
应该很快。sed
对抗一条线也应该非常快;并且grep
应该也很快,所以我决定尝试xrandr
在系统上对这两个命令进行性能分析。我只是想快速估算一下,所以我尝试单独执行这些命令(而不是将它们包装在脚本中以多次运行以获得平均):
$ time xrandr --prop --verbose >/dev/null
real 0m0.428s
user 0m0.004s
sys 0m0.004s
$ time xrandr --output LVDS1 --brightness 0.9
real 0m0.117s
user 0m0.000s
sys 0m0.008s
$
如果您得到类似的结果,则查询可能是花费最多的时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句