web-dev-qa-db-fra.com

Faire en sorte qu'Ubuntu se souvienne du niveau de luminosité de l'écran sans xbacklight

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
5
misha

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 lightdmname__. Il n'est pas nécessaire d'utiliser lightdmname__. Par conséquent, si vous préférez utiliser un travail cron, vous pouvez le faire.

Idée basique:

  1. Avoir le script stocké quelque part (soit en le récupérant ici ou par github)
  2. Créez /etc/lightdm/lightdm.conf en utilisant le privilège Sudoname__.
  3. Assurez-vous que le fichier comporte 3 lignes: [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 lightdmname__.

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.

6

Avez-vous essayé ceci:

  1. Sudo nano /etc/rc.local
  2. ajoutez cette ligne au fichier (remplacez X par le niveau de luminosité souhaité):

    echo X > /sys/class/backlight/intel_backlight/brightness
    
1
Jay T.

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:

  • Ouvrez Dash en appuyant sur la touche Super/Windows
  • Entrez "Applications de démarrage" et appuyez sur Entrée
  • Cliquez sur "Ajouter"
  • Entrez un nom (non pertinent) et la commande
  • Cliquez sur "Ajouter"

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.

0
Rahul Mukherji

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.

0
misha

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

0
Rohith Saradhy