aboutsummaryrefslogtreecommitdiff
path: root/libLumina
diff options
context:
space:
mode:
Diffstat (limited to 'libLumina')
-rw-r--r--libLumina/LuminaOS-Linux.cpp36
1 files changed, 29 insertions, 7 deletions
diff --git a/libLumina/LuminaOS-Linux.cpp b/libLumina/LuminaOS-Linux.cpp
index ce5b8240..60fb35fe 100644
--- a/libLumina/LuminaOS-Linux.cpp
+++ b/libLumina/LuminaOS-Linux.cpp
@@ -42,7 +42,7 @@ void LOS::setScreenBrightness(int percent){
else if(percent>100){ percent=100; }
// float pf = percent/100.0; //convert to a decimel
//Run the command
- QString cmd = "xbacklight -set %1";
+ QString cmd = "xbacklight -set %1";
// cmd = cmd.arg( QString::number( int(65535*pf) ) );
cmd = cmd.arg( QString::number( percent ) );
int ret = LUtils::runCmd(cmd);
@@ -61,8 +61,9 @@ QString info = LUtils::getCmdOutput("amixer get Master").join("").simplified();;
QString current_volume;
if(!info.isEmpty()){
start_position = info.indexOf("[");
+ start_position++;
end_position = info.indexOf("%");
- current_volume = info.mid(start_position + 1, (end_position - start_position) - 1);
+ current_volume = info.mid(start_position, end_position - start_position);
out = current_volume.toInt();
}
return out;
@@ -96,12 +97,12 @@ void LOS::changeAudioVolume(int percentdiff){
//Check if a graphical audio mixer is installed
bool LOS::hasMixerUtility(){
- return false; //not implemented yet for Linux
+ return QFile::exists("/usr/bin/pavucontrol");
}
//Launch the graphical audio mixer utility
void LOS::startMixerUtility(){
- //not implemented yet for Linux
+ QProcess::startDetached("/usr/bin/pavucontrol");
}
//System Shutdown
@@ -116,17 +117,38 @@ void LOS::systemRestart(){ //start reboot sequence
//Battery Availability
bool LOS::hasBattery(){
- return false; //not implemented yet for Linux
+ QString my_status = LUtils::getCmdOutput("acpi -b").join("");
+ bool no_battery = my_status.contains("No support");
+ if (no_battery) return false;
+ return true;
}
//Battery Charge Level
int LOS::batteryCharge(){ //Returns: percent charge (0-100), anything outside that range is counted as an error
- return -1; //not implemented yet for Linux
+ QString my_status = LUtils::getCmdOutput("acpi -b").join("");
+ int my_start = my_status.indexOf("%");
+ // get the number right before the % sign
+ int my_end = my_start;
+ my_start--;
+ while ( (my_status[my_start] != ' ') && (my_start > 0) )
+ my_start--;
+ my_start++;
+ int my_charge = my_status.mid(my_start, my_end - my_start).toInt();
+ if ( (my_charge < 0) || (my_charge > 100) ) return -1;
+ return my_charge;
}
//Battery Charging State
+// Many possible values are returned if the laptop is plugged in
+// these include "Unknown, Full and No support.
+// However, it seems just one status is returned when running
+// on battery and that is "Discharging". So if the value we get
+// is NOT Discharging then we assume the batter yis charging.
bool LOS::batteryIsCharging(){
- return false; //not implemented yet for Linux
+ QString my_status = LUtils::getCmdOutput("acpi -b").join("");
+ bool discharging = my_status.contains("Discharging");
+ if (discharging) return false;
+ return true;
}
//Battery Time Remaining
bgstack15