//=========================================== // Lumina-DE source code // Copyright (c) 2016, Ken Moore // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== #include "ScreenSettings.h" #include #include #include //Reset current screen config to match previously-saved settings void RRSettings::ApplyPrevious(){ QSettings set("lumina-desktop","lumina-xconfig"); set.beginGroup("MonitorSettings"); //Setup a couple lists QStringList devs = set.childGroups(); //known/saved devices QList screens = RRSettings::CurrentScreens(); QStringList lastactive = set.value("lastActive",QStringList()).toStringList(); //Now go through all the saved settings and put that info into the array QString primary; QStringList avail; for(int i=0; i RRSettings::CurrentScreens(){ QList SCREENS; QStringList info = LUtils::getCmdOutput("xrandr -q"); ScreenInfo cscreen; for(int i=0; ix++" cscreen.geom.setRect( devres.section("+",-2,-2).toInt(), devres.section("+",-1,-1).toInt(), devres.section("x",0,0).toInt(), devres.section("+",0,0).section("x",1,1).toInt() ); cscreen.isavailable = true; cscreen.isactive = true; if(devrotate=="left"){ cscreen.rotation = -90; } else if(devrotate=="right"){ cscreen.rotation = 90; } else if(devrotate=="inverted"){ cscreen.rotation = 180; } else{ cscreen.rotation = 0; } }else if(info[i].contains(" connected")){ //Device that is connected, but not attached //qDebug() << "Create new Screen entry:" << dev << "none"; cscreen.ID = dev; //cscreen.order = -2; //flag this right now as a non-active screen cscreen.isavailable = true; cscreen.isactive = false; } }else if( !cscreen.ID.isEmpty() && info[i].section("\t",0,0,QString::SectionSkipEmpty).contains("x")){ //available resolution for a device cscreen.resList << info[i].section("\t",0,0,QString::SectionSkipEmpty); } } //end loop over primary info lines if(!cscreen.ID.isEmpty()){ SCREENS << cscreen; } //make sure to add the last screen to the array return SCREENS; } //Save the screen config for later bool RRSettings::SaveScreens(QList screens){ QSettings set("lumina-desktop","lumina-xconfig"); set.beginGroup("MonitorSettings"); //Setup a couple lists QStringList olddevs = set.childGroups(); QStringList active; //Now go through all the current screens and save that info for(int i=0; i screens){ //Read all the settings and create the xrandr options to maintain these settings QStringList opts; //qDebug() << "Apply:" << screens.length(); for(int i=0; i