From e1db7f59c8428f6ceccae98a53c8e28eeddab707 Mon Sep 17 00:00:00 2001 From: klein panic Date: Sun, 29 Sep 2024 02:33:45 -0400 Subject: [PATCH] intiial commit --- Obj/brightness.o | Bin 0 -> 8024 bytes Obj/main.o | Bin 0 -> 4120 bytes build/Makefile | 62 ++++++++++++++ build/brightness | Bin 0 -> 21904 bytes docs/brightness.1 | 0 include/brightness.h | 14 +++ include/brightness.h.bk | 16 ++++ obj/main.o | Bin 0 -> 3880 bytes src/brightness.c | 185 ++++++++++++++++++++++++++++++++++++++++ src/brightness.c.bak | 165 +++++++++++++++++++++++++++++++++++ src/brightness.o | Bin 0 -> 7448 bytes src/main.c | 80 +++++++++++++++++ 12 files changed, 522 insertions(+) create mode 100644 Obj/brightness.o create mode 100644 Obj/main.o create mode 100644 build/Makefile create mode 100755 build/brightness create mode 100644 docs/brightness.1 create mode 100644 include/brightness.h create mode 100644 include/brightness.h.bk create mode 100644 obj/main.o create mode 100644 src/brightness.c create mode 100644 src/brightness.c.bak create mode 100644 src/brightness.o create mode 100644 src/main.c diff --git a/Obj/brightness.o b/Obj/brightness.o new file mode 100644 index 0000000000000000000000000000000000000000..f2658459e7777d27a24ba63bc16c0c9a07bfc429 GIT binary patch literal 8024 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 KTm-^E*AD<|L{Rzw literal 0 HcmV?d00001 diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..5192352 --- /dev/null +++ b/build/Makefile @@ -0,0 +1,62 @@ +# Makefile located in build/ directory + +# Compiler +CC = gcc + +# Compiler Flags +CFLAGS = -I../include -Wall + +# Linker Flags +LDFLAGS = -lX11 -lm + +# Directories +SRC_DIR = ../src +OBJ_DIR = ../Obj +BUILD_DIR = . +INCLUDE_DIR = ../include + +# Source Files +SRC = $(SRC_DIR)/main.c $(SRC_DIR)/brightness.c + +# Object Files +OBJ = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRC)) + +# Target Binary +TARGET = brightness + +# Installation Directory +PREFIX ?= /usr/local +BIN_DIR = $(PREFIX)/bin + +# Default Target +all: $(TARGET) + +# Link Object Files to Create Binary +$(TARGET): $(OBJ) + $(CC) -o $(BUILD_DIR)/$@ $^ $(LDFLAGS) + +# Compile Source Files to Object Files +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) + $(CC) $(CFLAGS) -c $< -o $@ + +# Create Object Directory if it Doesn't Exist +$(OBJ_DIR): + mkdir -p $(OBJ_DIR) + +# Install the Binary to /usr/local/bin/ +install: $(TARGET) + @echo "Installing $(TARGET) to $(BIN_DIR)/$(TARGET)" + mkdir -p $(BIN_DIR) + install -m 755 $(BUILD_DIR)/$(TARGET) $(BIN_DIR)/$(TARGET) + +# Uninstall the Binary from /usr/local/bin/ +uninstall: + @echo "Uninstalling $(TARGET) from $(BIN_DIR)/$(TARGET)" + rm -f $(BIN_DIR)/$(TARGET) + +# Clean Build Artifacts +clean: + rm -f $(OBJ) $(BUILD_DIR)/$(TARGET) + +# Phony Targets +.PHONY: all clean install uninstall diff --git a/build/brightness b/build/brightness new file mode 100755 index 0000000000000000000000000000000000000000..0f98f717c0d7edc8677b205040ed00b7d97605fc GIT binary patch literal 21904 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ÐlV zW-5Z##vyJE7UyTkf~E)X7$4|7Adol{4=6AYhJaYX$weiGdif0T@rg;9@g<4r49P_$ z#U-U_X?n>Fh;s_!OLF6rK_?XyGsMTINO#HWl*Ls=K?w`A>Q3DG~U$%D(K-7#1QZ9Sc+jB* z(BlfwkB&e&oFP6Q`G^EmN2481fqKS6N>O5Yd}eZf9^}jh44ug5M<7nKh>s8Pb%w@t z3S`a-Im$qx2=W@zSrqZ{DaHBm8Hsr*IjIcba~|SLL33&h>8U00$&lG4WFtT)MW8wc z>8K2>hhaeC26T!A%CQ)bb2pIBeSn-8fnqqw5oohY@IySn$3#HRoIuf23_i31RVcLt z*$JF_f}TtPJ^TVy3jL%ExU8`W=$s8W7nGzyd6EH~RT&uciYs$V5|bG8 zic5+hbOwwCnoKJyV9?9UFGA zFc^*A)&qB{K^mdhjDdjxSwE=021&ta(0mn$55ur_A&d{|?;z`k^|xR&y8Y<-!$EUN z|NrO1+z%VafYBCEi$ELHK}>Y_Cql959*#Y9Yvtps<7KhgS0pp!1JFT|}6E z*tiLdhK-Ye>;_?w86X;l3qc#Lk=)M&9fyF?VNiuI_rvUg(V!iXpfL^@A2!YbqZ6R| zLGA~sfw>LP=JnKz-f@DK@w05m4+G50O}7T z>vw?m(_u8sy-@9tK_%GW5(5JRXucR(Kdj#fqbGq*CV**Xz-(S^L-RkZp9iBkk@SL? z(BueWf-z{W6=Xl$n`q}927nSLSS5r&_sUX!>`61~wQN7+`b{ z$Z;^uNZ|$(0`>nvK?HLqY`g+?{vWz~VSE@3+6V?Z>;a}9HqN;NdLAQ89n3x$A4Y$H zj&Z{D!^Rt6=Q+YM1}Oi4%z){GrK8nQ|HJh|$2kw!gH$sxfOaZESP&AXA4dO0(+?Xb zeF4?4fFt~1`q>yEXAQ#ahmDJHI6~}$xf8;J4vNA!3=9lBj1V!He%N_r5;*jum&bxo z`(eorW;9Gc=pYK17>I^>2bqSYJ&-&MTR`o%fCfD1zza~91?F#1SprfE${#SdgZMC9 i-~nN|p=B7Dy%1SYUk-F?6^w_VxA{QWQfL~`xC{W7IU(=> literal 0 HcmV?d00001 diff --git a/docs/brightness.1 b/docs/brightness.1 new file mode 100644 index 0000000..e69de29 diff --git a/include/brightness.h b/include/brightness.h new file mode 100644 index 0000000..f0a3e40 --- /dev/null +++ b/include/brightness.h @@ -0,0 +1,14 @@ +// brightness.h +#ifndef BRIGHTNESS_H +#define BRIGHTNESS_H + +#define BRIGHTNESS_PATH "/sys/class/backlight/intel_backlight/brightness" +#define MAX_BRIGHTNESS_PATH "/sys/class/backlight/intel_backlight/max_brightness" + +int get_max_brightness(); +int get_current_brightness(); +void set_brightness(int value, int raw, int no_display); +void adjust_brightness(const char *direction, int no_display); +void display_brightness(int brightness); + +#endif // BRIGHTNESS_H diff --git a/include/brightness.h.bk b/include/brightness.h.bk new file mode 100644 index 0000000..7799f99 --- /dev/null +++ b/include/brightness.h.bk @@ -0,0 +1,16 @@ +#ifndef BRIGHTNESS_H +#define BRIGHTNESS_H + +#define BRIGHTNESS_PATH "/sys/class/backlight/intel_backlight/brightness" +#define MAX_BRIGHTNESS_PATH "/sys/class/backlight/intel_backlight/max_brightness" + +void set_brightness(int value, int raw); +void adjust_brightness(const char *direction); +void display_brightness(int brightness); +int get_max_brightness(); +int get_current_brightness(); +void list_brightness_devices(const char *class_filter); +int check_brightness_paths(); +void set_device(const char *device, const char *class); + +#endif // BRIGHTNESS_H diff --git a/obj/main.o b/obj/main.o new file mode 100644 index 0000000000000000000000000000000000000000..6c6134e7fb48ae55cc3049ce5bc157448a195e78 GIT binary patch literal 3880 zcmb<-^>JfjWMqH=Mg}_u1P><4!0>__!FB*M9T<2Sco;%GI-hzpzY*~0to`B9%?gt7 z=nnni(aQ^FcAoR-JiY_Od;uaRoIDKG;Lurn#-p?Jz;V||Ea5$oe{3Q}yXo$-eEK$SX+ROm*YiS28QO^9}FdqU_Llece*}6=G^Ia zeUN=1W#;$VJ9tcb?d8#2`+=cE*rVI^11x=mjd^X*T>IvKiCA~&lWx~Ho!4L<2jzv= zBG{t!5p97$_v>r6?F07;r(fF*uhN6{Y5tC?pkSre~Dor4|<}XrOyj(@H@#1*!p?dQ^vk zRjaCUF)+A0J6kDexTGd!Cgv#^8tED78R#0CXhN9~2Z%r@2F9u&2F3~jMrj^)jtPtm z3^EK543Y*VTn0xzfi@;*UbY+_b`GeV4M>uKfnfnN0|Q*1c{Vdd1ymA^0;PWzhL8Wz zguz^9tR+4J12Y3Szkt=i2#_0ukko_S$iTn=@{a&a5fUxUz`%e_T$zD^0b~wLKiDq} z3=A4L)a&CAH^CupjYAw1zS!IoghPEQ4)Jmv;taWonR$B23H2&K{0^MevB0|Nt0Jty81;>ahUqaQ1xq};^^w%BZ-6LVBsJRG62b6)1c-kLB&C8 zk;BaeDh{GR;XDVb-XA2uz`%g6z7yWiSr@Zy8%fYl&4_kA43ucnFSM9fcgVuF9<`q43IW6 zBt3(~VdWl!UU6k^Nn#R%UU5kggwBAmic)hD^-5AJN*MG~5=#;p^pc8;8T5+sA)Ms= z+}zZ>5(d4z{E}2XcfU~G;*!MVYz95Bw$zOHw4%gZQ1JzG0!1{)U!Wial?})S!Tfa* z8Xhn?kXjfUM1$%9P&mQVgTz4i20MskV5orV2c7oq m=?7NcgTz1>WFLrzVL=8^dj`fs& +#include +#include +#include +#include +#include +#include +#include "brightness.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +int get_max_brightness() { + FILE *file = fopen(MAX_BRIGHTNESS_PATH, "r"); + if (file == NULL) { + perror("Failed to open max brightness file"); + exit(EXIT_FAILURE); + } + int max_brightness; + if (fscanf(file, "%d", &max_brightness) != 1) { + perror("Failed to read max brightness value"); + fclose(file); + exit(EXIT_FAILURE); + } + fclose(file); + return max_brightness; +} + +int get_current_brightness() { + FILE *file = fopen(BRIGHTNESS_PATH, "r"); + if (file == NULL) { + perror("Failed to open brightness file"); + exit(EXIT_FAILURE); + } + int brightness; + if (fscanf(file, "%d", &brightness) != 1) { + perror("Failed to read brightness value"); + fclose(file); + exit(EXIT_FAILURE); + } + fclose(file); + return brightness; +} + +void set_brightness(int value, int raw, int no_display) { + int max_brightness = get_max_brightness(); + if (!raw) { + value = (value * max_brightness) / 100; + } + FILE *brightness_file = fopen(BRIGHTNESS_PATH, "w"); + if (brightness_file == NULL) { + perror("Failed to open brightness file for writing"); + exit(EXIT_FAILURE); + } + if (fprintf(brightness_file, "%d", value) < 0) { + perror("Failed to write brightness value"); + fclose(brightness_file); + exit(EXIT_FAILURE); + } + fclose(brightness_file); + if (!no_display) { + display_brightness(value); + } +} + +void adjust_brightness(const char *direction, int no_display) { + int brightness = get_current_brightness(); + int max_brightness = get_max_brightness(); + + if (strcmp(direction, "up") == 0) { + brightness += max_brightness / 10; + } else if (strcmp(direction, "down") == 0) { + brightness -= max_brightness / 10; + } else { + fprintf(stderr, "Error: Invalid adjust direction. Use 'up' or 'down'.\n"); + exit(EXIT_FAILURE); + } + + if (brightness < 0) { + brightness = 0; + } else if (brightness > max_brightness) { + brightness = max_brightness; + } + + set_brightness(brightness, 1, no_display); +} + +void draw_icon(Display *d, Window w, GC gc) { + int circle_radius = 22; // Radius for a smaller circle + int ray_length = 27; // Length of the rays + int line_thickness = 5; // Increased line thickness + int y_offset = 10; // Amount to move the icon down + + // Set the line attributes to have thicker lines with rounded edges + XSetLineAttributes(d, gc, line_thickness, LineSolid, CapRound, JoinRound); + + // Draw the smaller center circle, moved down by y_offset + XDrawArc(d, w, gc, 100 - circle_radius, 40 - circle_radius + y_offset, 2 * circle_radius, 2 * circle_radius, 0, 360 * 64); + + // Draw the rays with adjusted length, moved down by y_offset + for (int i = 0; i < 8; ++i) { + double angle = i * M_PI / 4.0; + int x1 = 100 + (int)((circle_radius + 5) * cos(angle)); // Start just outside the circle + int y1 = 40 + (int)((circle_radius + 5) * sin(angle)) + y_offset; + int x2 = 100 + (int)((circle_radius + ray_length) * cos(angle)); // Extend to ray_length + int y2 = 40 + (int)((circle_radius + ray_length) * sin(angle)) + y_offset; + XDrawLine(d, w, gc, x1, y1, x2, y2); + } +} + +void display_brightness(int brightness) { + Display *d; + Window w; + XEvent e; + int screen; + unsigned int display_width, display_height; + int width = 200, height = 120; + int sections = 10; + int graph_height = 10; + + if ((d = XOpenDisplay(NULL)) == NULL) { + fprintf(stderr, "Cannot open display\n"); + exit(EXIT_FAILURE); + } + + screen = DefaultScreen(d); + display_width = DisplayWidth(d, screen); + display_height = DisplayHeight(d, screen); + + w = XCreateSimpleWindow(d, RootWindow(d, screen), (display_width - width) / 2, (display_height - height) / 2, width, height, 1, + BlackPixel(d, screen), WhitePixel(d, screen)); + XSetWindowBackground(d, w, 0xD3D3D3); // Light gray + XStoreName(d, w, "BrightnessControl"); + XClassHint *classHint = XAllocClassHint(); + if (classHint) { + classHint->res_name = "brightnesscontrol"; + classHint->res_class = "BrightnessControl"; + XSetClassHint(d, w, classHint); + XFree(classHint); + } + + XSelectInput(d, w, ExposureMask | KeyPressMask | StructureNotifyMask); + XMapWindow(d, w); + + GC gc = XCreateGC(d, w, 0, NULL); + GC bg_gc = XCreateGC(d, w, 0, NULL); + XSetForeground(d, gc, BlackPixel(d, screen)); + XSetBackground(d, bg_gc, WhitePixel(d, screen)); + XSetLineAttributes(d, gc, 3, LineSolid, CapButt, JoinMiter); + + int max_brightness = get_max_brightness(); + + // Wait for the window to be mapped + while (1) { + XNextEvent(d, &e); + if (e.type == MapNotify) { + break; + } + } + + // Draw the icon + draw_icon(d, w, gc); + + // Draw the background for graph + XSetForeground(d, bg_gc, 0xA9A9A9); // Dark gray + XFillRectangle(d, w, bg_gc, 10, 100, 180, graph_height); + + // Draw the graph + int filled_sections = (int)((brightness / (double)max_brightness) * sections); + for (int i = 0; i < sections; ++i) { + if (i < filled_sections) { + XSetForeground(d, gc, 0xFFFFFF); // White + } else { + XSetForeground(d, gc, 0xA9A9A9); // Dark gray + } + XFillRectangle(d, w, gc, 10 + i * (180 / sections), 100, (180 / sections) - 2, graph_height); + } + + XFlush(d); + sleep(1); // Display the window for a brief period + XDestroyWindow(d, w); + XCloseDisplay(d); +} diff --git a/src/brightness.c.bak b/src/brightness.c.bak new file mode 100644 index 0000000..904d0ee --- /dev/null +++ b/src/brightness.c.bak @@ -0,0 +1,165 @@ +#include +#include +#include +#include +#include +#include +#include +#include "brightness.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +int get_max_brightness() { + FILE *file = fopen(MAX_BRIGHTNESS_PATH, "r"); + if (file == NULL) { + perror("Failed to open max brightness file"); + exit(EXIT_FAILURE); + } + int max_brightness; + fscanf(file, "%d", &max_brightness); + fclose(file); + return max_brightness; +} + +int get_current_brightness() { + FILE *file = fopen(BRIGHTNESS_PATH, "r"); + if (file == NULL) { + perror("Failed to open brightness file"); + exit(EXIT_FAILURE); + } + int brightness; + fscanf(file, "%d", &brightness); + fclose(file); + return brightness; +} + +void set_brightness(int value, int raw) { + int max_brightness = get_max_brightness(); + if (!raw) { + value = (value * max_brightness) / 100; + } + FILE *brightness_file = fopen(BRIGHTNESS_PATH, "w"); + if (brightness_file == NULL) { + perror("Failed to open brightness file"); + exit(EXIT_FAILURE); + } + fprintf(brightness_file, "%d", value); + fclose(brightness_file); + display_brightness(value); +} + +void adjust_brightness(const char *direction) { + int brightness = get_current_brightness(); + int max_brightness = get_max_brightness(); + + if (strcmp(direction, "up") == 0) { + brightness += max_brightness / 10; + } else if (strcmp(direction, "down") == 0) { + brightness -= max_brightness / 10; + } + + if (brightness < 0) { + brightness = 0; + } else if (brightness > max_brightness) { + brightness = max_brightness; + } + + set_brightness(brightness, 1); +} + +void draw_icon(Display *d, Window w, GC gc) { + int circle_radius = 22; // Radius for a smaller circle + int ray_length = 27; // Length of the rays + int line_thickness = 5; // Increased line thickness + int y_offset = 10; // Amount to move the icon down + + // Set the line attributes to have thicker lines with rounded edges + XSetLineAttributes(d, gc, line_thickness, LineSolid, CapRound, JoinRound); + + // Draw the smaller center circle, moved down by y_offset + XDrawArc(d, w, gc, 100 - circle_radius, 40 - circle_radius + y_offset, 2 * circle_radius, 2 * circle_radius, 0, 360 * 64); + + // Draw the rays with adjusted length, moved down by y_offset + for (int i = 0; i < 8; ++i) { + int angle = i * M_PI / 4; + int x1 = 100 + (circle_radius + 5) * cos(angle); // Start just outside the circle + int y1 = 40 + (circle_radius + 5) * sin(angle) + y_offset; + int x2 = 100 + (circle_radius + ray_length) * cos(angle); // Extend to ray_length + int y2 = 40 + (circle_radius + ray_length) * sin(angle) + y_offset; + XDrawLine(d, w, gc, x1, y1, x2, y2); + } +} + +void display_brightness(int brightness) { + Display *d; + Window w; + XEvent e; + int screen; + unsigned int display_width, display_height; + int width = 200, height = 120; + int sections = 10; + int graph_height = 10; + + if ((d = XOpenDisplay(NULL)) == NULL) { + fprintf(stderr, "Cannot open display\n"); + exit(1); + } + + screen = DefaultScreen(d); + display_width = DisplayWidth(d, screen); + display_height = DisplayHeight(d, screen); + + w = XCreateSimpleWindow(d, RootWindow(d, screen), (display_width - width) / 2, (display_height - height) / 2, width, height, 1, + BlackPixel(d, screen), WhitePixel(d, screen)); + XSetWindowBackground(d, w, 0xD3D3D3); // Light gray + XStoreName(d, w, "BrightnessControl"); + XClassHint *classHint = XAllocClassHint(); + classHint->res_name = "brightnesscontrol"; + classHint->res_class = "BrightnessControl"; + XSetClassHint(d, w, classHint); + XFree(classHint); + + XSelectInput(d, w, ExposureMask | KeyPressMask | StructureNotifyMask); + XMapWindow(d, w); + + GC gc = XCreateGC(d, w, 0, NULL); + GC bg_gc = XCreateGC(d, w, 0, NULL); + XSetForeground(d, gc, BlackPixel(d, screen)); + XSetBackground(d, bg_gc, WhitePixel(d, screen)); + XSetLineAttributes(d, gc, 3, LineSolid, CapButt, JoinMiter); + + int max_brightness = get_max_brightness(); + + // Wait for the window to be mapped + while (1) { + XNextEvent(d, &e); + if (e.type == MapNotify) { + break; + } + } + + // Draw the icon + draw_icon(d, w, gc); + + // Draw the background for graph + XSetForeground(d, bg_gc, 0xA9A9A9); // Dark gray + XFillRectangle(d, w, bg_gc, 10, 100, 180, graph_height); + + // Draw the graph + int filled_sections = (int)((brightness / (double)max_brightness) * sections); + for (int i = 0; i < sections; ++i) { + if (i < filled_sections) { + XSetForeground(d, gc, 0xFFFFFF); // White + } else { + XSetForeground(d, gc, 0xA9A9A9); // Dark gray + } + XFillRectangle(d, w, gc, 10 + i * (180 / sections), 100, 180 / sections - 2, graph_height); + } + + XFlush(d); + sleep(1); // Display the window for a brief period + XDestroyWindow(d, w); + XCloseDisplay(d); +} diff --git a/src/brightness.o b/src/brightness.o new file mode 100644 index 0000000000000000000000000000000000000000..45c2ece860ceff5fbe13172f7549378bb4b674ed GIT binary patch literal 7448 zcmb<-^>JfjWMqH=Mg}_u1P><4z;Htn!FB*M9T<2Sco;%GI-hzpzY*~0Wd(_PbRL7V zj=zA2xc=~HuKmGKDv2huA7l?iO>gKIk8al=9=*H}E$2KskM966A<`hJPKa^cu3t_b z9!N_SI&0r_mcBr^uG95TbL|U;Ql)O!H~i~e|9B){@W{L*-}*YxWi>j&In^uYrjMsJ|33GlE|@aU{Xbu_XMet2}d zzVPT31qHcB=QWr?tp`dKKw%H|QF>Zh8q7ybU>`BM{&{VNQ>P4u&V#?04*rnWyub(w zu|EuzoX1`NfNXrt*X{bp+Vw{rTes_vPS-!(u7CD{(gubn0z5ivPk3~e9`NW4-ErLY zhZq9`!*SOy(qQTXC;=XKeZ$4Tz|bA~!K1r$hex;T3CEovqa1fIF)%Rf1lb1jT(|2F z#siL>2cY!99U2S_4BDi%;95!79KBOEDW1e#s{FgDlzVdw8l{rCU>1X!+Ud}F}K zz|gt(&cFZvkGuXj0Zv9=D!|kSP%?t1rv0E~1C9cZPS*z>&9x60N_9QD!O`l`d2p8q z0|Ns%!NT)5q^v?J;6Uzdc)-BG(CK=|qucd?M|T6r!0ymH9?6$H4nAV{V7$=nAkpc1 z1GlV9r|T75vL4+Y5xC_75?s1nzjW7v;!=pR&0Ne~@V_grxodC0%v4IKI z>QJzgkP0@B?ozN2xIowiie9)Oovxs~j$3vE$amPH&!ama!K2$3ROmcF@i_L__UI0X z@aXo17>Dd3aIy8k5$rU_9iYMs%-qGyz`y`=C34xl#-n%YgMa`3gWZKFySrOKg3UjK zOPF5YodC%pkf=d%9K->;R<2x$9Aw?TZ#=p~H^71kROkgd?%cw_z~Bfj7I%Vj2h1@Z z%|`^F1R?#|9u3K}k{Ntuax3Wi2{MtTOih9;U&CIhG} z1)0QH6~w?;A;2ij!_F~*k%2*m0fIqtr69tQPoRy-nU{^JfQOv}B4+~HKZry86b|uoIK(gE5Wj;%{3Q-iX z;}GX)VoIK;Jah+E?j_rxLYk3&2Lhj=;;@j@Kp4LHR6afr{tA-)oa_y!!}+i-{< z#UYMVKAG<1>@< z^B5w6Q%ig@^HLp4N{TX*N=s6U86sSY63ZQnk{Ocoiy4YD^B@8sMGO)C1*v&1kh+1P zxFjXDsE8r0yeP9Il_A2pC^fMpH8?Z3ASX3EGcP5-9Bep*>6Dn9onDk*nwP>55nPgA zlr3!0M5BZbhl7AhDd(EvK|NgP}MlHMM{t!X>r1 zq$s}&$=^!!_0xz zUFJ}6ka{)-1_qdVMKILw@QC_e#8gUsPTQlEn)&WR-602POs1GBdaO&rwr z00~V35ey6rAoG#^1uADjQZRF-fH({c3~Qh?NIkN@wjqfl`wLtLBZVi-UssXTBm3(i zk~p%z{vnBj?1uRZ)bj&L!Q8nS#9?4yu!7bnFmafFouJ|%Gm!lo0u_g;hxr#&-hqq+ zsYmv28dN<<9NE7mP;r|aoM2NMU4HNgD48Oa<_;~ge` z07)EV2Tc4NR2=4>tsp}g7#MCs#X)NMk=(-pQiv2^;2sJC1A{PB99?}pk~k<&!R+0J zBrb?#J_{(bLDQQMlDH~V9Hb4z1P>@NFfbT`I7secfx0^#Dh_gwFp@bHP;rvt>w83xU#AaPj#;sBaBtpCEGS6rD}l9k^^>9c(cKTze*>lvN~60!2%4AB)aYPfV7QFtVKgoSD4Ai?UjVA4 R7#J8p;}CE|p<#v02LL+BCEfr4 literal 0 HcmV?d00001 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..265e4e0 --- /dev/null +++ b/src/main.c @@ -0,0 +1,80 @@ +// main.c +#include +#include +#include +#include "brightness.h" + +void print_usage(const char *prog_name) { + fprintf(stderr, "Usage: %s [--machine-readable|-m] [--human-readable|-hr] [--adjust|-a up|down] [--set|-s ] [--nodisplay|-nd]\n", prog_name); +} + +int main(int argc, char *argv[]) { + int show_machine_brightness = 0; + int show_human_brightness = 0; + const char *adjust_direction = NULL; + int set_brightness_value = -1; + int set_brightness_raw = 0; + int no_display = 0; // New flag for --nodisplay + + if (argc < 2) { + print_usage(argv[0]); + return EXIT_FAILURE; + } + + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "--machine-readable") == 0 || strcmp(argv[i], "-m") == 0) { + show_machine_brightness = 1; + } else if (strcmp(argv[i], "--human-readable") == 0 || strcmp(argv[i], "-hr") == 0) { + show_human_brightness = 1; + } else if (strcmp(argv[i], "--adjust") == 0 || strcmp(argv[i], "-a") == 0) { + if (i + 1 < argc) { + adjust_direction = argv[++i]; + } else { + print_usage(argv[0]); + return EXIT_FAILURE; + } + } else if (strcmp(argv[i], "--set") == 0 || strcmp(argv[i], "-s") == 0) { + if (i + 1 < argc) { + set_brightness_value = atoi(argv[++i]); + if (set_brightness_value < 0 || set_brightness_value > 100) { + fprintf(stderr, "Error: Value for --set must be between 0 and 100\n"); + return EXIT_FAILURE; + } + } else { + print_usage(argv[0]); + return EXIT_FAILURE; + } + } else if (strcmp(argv[i], "--nodisplay") == 0 || strcmp(argv[i], "-nd") == 0) { + no_display = 1; // Set the no_display flag + } else { + print_usage(argv[0]); + return EXIT_FAILURE; + } + } + + if (show_machine_brightness) { + int brightness = get_current_brightness(); + printf("Current brightness (machine-readable): %d\n", brightness); + return EXIT_SUCCESS; + } + + if (show_human_brightness) { + int brightness = get_current_brightness(); + int max_brightness = get_max_brightness(); + printf("Current brightness (human-readable): %d%%\n", (brightness * 100) / max_brightness); + return EXIT_SUCCESS; + } + + if (adjust_direction) { + adjust_brightness(adjust_direction, no_display); + return EXIT_SUCCESS; + } + + if (set_brightness_value != -1) { + set_brightness(set_brightness_value, set_brightness_raw, no_display); + return EXIT_SUCCESS; + } + + print_usage(argv[0]); + return EXIT_FAILURE; +}