Le problème est qu'Ubuntu réinitialise toujours le niveau de luminosité au maximum après chaque redémarrage. J'ai installé l'utilitaire xbacklight
, mais des commandes telles que xbacklight -get
ou xbacklight -set XX
ne fonctionnent pas. Je n'obtiens rien en sortie.
En fait, j'aimerais que mon Ubuntu se souvienne du niveau de luminosité utilisé en dernier. Comment puis-je faire ça? Voici quelques informations:
ls -l /sys/class/backlight/
total 0
lrwxrwxrwx 1 root root 0 Feb 27 09:43 radeon_bl0 -> ../../devices/pci0000:00/0000:00:01.0/drm/card0/card0-LVDS-1/radeon_bl0
ls -l /sys/class/backlight/radeon_bl0/
total 0
-r--r--r-- 1 root root 4096 Feb 27 09:54 actual_brightness
-rw-r--r-- 1 root root 4096 Feb 27 09:54 bl_power
-rw-r--r-- 1 root root 4096 Feb 27 09:47 brightness
lrwxrwxrwx 1 root root 0 Feb 27 09:54 device -> ../../card0-LVDS-1
-r--r--r-- 1 root root 4096 Feb 27 09:43 max_brightness
drwxr-xr-x 2 root root 0 Feb 27 09:54 power
lrwxrwxrwx 1 root root 0 Feb 27 09:54 subsystem -> ../../../../../../../class/backlight
-r--r--r-- 1 root root 4096 Feb 27 09:43 type
-rw-r--r-- 1 root root 4096 Feb 27 09:42 uevent
uname -r
4.2.0-30-generic
En fait, j'aimerais que mon Ubuntu se souvienne du niveau de luminosité utilisé en dernier. Comment puis-je faire ça? Voici quelques informations:
Introduction
Le script ci-dessous répond au besoin des opérateurs de stocker et de restaurer la dernière luminosité de l'écran utilisée. Il fonctionne avec the lightdm
greeter et est activé par lightdm
name__. Il n'est pas nécessaire d'utiliser lightdm
name__. Par conséquent, si vous préférez utiliser un travail cron, vous pouvez le faire.
Idée basique:
/etc/lightdm/lightdm.conf
en utilisant le privilège Sudo
name__.[SeatDefaults]
, display-setup-script
et display-stopped script
. Regardez ci-dessous pour plus de détails. En-tête de script donne également une vue d'ensemble.Source du script
#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: [email protected]
# Date: March 7th, 2016
# Purpose: Script that will remember screen brightness
# Must be used in conjunction with lightdm
# Place the following 5 lines into /etc/lightdm/lightdm.conf
#
# [SeatDefaults]
# #display-setup-script = Script to run when starting a greeter session (runs as root)
# display-setup-script = /home/USER/bin/sergrep/brightness.sh restore
# #display-stopped-script = Script to run after stopping the display server (runs as root)
# display-stopped-script = /home/USER/bin/sergrep/brightness.sh store
#
# Basic idea is that you must give full path and either store or restore as an option
# Written for: http://askubuntu.com/q/739654/295286
# Tested on: Ubuntu 14.04 LTS
# Version: 1.2 , added brightness limit, file creation
###########################################################
# 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.
ARGV0=$0
ARGC=$#
store()
{
cat "$SYSDIR"/*/actual_brightness > "$1"
}
#----------
# This function restores brightness. We avoid
# setting brightness to complete 0, hence
# minimum is 10% that can be restored.
restore()
{
MAX=$(cat "$SYSDIR"/*/max_brightness )
LIMIT=$((MAX/10)) # get approx 10 percent value
VAL=$(cat "$1" )
if [ "$VAL" -lt "$LIMIT" ] ;
then
# avoid going bellow 10% of brightness
# we don't want user's screen to be completely dark
echo "$LIMIT" > "$SYSDIR"/*/brightness
else
echo "$VAL" > "$SYSDIR"/*/brightness
fi
}
#------------
# This function works for initial run of the script; the script cannot set
# brightness unless datafile exists first, so here we create the file
# Initial value there will be whatever the current brightness on first
# reboot was
create_datafile()
{
cat "$SYSDIR"/*/actual_brightness > "$1"
}
puke(){
printf "%s\n" "$@" > /dev/stderr
exit 1
}
main()
{
local DATAFILE="/opt/.last_brightness"
local SYSDIR="/sys/class/backlight" # sysfs location of all the data
# Check pre-conditions for running the script
if [ "$ARGC" -ne 1 ];then
puke "Script requires 1 argument"
fi
if [ $(id -u) -ne 0 ] ; then
puke "Script has to run as root"
fi
# ensure datafile exists
[ -f "$DATAFILE" ] || create_datafile "$DATAFILE"
# perform storing or restoring function
case "$1" in
'restore') restore $DATAFILE ;;
'store') store $DATAFILE ;;
*) puke "Unknown argument";;
esac
}
main "$@"
Obtention et configuration du script
Vous pouvez copier le script directement ou suivre ces étapes à partir de la ligne de commande (pour ouvrir la ligne de commande, appuyez sur CtrlAltT )
Sudo apt-get install git
cd /opt
Sudo git clone https://github.com/SergKolo/sergrep.git
Le script sera situé dans /opt/sergrep/brightness.sh
, nous faisons donc:
Sudo chmod +x /opt/sergrep/brightness.sh
pour le rendre exécutable. Ensuite, nous devons le configurer pour fonctionner avec lightdm. Créez le fichier /etc/lightdm/lightdm.conf
en l'ouvrant à l'aide de la ligne de commande nano
(la commande est Sudo nano /etc/lightdm/lightdm.conf
) ou graphique gedit
(pkexec gedit /etc/lightdm/lightdm.conf
)
Écrivez dans ce fichier les lignes suivantes:
[SeatDefaults]
#display-setup-script = Script to run when starting a greeter session (runs as root)
display-setup-script = /opt/sergrep/brightness.sh restore
#display-stopped-script = Script to run after stopping the display server (runs as root)
display-stopped-script = /opt/sergrep/brightness.sh store
Sauvegarder et quitter
Vue d'ensemble
Vous avez déjà découvert que vous pouvez écrire directement dans le fichier /sys/class/backlight/*/brightness
et vous pouvez également lire ces valeurs. Le problème est que /sys
est un système de fichiers virtuel. Ainsi, une fois que vous redémarrez, tous les fichiers de ce système de fichiers disparaissent.
Vous pouvez donc stocker la valeur de /sys/class/backlight/*/actual_brightness
dans un fichier permanent à chaque redémarrage. La question est de savoir comment - via cron job, via lightdm ou par d’autres moyens. Personnellement, j'ai choisi la route lightdm
name__.
En résumé, nous tirons parti de la fonctionnalité de lightdm: être capable d'exécuter un script avant le lancement de la bannière et après la fermeture de la session. La luminosité est enregistrée dans le fichier /opt/.last_brightness
et lue à chaque démarrage du script. Nous effectuons essentiellement deux actions avec le même script, simplement en transmettant des arguments différents.
Avez-vous essayé ceci:
Sudo nano /etc/rc.local
ajoutez cette ligne au fichier (remplacez X par le niveau de luminosité souhaité):
echo X > /sys/class/backlight/intel_backlight/brightness
Si vous pouvez définir la luminosité à l'aide d'une commande, il est facile de modifier le niveau de luminosité à une valeur particulière au démarrage. Faites ce qui suit:
Cela devrait exécuter cette commande au démarrage. Je ne sais pas comment le rappeler à la luminosité précédente, mais j'espère que cela aidera.
Bien. Je vais répondre à ma propre question juste pour référence future. Dans mon cas, ce que j’ai fait, c’est d’ajouter les lignes suivantes (c’est juste une ligne avec un tas de commentaires pour me rappeler pourquoi et ce que j’y ai fait) à /etc/rc.local
avant exit 0
:
# The following line should solve the problem of Ubuntu resetting
# the brightness level back to maximum after every reboot.
echo 50 > /sys/class/backlight/radeon_bl0/brightness
Voici à quoi ressemble le fichier entier:
#!/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.
# The following line should solve the problem of Ubuntu resetting
# the brightness level back to maximum after every reboot.
echo 50 > /sys/class/backlight/radeon_bl0/brightness
exit 0
Bien que je ne sois pas sûr à cent pour cent que ce soit la meilleure façon de procéder, tout semble bien fonctionner pour moi maintenant.
Utilisez simplement la lumière à la place ... Sinon, c'est un désordre de la réparer, surtout si vous avez des graphiques Intel et NVIDIA ensemble!
Cela fonctionne sur Ubuntu 16.04 ... et est testé sur Alienware M14XR2
Commander-> https://github.com/haikarainen/light