|
@@ -1,102 +1,179 @@
|
1
|
|
-# Light
|
|
1
|
+Light - A program to control backlights (and other hardware lights) in GNU/Linux
|
|
2
|
+==================================================
|
2
|
3
|
|
3
|
|
-Copyright (C) 2012 - 2014, Fredrik Haikarainen
|
4
|
|
-This is free software, see the source for copying conditions. There is NO
|
5
|
|
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
|
|
4
|
+*Copyright (C) 2012 - 2018*
|
6
|
5
|
|
|
6
|
+*Author: Fredrik Haikarainen*
|
7
|
7
|
|
8
|
|
-## Description
|
|
8
|
+*Contributor & Maintainer: Joachim Nilsson*
|
9
|
9
|
|
10
|
|
-Light is a program to control backlight controllers under GNU/Linux, it is the successor of lightscript, which was a bash script with the same purpose, and tries to maintain the same functionality.
|
|
10
|
+*This is free software, see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE*
|
11
|
11
|
|
12
|
12
|
|
13
|
|
-## Features
|
|
13
|
+- [Introduction](#introduction)
|
|
14
|
+- [Examples](#examples)
|
|
15
|
+- [Usage](#usage)
|
|
16
|
+ - [Command options](#command-options)
|
|
17
|
+ - [Extra options](#extra-options)
|
|
18
|
+- [Installation](#installation)
|
|
19
|
+ - [Arch Linux](#arch-linux)
|
|
20
|
+ - [Fedora](#fedora)
|
|
21
|
+ - [Debian/Ubuntu](#debian)
|
|
22
|
+ - [NixOS/nix](#nix)
|
|
23
|
+ - [Manual](#manual)
|
|
24
|
+ - [Permissions](#permissions)
|
14
|
25
|
|
15
|
|
-* Works excellent where other software have been proven unusable or problematic, thanks to how it operates internally and the fact that it does not rely on X.
|
16
|
|
-* Can automatically figure out the best controller to use, making full use of underlying hardware.
|
17
|
|
-* Possibility to set a minimum brightness value, as some controllers set the screen to be pitch black at a vaĺue of 0 (or higher).
|
18
|
26
|
|
|
27
|
+Introduction
|
|
28
|
+------------
|
19
|
29
|
|
20
|
|
-## Installation
|
|
30
|
+[Light][] is a program to control backlights and other lights under GNU/Linux:
|
21
|
31
|
|
22
|
|
-### Arch Linux
|
|
32
|
+* Works where other software has proven unreliable (xbacklight etc.)
|
|
33
|
+* Works even in a fully CLI-environment, i.e. it does not rely on X
|
|
34
|
+* Provides functionality to automatically control backlights with the highest precision available
|
|
35
|
+* Extra features, like setting a minimum brightness value for controllers, or saving/restoring the value for poweroffs/boots.
|
23
|
36
|
|
24
|
|
-If you run Arch Linux, there exists 2 packages;
|
25
|
|
-* [light-git](https://aur.archlinux.org/packages/light-git) - For the absolutely latest version
|
26
|
|
-* [light](https://aur.archlinux.org/packages/light) - For the latest tagged release
|
|
37
|
+See the following sections for the detailed descriptions of all available commands, options and how to access different controllers.
|
27
|
38
|
|
28
|
|
-I recommend you go with light-git as you might miss important features and bugfixes if you do not.
|
|
39
|
+Light is available in many GNU/Linux distributions already.
|
29
|
40
|
|
30
|
|
-### Manual
|
31
|
41
|
|
32
|
|
-`make && make install`
|
|
42
|
+Examples
|
|
43
|
+--------
|
|
44
|
+
|
|
45
|
+Get the current backlight brightness in percent
|
|
46
|
+
|
|
47
|
+ light -G
|
|
48
|
+
|
|
49
|
+or
|
|
50
|
+
|
|
51
|
+ light
|
|
52
|
+
|
|
53
|
+Increase backlight brightness by 5 percent
|
|
54
|
+
|
|
55
|
+ light -A 5
|
33
|
56
|
|
34
|
|
-**Optional:** If you want to use udev rules instead of suid to manage sysfs permissions, you may skip the `make install` step and instead add something like the following to `/etc/udev/rules.d/90-backlight.rules` after copying your binaries:
|
35
|
|
-```
|
36
|
|
-ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
|
37
|
|
-ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
|
38
|
|
-```
|
|
57
|
+Set the minimum cap to 2 in raw value on the sysfs/backlight/acpi_video0 device:
|
39
|
58
|
|
|
59
|
+ light -Nrs "sysfs/backlight/acpi_video0" 2
|
40
|
60
|
|
41
|
|
-## Usage
|
|
61
|
+List available devices
|
42
|
62
|
|
43
|
|
-This application usually has 4 different criteria on flags to use, which are operation modes, value mode, target and controller mode. Flags from these different modes can never be used in conjunction, but all of them do not always have to be specified (although it is recommended to do so for verbosity).
|
|
63
|
+ light -L
|
44
|
64
|
|
45
|
|
-**Note:** This application will only print errors if you are using it incorrectly. If something goes wrong, and you can't figure out why, try setting the verbosity flag with -v:
|
|
65
|
+Activate the Num. Lock keyboard LED, here `sysfs/leds/input3::numlock` is used, but this varies
|
|
66
|
+between different systems:
|
46
|
67
|
|
47
|
|
-* 0: No debug output
|
48
|
|
-* 1: Errors
|
49
|
|
-* 2: Errors, warnings
|
50
|
|
-* 3: Errors, warnings, notices
|
|
68
|
+ light -Srs "sysfs/leds/input3::numlock" 1
|
51
|
69
|
|
52
|
|
-### Operation modes
|
53
|
70
|
|
54
|
|
-The operation modes describe **what** you want to do.
|
|
71
|
+Usage
|
|
72
|
+-----
|
55
|
73
|
|
56
|
|
-* -G: Which **reads/gets** brightness/data from controllers/files
|
57
|
|
-* -S: Which **writes/sets** brightness/data to controllers/files
|
58
|
|
-* -A: Which does like -S but instead **adds** the value
|
59
|
|
-* -U: Which does like -S but instead '**subtracts** the value
|
60
|
|
-* -O: Save the current brightness for later use (usually used on shutdown)
|
61
|
|
-* -I: Restore the previously saved brightness (usually used on boot)
|
62
|
|
-* -L: List the available controllers
|
|
74
|
+Usage follows the following pattern, where options are optional and the neccesity of value depends on the options used
|
|
75
|
+
|
|
76
|
+ light [options] <value>
|
63
|
77
|
|
64
|
|
-When used by themselves operate on the brightness of a controller that is selected automatically. S, A and U needs another argument -- except for the main 4 criteria -- which is the value to set/add/subtract. This can be specified either in percent or in raw values, but remember to specify the value mode (read below) if you want to write raw values.
|
|
78
|
+### Command options
|
65
|
79
|
|
66
|
|
-### Value modes
|
|
80
|
+You may only specify one command flag at a time. These flags decide what the program will ultimately end up doing.
|
67
|
81
|
|
68
|
|
-The value mode specify in what unit you want to read or write values in. The default one (if not specified) is in percent, the other one is raw mode and should always be used when you need very precise values (or only have a controller with a very small amount of brightness levels).
|
|
82
|
+* `-H` Show help and exit
|
|
83
|
+* `-V` Show program version and exit
|
|
84
|
+* `-L` List available devices
|
|
85
|
+* `-A` Increase brightness by value (value needed!)
|
|
86
|
+* `-U` Decrease brightness by value (value needed!)
|
|
87
|
+* `-S` Set brightness to value (value needed!)
|
|
88
|
+* `-G` Get brightness
|
|
89
|
+* `-N` Set minimum brightness to value (value needed!)
|
|
90
|
+* `-P` Get minimum brightness
|
|
91
|
+* `-O` Save the current brightness
|
|
92
|
+* `-I` Restore the previously saved brightness
|
69
|
93
|
|
70
|
|
-* -p: Percent
|
71
|
|
-* -r: Raw mode
|
|
94
|
+Without any extra options, the command will operate on the device called `sysfs/backlight/auto`, which works as it's own device however it proxies the backlight device that has the highest controller resolution (read: highest precision). Values are interpreted and printed as percentage between 0.0 - 100.0.
|
|
95
|
+
|
|
96
|
+**Note:** If something goes wrong, you can find out by maxing out the verbosity flag by passing `-v 3` to the options. This will activate the logging of warnings, errors and notices. Light will never print these by default, as it is designed to primarily interface with other applications and not humanbeings directly.
|
|
97
|
+
|
|
98
|
+### Extra options
|
|
99
|
+
|
|
100
|
+These can be mixed, combined and matched after convenience.
|
|
101
|
+
|
|
102
|
+* `-r` Raw mode, values (printed and interpreted from commandline) will be treated as integers in the controllers native range, instead of in percent.
|
|
103
|
+* `-v <verbosity>` Specifies the verbosity level. 0 is default and prints nothing. 1 prints only errors, 2 prints only errors and warnings, and 3 prints both errors, warnings and notices.
|
|
104
|
+* `-s <devicepath>` Specifies which device to work on. List available devices with the -L command. Full path is needed.
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+Installation
|
|
108
|
+------------
|
|
109
|
+
|
|
110
|
+### Arch Linux
|
72
|
111
|
|
73
|
|
-Remember, this is the unit that will be used when you set, get, add or subtract brightness values.
|
|
112
|
+The latest stable release is available in official repos, install with:
|
|
113
|
+
|
|
114
|
+ pacman -S light
|
|
115
|
+
|
|
116
|
+Additionally, the latest development branch (master) is available on AUR: [light-git][]
|
|
117
|
+
|
|
118
|
+### Fedora
|
|
119
|
+
|
|
120
|
+Fedora already has light packaged in main repos, so just run:
|
|
121
|
+
|
|
122
|
+ dnf install light
|
|
123
|
+
|
|
124
|
+and you're good to go.
|
|
125
|
+
|
|
126
|
+### <a name="debian"></a>Debian/Ubuntu
|
|
127
|
+
|
|
128
|
+Pre-built .deb files, for the latest Ubuntu release, can be downloaded
|
|
129
|
+from the [GitHub](https://github.com/haikarainen/light/releases/) releases page. If you want to build your own
|
|
130
|
+there is native support available in the GIT sources. Clone and follow
|
|
131
|
+the development branch guidelines below followed by:
|
|
132
|
+
|
|
133
|
+ make deb
|
|
134
|
+
|
|
135
|
+### <a name="nix"></a>NixOS/nix
|
|
136
|
+
|
|
137
|
+You can add the following line to your `configuration.nix`:
|
|
138
|
+
|
|
139
|
+ programs.light.enable = true;
|
|
140
|
+
|
|
141
|
+For more detail on Backlight control in NixOS and setting system keybindings, visit the [NixOS Wiki page](https://nixos.wiki/wiki/Backlight)
|
|
142
|
+
|
|
143
|
+### Manual
|
74
|
144
|
|
75
|
|
-### Target
|
|
145
|
+If you download a stable release, these are the commands that will get you up and running:
|
76
|
146
|
|
77
|
|
-As you can not only handle the **brightness** of controllers, you may also specify a target to read/write from/to:
|
|
147
|
+ tar xf light-x.yy.tar.gz
|
|
148
|
+ cd light-x.yy/
|
|
149
|
+ ./configure && make
|
|
150
|
+ sudo make install
|
78
|
151
|
|
79
|
|
-* -b: Current brightness of selected controller
|
80
|
|
-* -m: Maximum brightness of selected controller
|
81
|
|
-* -c: Minimum brightness (cap) of selected controller
|
|
152
|
+However the latest development branch requires some extras. Clone the repository and run the `autogen.sh` script. This requires that `automake` and `autoconf` is installed on your system.
|
82
|
153
|
|
83
|
|
-The minimum brightness is a feature implemented as some controllers make the screen go pitch black at 0%, if you have a controller like that, it is recommended to set this value (in either percent or in raw mode). These values will be saved in raw mode though, so if you specify it in percent it might not be too accurate depending on your controller.
|
|
154
|
+ ./autogen.sh
|
|
155
|
+ ./configure && make
|
|
156
|
+ sudo make install
|
84
|
157
|
|
85
|
|
-### Controller modes
|
|
158
|
+The `configure` script and `Makefile.in` files are not part of GIT because they are generated at release time with `make release`.
|
86
|
159
|
|
87
|
|
-Finally, you can either use the built-in controller selection to get the controller with the maximum precision, or you can specify one manually with the -s flag. The -a flag will force automatic mode and is default. Use -L to get a list of controllers to use with the -s flag (to specify which controller to use).
|
88
|
160
|
|
89
|
|
-### Examples
|
|
161
|
+### Permissions
|
90
|
162
|
|
91
|
|
-Get the current brightness in percent
|
|
163
|
+Optionally, instead of the classic SUID root mode of operation, udev rules can be set up to manage the kernel sysfs permissions. Use the configure script to enable this mode of operation:
|
92
|
164
|
|
93
|
|
-`light -G`
|
|
165
|
+ ./configure --with-udev && make
|
|
166
|
+ sudo make install
|
94
|
167
|
|
95
|
|
-Increase brightness by 5 percent
|
|
168
|
+This installs the `90-backlight.rules` into `/usr/lib/udev/rules.d/`.
|
|
169
|
+If your udev rules are located elsewhere, use `--with-udev=PATH`.
|
96
|
170
|
|
97
|
|
-`light -A 5`
|
|
171
|
+**Note:** make sure that your user is part of the `video` group, otherwise you will not get access to the devices.
|
98
|
172
|
|
99
|
|
-Set the minimum cap to 2 in raw value on the acpi_video0 controller:
|
|
173
|
+**Note:** in this mode `light` runs unpriviliged, so the `/etc/light`
|
|
174
|
+directory (for cached settings) is not used, instead the per-user
|
|
175
|
+specific `~/.config/light` is used.
|
100
|
176
|
|
101
|
|
-`light -Scrs "acpi_video0" 2`
|
102
|
177
|
|
|
178
|
+[Light]: https://github.com/haikarainen/light/
|
|
179
|
+[light-git]: https://aur.archlinux.org/packages/light-git
|