aboutsummaryrefslogtreecommitdiff
path: root/libLumina
diff options
context:
space:
mode:
authorJesse Smith <jessefrgsmith@yahoo.ca>2014-09-06 17:28:06 -0300
committerJesse Smith <jessefrgsmith@yahoo.ca>2014-09-06 17:28:06 -0300
commit31a2df51b78736da677fc61f9a09a93579cbdb7a (patch)
tree616df2cc9c7b53033c89cb48822251bcb029b21f /libLumina
parentAdded volume control and initial screen brightness control code to Linux. Upd... (diff)
downloadlumina-31a2df51b78736da677fc61f9a09a93579cbdb7a.tar.gz
lumina-31a2df51b78736da677fc61f9a09a93579cbdb7a.tar.bz2
lumina-31a2df51b78736da677fc61f9a09a93579cbdb7a.zip
Added audio volume control to Linux. Added initial code for changing screen brightness on Linux and updated dependnecy list. Added template file for future operating system support.
Diffstat (limited to 'libLumina')
-rw-r--r--libLumina/LuminaOS-Linux.cpp62
-rw-r--r--libLumina/libLumina.pro1
2 files changed, 57 insertions, 6 deletions
diff --git a/libLumina/LuminaOS-Linux.cpp b/libLumina/LuminaOS-Linux.cpp
index 9d891461..ce5b8240 100644
--- a/libLumina/LuminaOS-Linux.cpp
+++ b/libLumina/LuminaOS-Linux.cpp
@@ -5,10 +5,14 @@
// See the LICENSE file for full details
//===========================================
#ifdef __linux__
+#include <QDebug>
#include "LuminaOS.h"
#include <unistd.h>
#include <stdio.h> // Needed for BUFSIZ
+//can't read xbrightness settings - assume invalid until set
+static int screenbrightness = -1;
+
// ==== ExternalDevicePaths() ====
QStringList LOS::ExternalDevicePaths(){
//Returns: QStringList[<type>::::<filesystem>::::<path>]
@@ -20,28 +24,74 @@ QStringList LOS::ExternalDevicePaths(){
//Read screen brightness information
int LOS::ScreenBrightness(){
- //Returns: Screen Brightness as a percentage (0-100, with -1 for errors)
- return -1; //not implemented yet for Linux
+ //Returns: Screen Brightness as a percentage (0-100, with -1 for errors)
+ if(screenbrightness==-1){
+ if(QFile::exists("/tmp/.lumina-currentxbrightness")){
+ int val = LUtils::readFile("/tmp/.lumina-currentxbrightness").join("").simplified().toInt();
+ screenbrightness = val;
+ }
+ }
+ return screenbrightness;
+
}
//Set screen brightness
void LOS::setScreenBrightness(int percent){
- //not implemented yet for Linux
+ //ensure bounds
+ if(percent<0){percent=0;}
+ else if(percent>100){ percent=100; }
+ // float pf = percent/100.0; //convert to a decimel
+ //Run the command
+ QString cmd = "xbacklight -set %1";
+ // cmd = cmd.arg( QString::number( int(65535*pf) ) );
+ cmd = cmd.arg( QString::number( percent ) );
+ int ret = LUtils::runCmd(cmd);
+ //Save the result for later
+ if(ret!=0){ screenbrightness = -1; }
+ else{ screenbrightness = percent; }
+ LUtils::writeFile("/tmp/.lumina-currentxbrightness", QStringList() << QString::number(screenbrightness), true);
+
}
//Read the current volume
int LOS::audioVolume(){ //Returns: audio volume as a percentage (0-100, with -1 for errors)
- return -1; //Not implemented yet for Linux
+QString info = LUtils::getCmdOutput("amixer get Master").join("").simplified();;
+ int out = -1;
+ int start_position, end_position;
+ QString current_volume;
+ if(!info.isEmpty()){
+ start_position = info.indexOf("[");
+ end_position = info.indexOf("%");
+ current_volume = info.mid(start_position + 1, (end_position - start_position) - 1);
+ out = current_volume.toInt();
+ }
+ return out;
+
+
}
//Set the current volume
void LOS::setAudioVolume(int percent){
- //not implemented yet for Linux
+ if(percent<0){percent=0;}
+ else if(percent>100){percent=100;}
+ QString info = "amixer -c 0 sset Master,0 " + QString::number(percent) + "%";
+ if(!info.isEmpty()){
+ //Run Command
+ LUtils::runCmd(info);
+ }
+
}
//Change the current volume a set amount (+ or -)
void LOS::changeAudioVolume(int percentdiff){
- //not implemented yet for Linux
+ int old_volume = audioVolume();
+ int new_volume = old_volume + percentdiff;
+ if (new_volume < 0)
+ new_volume = 0;
+ if (new_volume > 100)
+ new_volume = 100;
+ qDebug() << "Setting new volume to: " << new_volume;
+ setAudioVolume(new_volume);
}
//Check if a graphical audio mixer is installed
diff --git a/libLumina/libLumina.pro b/libLumina/libLumina.pro
index fcf84980..9de16637 100644
--- a/libLumina/libLumina.pro
+++ b/libLumina/libLumina.pro
@@ -20,6 +20,7 @@ SOURCES += LuminaXDG.cpp \
LuminaX11.cpp \
LuminaOS-FreeBSD.cpp \
LuminaOS-Linux.cpp
+# new OS support can be added here
INCLUDEPATH += /usr/local/include
bgstack15