Initialize
This commit is contained in:
commit
2d3f54a919
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
backlight-control
|
4
Makefile
Normal file
4
Makefile
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
CFLAGS=-Wall -Wextra -Werror -std=c99 -pedantic -O2
|
||||||
|
|
||||||
|
backlight-control: main.c
|
||||||
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
19
README.md
Normal file
19
README.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
A basic tool to increase and decrease intel backlight percent.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
You'll need `make` and some C compiler installed.
|
||||||
|
|
||||||
|
```
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
That's it.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Copy the `backlight-control` file to `/usr/local/bin/` or somewhere similar.
|
||||||
|
Then run `backlight-control` to get the current brightness as a percentage, or
|
||||||
|
`backlight-control +1` to increase brightness by 1 percent, or
|
||||||
|
`backlight-control -1` to decrease brightness by 1 percent. Or higher numbers
|
||||||
|
for higher percentages at a time.
|
97
main.c
Normal file
97
main.c
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void print_usage(char *argv[])
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Usage: %s <value>\n"
|
||||||
|
"\n"
|
||||||
|
"value:\n"
|
||||||
|
"\t +percent - increase brightness by percent\n"
|
||||||
|
"\t -percent - decrease brightness by percent\n",
|
||||||
|
argv[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int read_file(const char *path)
|
||||||
|
{
|
||||||
|
FILE *file = fopen(path, "r");
|
||||||
|
int value;
|
||||||
|
int read = fscanf(file, "%d", &value);
|
||||||
|
fclose(file);
|
||||||
|
if (read != 1)
|
||||||
|
{
|
||||||
|
printf("Error reading %s\n", path);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int max_brightness()
|
||||||
|
{
|
||||||
|
return read_file("/sys/class/backlight/intel_backlight/max_brightness");
|
||||||
|
}
|
||||||
|
|
||||||
|
int brightness()
|
||||||
|
{
|
||||||
|
return read_file("/sys/class/backlight/intel_backlight/brightness");
|
||||||
|
}
|
||||||
|
|
||||||
|
int brightness_percent()
|
||||||
|
{
|
||||||
|
return (brightness() * 100) / max_brightness();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
if (argc < 2)
|
||||||
|
{
|
||||||
|
printf("%d\n", brightness_percent());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 3)
|
||||||
|
{
|
||||||
|
print_usage(argv);
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int positive = 0;
|
||||||
|
if (argv[1][0] == '-')
|
||||||
|
{
|
||||||
|
positive = 0;
|
||||||
|
}
|
||||||
|
else if (argv[1][0] == '+')
|
||||||
|
{
|
||||||
|
positive = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print_usage(argv);
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int percent;
|
||||||
|
char *number_str = argv[1] + 1;
|
||||||
|
int read = sscanf(number_str, "%d", &percent);
|
||||||
|
if (read != 1)
|
||||||
|
{
|
||||||
|
print_usage(argv);
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
int current = brightness();
|
||||||
|
int max = max_brightness();
|
||||||
|
int change = (max * percent) / 100 * (positive ? 1 : -1);
|
||||||
|
FILE *file = fopen("/sys/class/backlight/intel_backlight/brightness", "w");
|
||||||
|
|
||||||
|
int set_to = current + change;
|
||||||
|
// clamp
|
||||||
|
if (set_to > max)
|
||||||
|
{
|
||||||
|
set_to = max;
|
||||||
|
}
|
||||||
|
if (set_to < 0)
|
||||||
|
{
|
||||||
|
set_to = 1;
|
||||||
|
}
|
||||||
|
fprintf(file, "%d", set_to);
|
||||||
|
}
|
Loading…
Reference in a new issue