aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Smith <jessefrgsmith@yahoo.ca>2014-09-07 22:42:55 -0300
committerJesse Smith <jessefrgsmith@yahoo.ca>2014-09-07 22:42:55 -0300
commit664d066d07b262205f860b039b78371718e4c6bb (patch)
tree7f9414bba3a737d3dbfbc1419ea31062ceb40c09
parentAdded audio volume control to Linux. Added initial code for changing screen b... (diff)
downloadlumina-664d066d07b262205f860b039b78371718e4c6bb.tar.gz
lumina-664d066d07b262205f860b039b78371718e4c6bb.tar.bz2
lumina-664d066d07b262205f860b039b78371718e4c6bb.zip
The following features have been added to the Linux port:
Added battery level detection and AC/battery detection. Added detached audio mixer. Confirmed screen brightness adjustment works. Also cleaned up DEPENDENIES file, separating FreeBSD and Linux requirements. Both sections of the file now include full package/port names of dependencies on both operating systems to make it easy to get all build requirements, runtime requirements and optional components.
-rw-r--r--DEPENDENCIES73
-rw-r--r--libLumina/LuminaOS-Linux.cpp36
2 files changed, 81 insertions, 28 deletions
diff --git a/DEPENDENCIES b/DEPENDENCIES
index 0b3c7cf2..867b129a 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -1,36 +1,67 @@
-#List of known dependencies for the Lumina Desktop (and associated utilities)
-# FreeBSD port is listed in parentheses after the dependency whenever possible
+# List of known dependencies for the Lumina Desktop (and associated utilities)
+# FreeBSD port is listed in parentheses after the dependency whenever possible
+# Linux packages are listed by name as they appear in Debian, Ubuntu and Mint
+
+=== FreeBSD Requirements ===
+
+Runtime dependencies:
-=== RUNTIME ONLY ===
fluxbox (x11-wm/fluxbox)
fluxbox styles pack? (x11-themes/fluxbox-tenr-styles-pack)
oxygen icon theme (x11-themes/kde4-icons-oxygen)
xscreensaver & xscreensaver-demo (x11/xscreensaver)
numlockx (x11/numlockx)
- == FreeBSD (libLumina/LuminaOS-FreeBSD.cpp) ==
- shutdown (/sbin/shutdown - built in) (System restart/poweroff)
- mount (/sbin/mount - built in) (Device Availability)
- apm (/usr/sbin/apm - built in) (Advanced Power Management utility)
- mixer (/usr/sbin/mixer - built in) (Audio System Mixer)
- xbrightness (x11/xbrightness) (Screen Brightness Control)
+shutdown (/sbin/shutdown - built in) (System restart/poweroff)
+mount (/sbin/mount - built in) (Device Availability)
+apm (/usr/sbin/apm - built in) (Advanced Power Management utility)
+mixer (/usr/sbin/mixer - built in) (Audio System Mixer)
+xbrightness (x11/xbrightness) (Screen Brightness Control)
+
+
+Build time dependencies:
+Qt 4.8+
+ qt4-core (devel/qt4-corelib))
+ qt4-gui (x11-toolkits/qt4-gui)
+ qmake-qt4 (devel/qmake4)
+ qt4-network (net/qt4-network)
+ qt4-linguist (devel/qt4-linguist)
+ qt4-svg (graphics/qt4-svg)
+ qt4-uiv (devel/qt4-uic)
+ qt4-moc (devel/qt4-moc)
+ qt4-rcc (devel/qt4-rcc)
+ devel/qt4-qtsolutions-singleapplication
- == Linux ==
- (Debian/Ubuntu/Mint packages required)
+X.org and XLib with extensions:
+ Xrender (x11/libXrender)
+ Xcomposite (x11/libXcomposite)
+ Xdamage (x11/libXdamage)
+
+
+
+=== Linux Requirements ===
+ These packages are required for building Lumina on Linux
+ g++ (or clang, either compiler should work)
qt4-qmake
libqt4-core
+ libqt4-dev
+ libqt4-dev-bin
libqt4-gui
libqt4-network
libqt4-svg
+ libphonon-dev
libxcomposite-dev
+ libxdamage-dev
+ libxrender-dev
+
+ These packages are required for running Lumina on Linux
+ fluxbox
+ kde-style-oxygen
+ xscreensaver
- Optional Debian/Ubuntu/Mint packages
- xbacklight (required for changing screen brightness)
-
-=== BUILD & RUN ===
-Qt 4.8+ (modules: core, gui, network, linguist, svg)
- also includes: (qt4-qmake, qt4-uic, qt4-moc, qt4-rcc)
- + devel/qt4-qtsolutions-singleapplication
-
-X.org and XLib
- With extensions: Xrender, Xcomposite, Xdamage
+ Optional packages
+ xbacklight (required for changing screen brightness)
+ alsa-utils (required for adjusting audio volume)
+ acpi (required for monitoring battery life)
+ numlockx (required for changign state of numlock at login)
+ pavucontrol (required for detatched audio mixer)
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