aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xAdjbacklight.java104
-rwxr-xr-xadjbacklight29
-rwxr-xr-xadjbacklight.py47
3 files changed, 133 insertions, 47 deletions
diff --git a/Adjbacklight.java b/Adjbacklight.java
new file mode 100755
index 0000000..c632d65
--- /dev/null
+++ b/Adjbacklight.java
@@ -0,0 +1,104 @@
+import java.io.*;
+import java.util.*;
+
+
+/**
+ * @author Mattias Andrée, <a href="mailto:maandree@kth.se">maandree@kth.se</a>
+ */
+public class Adjbacklight
+{
+ public static void main(final String... args) throws IOException
+ {
+ String dir = "/sys/class/backlight/intel_backlight/";
+ int width = Integer.parseInt(args[1]);
+ int max = 0, min = 0, cur = 0;
+
+ { InputStream is = null;
+ try
+ { is = new FileInputStream(dir + "brightness");
+ Scanner sc = new Scanner(is);
+ cur = Integer.parseInt(sc.nextLine());
+ }
+ finally
+ { if (is != null)
+ is.close();
+ }
+ }
+ { InputStream is = null;
+ try
+ { is = new FileInputStream(dir + "max_brightness");
+ Scanner sc = new Scanner(is);
+ max = Integer.parseInt(sc.nextLine());
+ }
+ finally
+ { if (is != null)
+ is.close();
+ }
+ }
+
+ if (max <= min)
+ System.exit(127);
+ int step = (max - min) / 100;
+ int init = cur;
+
+ System.out.print("\n\n\n\n\n\n");
+ print(min, max, init, cur, width);
+
+ for (int d; (d = System.in.read()) != -1;)
+ switch (d)
+ {
+ case 'q':
+ case '\n':
+ case 4:
+ System.out.println();
+ return;
+
+ case 'A':
+ case 'C': cur += step << 1;
+ case 'B':
+ case 'D': cur -= step;
+
+ if (cur < min) cur = min;
+ if (cur > max) cur = max;
+
+ { OutputStream os = null;
+ try
+ { os = new FileOutputStream(dir + "brightness");
+ os.write((cur + "\n").getBytes("UTF-8"));
+ os.flush();
+ print(min, max, init, cur, width);
+ }
+ finally
+ { if (os != null)
+ os.close();
+ }
+ }
+ break;
+ }
+ }
+
+ private static void print(int min, int max, int init, int cur, int width)
+ {
+ String line = "──────────────────────────────────";
+ while (line.length() < width - 2)
+ line += line;
+ line = line.substring(0, width - 2);
+
+ String space = " ";
+ while (space.length() < width - 2)
+ space += space;
+ space = space.substring(0, width - 2);
+
+ int mid = (int)((cur - min) * (width - 2.) / (max - min) + 0.5);
+
+ System.out.print("\033[1000D\033[6A");
+ System.out.println("\033[2K┌" + line + "┐");
+ System.out.println("\033[2K│\033[47m" + space.substring(0, mid) + "\033[49m" + space.substring(mid) + "│");
+ System.out.println("\033[2K└" + line + "┘");
+ System.out.println("\033[2KMaximum brightness: " + max);
+ System.out.println("\033[2KInitial brightness: " + init);
+ System.out.println("\033[2KCurrent brightness: " + cur);
+ }
+
+}
+
diff --git a/adjbacklight b/adjbacklight
new file mode 100755
index 0000000..91bc9fd
--- /dev/null
+++ b/adjbacklight
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+if [[ ! -f 'Adjbacklight.class' ]]; then
+ javac -cp . Adjbacklight.java || exit 1
+fi
+
+cat <<.
+
+
+If the program is abnormal aborted there may be effects
+on the terminal the following commands should reset it:
+
+ stty icanon echo
+ echo -en '\033[?25h'
+
+
+
+
+.
+
+stty -icanon -echo
+if [[ $? = 0 ]]; then
+ echo -en '\033[?25l'
+ sudo java -cp . Adjbacklight `stty size`
+ echo -en '\033[?25h'
+ stty icanon echo
+else
+ echo -e '\e[1;31m::\e[39m Epic failure\e[21m'
+fi
diff --git a/adjbacklight.py b/adjbacklight.py
deleted file mode 100755
index b915114..0000000
--- a/adjbacklight.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-import os
-import sys
-from subprocess import Popen, PIPE
-
-
-
-'''
-Hack to enforce UTF-8 in output (in the future, if you see anypony not using utf-8 in programs by default, report them to Princess Celestia so she can banish them to the moon)
-'''
-def print(text = '', end = '\n'):
- sys.stdout.buffer.write((str(text) + end).encode('utf-8'))
-
-
-
-'''
-This is the mane class of the program
-'''
-class Adjbacklight():
- def __init__(self):
- #Popen('stty -icanon'.split(' '), stderr=os.fdopen(2, 'w')).wait()
- try:
- dir = '/sys/class/backlight/intel_backlight/'
- (size, dummy) = Popen('stty size'.split(' '), stdout=PIPE, stderr=PIPE).communicate()
- width = int(size.decode('UTF-8').replace('\n', '').split(' ')[1])
- with open(dir + 'brightness', 'r') as file:
- current = int(file.readline().replace('\n', ''))
- with open(dir + 'max_brightness', 'r') as file:
- max = int(file.readline().replace('\n', ''))
- self.__interface(0, current, max, width, dir + 'brightness')
- finally:
- pass#Popen('stty icanon'.split(' '), stderr=os.fdopen(2, 'w')).wait()
-
- def __interface(self, min, cur, max, width, file):
- step = (max - min) // 100
- while (True):
- print(sys.stdin.buffer.read1())
-
-
-
-'''
-Start the program from Adjbacklight.__init__ if this is the executed file
-'''
-if __name__ == '__main__':
- Adjbacklight()