aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/libLumina
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2016-11-07 14:21:08 -0500
committerKen Moore <ken@ixsystems.com>2016-11-07 14:21:08 -0500
commit1fa6c08c45c07da3d1c0d369d58db31ef8fb9361 (patch)
treecd9e82fc2de32664da482ecce71c0c0f70ebecf6 /src-qt5/core/libLumina
parentFix up the pkg-plist for the new libLumina depreciation. (diff)
parentMerge branch 'master' of github.com:trueos/lumina (diff)
downloadlumina-1fa6c08c45c07da3d1c0d369d58db31ef8fb9361.tar.gz
lumina-1fa6c08c45c07da3d1c0d369d58db31ef8fb9361.tar.bz2
lumina-1fa6c08c45c07da3d1c0d369d58db31ef8fb9361.zip
Merge branch 'master' of github.com:trueos/lumina
Diffstat (limited to 'src-qt5/core/libLumina')
-rw-r--r--src-qt5/core/libLumina/LDesktopUtils.cpp (renamed from src-qt5/core/libLumina/LuminaUtils.cpp)591
-rw-r--r--src-qt5/core/libLumina/LDesktopUtils.h49
-rw-r--r--src-qt5/core/libLumina/LDesktopUtils.pri7
-rw-r--r--src-qt5/core/libLumina/LUtils.cpp436
-rw-r--r--src-qt5/core/libLumina/LUtils.h (renamed from src-qt5/core/libLumina/LuminaUtils.h)75
-rw-r--r--src-qt5/core/libLumina/LUtils.pri34
-rw-r--r--src-qt5/core/libLumina/LuminaOS.h4
-rw-r--r--src-qt5/core/libLumina/LuminaSingleApplication.h2
-rw-r--r--src-qt5/core/libLumina/LuminaSingleApplication.pri12
-rw-r--r--src-qt5/core/libLumina/LuminaThemes.cpp2
-rw-r--r--src-qt5/core/libLumina/LuminaThemes.pri10
-rw-r--r--src-qt5/core/libLumina/LuminaX11.pri13
-rw-r--r--src-qt5/core/libLumina/LuminaXDG.cpp2
-rw-r--r--src-qt5/core/libLumina/LuminaXDG.pri10
-rw-r--r--src-qt5/core/libLumina/colors/Black.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Blue-Light.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Grey-Dark.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Lumina-Glass.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Lumina-Gold.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Lumina-Green.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Lumina-Purple.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Lumina-Red.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/PCBSD10-Default.qss.colors13
-rw-r--r--src-qt5/core/libLumina/colors/Solarized-Dark.qss.colors16
-rw-r--r--src-qt5/core/libLumina/colors/Solarized-Light.qss.colors16
-rw-r--r--src-qt5/core/libLumina/libLumina.pro86
-rw-r--r--src-qt5/core/libLumina/quickplugins/quick-sample.qml12
-rw-r--r--src-qt5/core/libLumina/themes/Glass.qss.template539
-rw-r--r--src-qt5/core/libLumina/themes/Lumina-default.qss.template494
-rw-r--r--src-qt5/core/libLumina/themes/None.qss.template118
-rw-r--r--src-qt5/core/libLumina/xtrafiles/globs2991
31 files changed, 669 insertions, 2967 deletions
diff --git a/src-qt5/core/libLumina/LuminaUtils.cpp b/src-qt5/core/libLumina/LDesktopUtils.cpp
index 0d808d1d..4f8d94ef 100644
--- a/src-qt5/core/libLumina/LuminaUtils.cpp
+++ b/src-qt5/core/libLumina/LDesktopUtils.cpp
@@ -1,59 +1,20 @@
//===========================================
// Lumina-DE source code
-// Copyright (c) 2013-2015, Ken Moore
+// Copyright (c) 2012-2016, Ken Moore
// Available under the 3-clause BSD license
// See the LICENSE file for full details
//===========================================
-#include "LuminaUtils.h"
+#include "LDesktopUtils.h"
-#include <QString>
-#include <QFile>
-#include <QStringList>
-#include <QObject>
-#include <QTextCodec>
-#include <QDebug>
#include <QDesktopWidget>
-#include <QImageReader>
-#include <QRegExp>
-#include <QFuture>
-#include <QtConcurrent>
+#include <QApplication>
#include <QScreen>
-#include <LuminaOS.h>
-#include <LuminaThemes.h>
-#include <LuminaXDG.h>
+#include "LuminaThemes.h"
static QStringList fav;
-inline QStringList ProcessRun(QString cmd, QStringList args){
- //Assemble outputs
- QStringList out; out << "1" << ""; //error code, string output
- QProcess proc;
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert("LANG", "C");
- env.insert("LC_MESSAGES", "C");
- proc.setProcessEnvironment(env);
- proc.setProcessChannelMode(QProcess::MergedChannels);
- if(args.isEmpty()){
- proc.start(cmd, QIODevice::ReadOnly);
- }else{
- proc.start(cmd,args ,QIODevice::ReadOnly);
- }
- QString info;
- while(!proc.waitForFinished(1000)){
- if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
- QString tmp = proc.readAllStandardOutput();
- if(tmp.isEmpty()){ proc.terminate(); }
- else{ info.append(tmp); }
- }
- out[0] = QString::number(proc.exitCode());
- out[1] = info+QString(proc.readAllStandardOutput());
- return out;
-}
-//=============
-// LUtils Functions
-//=============
-QString LUtils::LuminaDesktopVersion(){
+QString LDesktopUtils::LuminaDesktopVersion(){
QString ver = "1.1.1";
#ifdef GIT_VERSION
ver.append( QString(" (Git Revision: %1)").arg(GIT_VERSION) );
@@ -61,394 +22,19 @@ QString LUtils::LuminaDesktopVersion(){
return ver;
}
-QString LUtils::LuminaDesktopBuildDate(){
+QString LDesktopUtils::LuminaDesktopBuildDate(){
#ifdef BUILD_DATE
return BUILD_DATE;
#endif
return "";
}
-int LUtils::runCmd(QString cmd, QStringList args){
- /*QProcess proc;
- proc.setProcessChannelMode(QProcess::MergedChannels);
- if(args.isEmpty()){
- proc.start(cmd);
- }else{
- proc.start(cmd, args);
- }
- //if(!proc.waitForStarted(30000)){ return 1; } //process never started - max wait of 30 seconds
- while(!proc.waitForFinished(300)){
- if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
- QCoreApplication::processEvents();
- }
- int ret = proc.exitCode();
- return ret;*/
- QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args);
- return future.result()[0].toInt(); //turn it back into an integer return code
-
-}
-
-QStringList LUtils::getCmdOutput(QString cmd, QStringList args){
- /*QProcess proc;
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert("LANG", "C");
- env.insert("LC_MESSAGES", "C");
- proc.setProcessEnvironment(env);
- proc.setProcessChannelMode(QProcess::MergedChannels);
- if(args.isEmpty()){
- proc.start(cmd);
- }else{
- proc.start(cmd,args);
- }
- //if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds
- while(!proc.waitForFinished(300)){
- if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
- QCoreApplication::processEvents();
- }
- QStringList out = QString(proc.readAllStandardOutput()).split("\n");
- return out;*/
- QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args);
- return future.result()[1].split("\n"); //Split the return message into lines
-}
-
-QStringList LUtils::readFile(QString filepath){
- QStringList out;
- QFile file(filepath);
- if(file.open(QIODevice::Text | QIODevice::ReadOnly)){
- QTextStream in(&file);
- while(!in.atEnd()){
- out << in.readLine();
- }
- file.close();
- }
- return out;
-}
-
-bool LUtils::writeFile(QString filepath, QStringList contents, bool overwrite){
- QFile file(filepath);
- if(file.exists() && !overwrite){ return false; }
- bool ok = false;
- if(contents.isEmpty()){ contents << "\n"; }
- if( file.open(QIODevice::WriteOnly | QIODevice::Truncate) ){
- QTextStream out(&file);
- out << contents.join("\n");
- if(!contents.last().isEmpty()){ out << "\n"; } //always end with a new line
- file.close();
- ok = true;
- }
- return ok;
-}
-
-bool LUtils::isValidBinary(QString& bin){
- if(!bin.startsWith("/")){
- //Relative path: search for it on the current "PATH" settings
- QStringList paths = QString(qgetenv("PATH")).split(":");
- for(int i=0; i<paths.length(); i++){
- if(QFile::exists(paths[i]+"/"+bin)){ bin = paths[i]+"/"+bin; break;}
- }
- }
- //bin should be the full path by now
- if(!bin.startsWith("/")){ return false; }
- QFileInfo info(bin);
- bool good = (info.exists() && info.isExecutable());
- if(good){ bin = info.absoluteFilePath(); }
- return good;
-}
-
-QString LUtils::GenerateOpenTerminalExec(QString term, QString dirpath){
- //Check the input terminal application (default/fallback - determined by calling application)
- //if(!LUtils::isValidBinary(term)){
- if(term.endsWith(".desktop")){
- //Pull the binary name out of the shortcut
- XDGDesktop DF(term);
- if(DF.type == XDGDesktop::BAD){ term = "xterm"; }
- else{ term= DF.exec.section(" ",0,0); } //only take the binary name - not any other flags
- }else{
- term = "xterm"; //fallback
- }
- //}
- //Now create the calling command for the designated terminal
- // NOTE: While the "-e" routine is supposed to be universal, many terminals do not properly use it
- // so add some special/known terminals here as necessary
- QString exec;
- qWarning() << " - Reached terminal initialization" << term;
- if(term=="mate-terminal" || term=="lxterminal" || term=="gnome-terminal"){
- exec = term+" --working-directory=\""+dirpath+"\"";
- }else if(term=="xfce4-terminal"){
- exec = term+" --default-working-directory=\""+dirpath+"\"";
- }else if(term=="konsole" || term == "qterminal"){
- exec = term+" --workdir \""+dirpath+"\"";
- }else{
- //-e is the parameter for most of the terminal appliction to execute an external command.
- //In this case we start a shell in the selected directory
- //Need the user's shell first
- QString shell = QString(getenv("SHELL"));
- if(!LUtils::isValidBinary(shell)){ shell = "/bin/sh"; } //universal fallback for a shell
- exec = term + " -e \"cd " + dirpath + " && " + shell + " \" ";
- }
- qDebug() << exec;
- return exec;
-}
-
-QStringList LUtils::listSubDirectories(QString dir, bool recursive){
- //This is a recursive method for returning the full paths of all subdirectories (if recursive flag is enabled)
- QDir maindir(dir);
- QStringList out;
- QStringList subs = maindir.entryList(QDir::NoDotAndDotDot | QDir::Dirs, QDir::Name);
- for(int i=0; i<subs.length(); i++){
- out << maindir.absoluteFilePath(subs[i]);
- if(recursive){
- out << LUtils::listSubDirectories(maindir.absoluteFilePath(subs[i]), recursive);
- }
- }
- return out;
-}
-
-QString LUtils::PathToAbsolute(QString path){
- //Convert an input path to an absolute path (this does not check existance ot anything)
- if(path.startsWith("/")){ return path; } //already an absolute path
- if(path.startsWith("~")){ path.replace(0,1,QDir::homePath()); }
- if(!path.startsWith("/")){
- //Must be a relative path
- if(path.startsWith("./")){ path = path.remove(2); }
- path.prepend( QDir::currentPath()+"/");
- }
- return path;
-}
-
-QString LUtils::AppToAbsolute(QString path){
- if(path.startsWith("~/")){ path = path.replace("~/", QDir::homePath()+"/" ); }
- if(path.startsWith("/") || QFile::exists(path)){ return path; }
- if(path.endsWith(".desktop")){
- //Look in the XDG dirs
- QStringList dirs = LXDG::systemApplicationDirs();
- for(int i=0; i<dirs.length(); i++){
- if(QFile::exists(dirs[i]+"/"+path)){ return (dirs[i]+"/"+path); }
- }
- }else{
- //Look on $PATH for the binary
- QStringList paths = QString(getenv("PATH")).split(":");
- for(int i=0; i<paths.length(); i++){
- if(QFile::exists(paths[i]+"/"+path)){ return (paths[i]+"/"+path); }
- }
- }
- return path;
-}
-
-QStringList LUtils::imageExtensions(bool wildcards){
- //Note that all the image extensions are lowercase!!
- static QStringList imgExtensions;
- if(imgExtensions.isEmpty()){
- QList<QByteArray> fmt = QImageReader::supportedImageFormats();
- for(int i=0; i<fmt.length(); i++){
- if(wildcards){ imgExtensions << "*."+QString::fromLocal8Bit(fmt[i]); }
- else{ imgExtensions << QString::fromLocal8Bit(fmt[i]); }
- }
- }
- return imgExtensions;
-}
-
- QTranslator* LUtils::LoadTranslation(QApplication *app, QString appname, QString locale, QTranslator *cTrans){
- //Get the current localization
- QString langEnc = "UTF-8"; //default value
- QString langCode = locale; //provided locale
- if(langCode.isEmpty()){ langCode = getenv("LC_ALL"); }
- if(langCode.isEmpty()){ langCode = getenv("LANG"); }
- if(langCode.isEmpty()){ langCode = "en_US.UTF-8"; } //default to US english
- //See if the encoding is included and strip it out as necessary
- if(langCode.contains(".")){
- langEnc = langCode.section(".",-1);
- langCode = langCode.section(".",0,0);
- }
- //Now verify the encoding for the locale
- if(langCode =="C" || langCode=="POSIX" || langCode.isEmpty()){
- langEnc = "System"; //use the Qt system encoding
- }
- if(app !=0){
- qDebug() << "Loading Locale:" << appname << langCode << langEnc;
- //If an existing translator was provided, remove it first (will be replaced)
- if(cTrans!=0){ app->removeTranslator(cTrans); }
- //Setup the translator
- cTrans = new QTranslator();
- //Use the shortened locale code if specific code does not have a corresponding file
- if(!QFile::exists(LOS::LuminaShare()+"i18n/"+appname+"_" + langCode + ".qm") && langCode!="en_US" ){
- langCode.truncate( langCode.indexOf("_") );
- }
- QString filename = appname+"_"+langCode+".qm";
- //qDebug() << "FileName:" << filename << "Dir:" << LOS::LuminaShare()+"i18n/";
- if( cTrans->load( filename, LOS::LuminaShare()+"i18n/" ) ){
- app->installTranslator( cTrans );
- }else{
- //Translator could not be loaded for some reason
- cTrans = 0;
- if(langCode!="en_US"){
- qWarning() << " - Could not load Locale:" << langCode;
- }
- }
- }else{
- //Only going to set the encoding since no application given
- qDebug() << "Loading System Encoding:" << langEnc;
- }
- //Load current encoding for this locale
- QTextCodec::setCodecForLocale( QTextCodec::codecForName(langEnc.toUtf8()) );
- return cTrans;
-}
-
-QStringList LUtils::knownLocales(){
- QDir i18n = QDir(LOS::LuminaShare()+"i18n");
- if( !i18n.exists() ){ return QStringList(); }
- QStringList files = i18n.entryList(QStringList() << "lumina-desktop_*.qm", QDir::Files, QDir::Name);
- if(files.isEmpty()){ return QStringList(); }
- //Now strip off the filename and just leave the locale tag
- for(int i=0; i<files.length(); i++){
- files[i].chop(3); //remove the ".qm" on the end
- files[i] = files[i].section("_",1,50).simplified();
- }
- files << "en_US"; //default locale
- files.sort();
- return files;
-}
-
-void LUtils::setLocaleEnv(QString lang, QString msg, QString time, QString num,QString money,QString collate, QString ctype){
- //Adjust the current locale environment variables
- bool all = false;
- if(msg.isEmpty() && time.isEmpty() && num.isEmpty() && money.isEmpty() && collate.isEmpty() && ctype.isEmpty() ){
- if(lang.isEmpty()){ return; } //nothing to do - no changes requested
- all = true; //set everything to the "lang" value
- }
- //If no lang given, but others are given, then use the current setting
- if(lang.isEmpty()){ lang = getenv("LC_ALL"); }
- if(lang.isEmpty()){ lang = getenv("LANG"); }
- if(lang.isEmpty()){ lang = "en_US"; }
- //Now go through and set/unset the environment variables
- // - LANG & LC_ALL
- if(!lang.contains(".")){ lang.append(".UTF-8"); }
- setenv("LANG",lang.toUtf8() ,1); //overwrite setting (this is always required as the fallback)
- if(all){ setenv("LC_ALL",lang.toUtf8() ,1); }
- else{ unsetenv("LC_ALL"); } //make sure the custom settings are used
- // - LC_MESSAGES
- if(msg.isEmpty()){ unsetenv("LC_MESSAGES"); }
- else{
- if(!msg.contains(".")){ msg.append(".UTF-8"); }
- setenv("LC_MESSAGES",msg.toUtf8(),1);
- }
- // - LC_TIME
- if(time.isEmpty()){ unsetenv("LC_TIME"); }
- else{
- if(!time.contains(".")){ time.append(".UTF-8"); }
- setenv("LC_TIME",time.toUtf8(),1);
- }
- // - LC_NUMERIC
- if(num.isEmpty()){ unsetenv("LC_NUMERIC"); }
- else{
- if(!num.contains(".")){ num.append(".UTF-8"); }
- setenv("LC_NUMERIC",num.toUtf8(),1);
- }
- // - LC_MONETARY
- if(money.isEmpty()){ unsetenv("LC_MONETARY"); }
- else{
- if(!money.contains(".")){ money.append(".UTF-8"); }
- setenv("LC_MONETARY",money.toUtf8(),1);
- }
- // - LC_COLLATE
- if(collate.isEmpty()){ unsetenv("LC_COLLATE"); }
- else{
- if(!collate.contains(".")){ collate.append(".UTF-8"); }
- setenv("LC_COLLATE",collate.toUtf8(),1);
- }
- // - LC_CTYPE
- if(ctype.isEmpty()){ unsetenv("LC_CTYPE"); }
- else{
- if(!ctype.contains(".")){ ctype.append(".UTF-8"); }
- setenv("LC_CTYPE",ctype.toUtf8(),1);
- }
-}
-
-QString LUtils::currentLocale(){
- QString curr = getenv("LC_ALL");// = QLocale::system();
- if(curr.isEmpty()){ curr = getenv("LANG"); }
- if(curr.isEmpty()){ curr = "en_US"; }
- curr = curr.section(".",0,0); //remove any encodings off the end
- return curr;
-}
-
-double LUtils::DisplaySizeToBytes(QString num){
- //qDebug() << "Convert Num to Bytes:" << num;
- num = num.toLower().simplified();
- num = num.remove(" ");
- if(num.isEmpty()){ return 0.0; }
- if(num.endsWith("b")){ num.chop(1); } //remove the "bytes" marker (if there is one)
- QString lab = "b";
- if(!num[num.size()-1].isNumber()){
- lab = num.right(1); num.chop(1);
- }
- double N = num.toDouble();
- QStringList labs; labs <<"b"<<"k"<<"m"<<"g"<<"t"<<"p"; //go up to petabytes for now
- for(int i=0; i<labs.length(); i++){
- if(lab==labs[i]){ break; }//already at the right units - break out
- N = N*1024.0; //Move to the next unit of measurement
- }
- //qDebug() << " - Done:" << QString::number(N) << lab << num;
- return N;
-}
-
-QString LUtils::BytesToDisplaySize(qint64 ibytes){
- static QStringList labs = QStringList();
- if(labs.isEmpty()){ labs << "B" << "K" << "M" << "G" << "T" << "P"; }
- //Now get the dominant unit
- int c=0;
- double bytes = ibytes; //need to keep decimel places for calculations
- while(bytes>=1000 && c<labs.length() ){
- bytes = bytes/1024;
- c++;
- } //labs[c] is the unit
- //Bytes are now
- //Now format the number (up to 3 digits, not including decimel places)
- QString num;
- if(bytes>=100){
- //No decimel places
- num = QString::number(qRound(bytes));
- }else if(bytes>=10){
- //need 1 decimel place
- num = QString::number( (qRound(bytes*10)/10.0) );
- }else if(bytes>=1){
- //need 2 decimel places
- num = QString::number( (qRound(bytes*100)/100.0) );
- }else{
- //Fully decimel (3 places)
- num = "0."+QString::number(qRound(bytes*1000));
- }
- //qDebug() << "Bytes to Human-readable:" << bytes << c << num << labs[c];
- return (num+labs[c]);
-}
-
-QString LUtils::SecondsToDisplay(int secs){
- if(secs < 0){ return "??"; }
- QString rem; //remaining
- if(secs > 3600){
- int hours = secs/3600;
- rem.append( QString::number(hours)+"h ");
- secs = secs - (hours*3600);
- }
- if(secs > 60){
- int min = secs/60;
- rem.append( QString::number(min)+"m ");
- secs = secs - (min*60);
- }
- if(secs > 0){
- rem.append( QString::number(secs)+"s");
- }else{
- rem.append( "0s" );
- }
- return rem;
-}
-
//Various function for finding valid QtQuick plugins on the system
-bool LUtils::validQuickPlugin(QString ID){
- return ( !LUtils::findQuickPluginFile(ID).isEmpty() );
+bool LDesktopUtils::validQuickPlugin(QString ID){
+ return ( !LDesktopUtils::findQuickPluginFile(ID).isEmpty() );
}
-QString LUtils::findQuickPluginFile(QString ID){
+QString LDesktopUtils::findQuickPluginFile(QString ID){
if(ID.startsWith("quick-")){ ID = ID.section("-",1,50); } //just in case
//Give preference to any user-supplied plugins (overwrites for system plugins)
QString path = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/quickplugins/quick-"+ID+".qml";
@@ -458,7 +44,7 @@ QString LUtils::findQuickPluginFile(QString ID){
return ""; //could not be found
}
-QStringList LUtils::listQuickPlugins(){
+QStringList LDesktopUtils::listQuickPlugins(){
QDir dir(QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/quickplugins");
QStringList files = dir.entryList(QStringList() << "quick-*.qml", QDir::Files | QDir::NoDotAndDotDot, QDir::Name);
dir.cd(LOS::LuminaShare()+"quickplugins");
@@ -471,7 +57,7 @@ QStringList LUtils::listQuickPlugins(){
return files;
}
-QStringList LUtils::infoQuickPlugin(QString ID){ //Returns: [Name, Description, Icon]
+QStringList LDesktopUtils::infoQuickPlugin(QString ID){ //Returns: [Name, Description, Icon]
//qDebug() << "Find Quick Info:" << ID;
QString path = findQuickPluginFile(ID);
//qDebug() << " - path:" << path;
@@ -492,7 +78,7 @@ QStringList LUtils::infoQuickPlugin(QString ID){ //Returns: [Name, Description,
return info;
}
-QStringList LUtils::listFavorites(){
+QStringList LDesktopUtils::listFavorites(){
static QDateTime lastRead;
QDateTime cur = QDateTime::currentDateTime();
if(lastRead.isNull() || lastRead<QFileInfo( QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/favorites.list").lastModified()){
@@ -505,22 +91,22 @@ QStringList LUtils::listFavorites(){
return fav;
}
-bool LUtils::saveFavorites(QStringList list){
+bool LDesktopUtils::saveFavorites(QStringList list){
list.removeDuplicates();
bool ok = LUtils::writeFile(QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/favorites.list", list, true);
if(ok){ fav = list; } //also save internally in case of rapid write/read of the file
return ok;
}
-bool LUtils::isFavorite(QString path){
- QStringList fav = LUtils::listFavorites();
+bool LDesktopUtils::isFavorite(QString path){
+ QStringList fav = LDesktopUtils::listFavorites();
for(int i=0; i<fav.length(); i++){
if(fav[i].endsWith("::::"+path)){ return true; }
}
return false;
}
-bool LUtils::addFavorite(QString path, QString name){
+bool LDesktopUtils::addFavorite(QString path, QString name){
//Generate the type of favorite this is
QFileInfo info(path);
QString type;
@@ -530,30 +116,30 @@ bool LUtils::addFavorite(QString path, QString name){
//Assign a name if none given
if(name.isEmpty()){ name = info.fileName(); }
//Now add it to the list
- QStringList favs = LUtils::listFavorites();
+ QStringList favs = LDesktopUtils::listFavorites();
bool found = false;
for(int i=0; i<favs.length(); i++){
if(favs[i].endsWith("::::"+path)){ favs[i] = name+"::::"+type+"::::"+path; }
}
if(!found){ favs << name+"::::"+type+"::::"+path; }
- return LUtils::saveFavorites(favs);
+ return LDesktopUtils::saveFavorites(favs);
}
-void LUtils::removeFavorite(QString path){
- QStringList fav = LUtils::listFavorites();
+void LDesktopUtils::removeFavorite(QString path){
+ QStringList fav = LDesktopUtils::listFavorites();
bool changed = false;
for(int i=0; i<fav.length(); i++){
if(fav[i].endsWith("::::"+path)){ fav.removeAt(i); i--; changed=true;}
}
- if(changed){ LUtils::saveFavorites(fav); }
+ if(changed){ LDesktopUtils::saveFavorites(fav); }
}
-void LUtils::upgradeFavorites(int fromoldversionnumber){
+void LDesktopUtils::upgradeFavorites(int fromoldversionnumber){
/*if(fromoldversionnumber <= 8004){ // < pre-0.8.4>, sym-links in the ~/.lumina/favorites dir}
//Include 0.8.4-devel versions in this upgrade (need to distinguish b/w devel and release versions later somehow)
QDir favdir(QDir::homePath()+"/.lumina/favorites");
QFileInfoList symlinks = favdir.entryInfoList(QDir::Files | QDir::Dirs | QDir::System | QDir::NoDotAndDotDot);
- QStringList favfile = LUtils::listFavorites(); //just in case some already exist
+ QStringList favfile = LDesktopUtils::listFavorites(); //just in case some already exist
bool newentry = false;
for(int i=0; i<symlinks.length(); i++){
if(!symlinks[i].isSymLink()){ continue; } //not a symlink
@@ -570,13 +156,13 @@ void LUtils::upgradeFavorites(int fromoldversionnumber){
newentry = true;
}
if(newentry){
- LUtils::saveFavorites(favfile);
+ LDesktopUtils::saveFavorites(favfile);
}
}*/ //end check for version <= 0.8.4
}
-void LUtils::LoadSystemDefaults(bool skipOS){
+void LDesktopUtils::LoadSystemDefaults(bool skipOS){
//Will create the Lumina configuration files based on the current system template (if any)
qDebug() << "Loading System Defaults";
QStringList sysDefaults;
@@ -605,7 +191,7 @@ void LUtils::LoadSystemDefaults(bool skipOS){
QStringList tmp = sysDefaults.filter("session_");
if(tmp.isEmpty()){ tmp = sysDefaults.filter("session."); }//for backwards compat
sesset << "[General]"; //everything is in this section
- sesset << "DesktopVersion="+LUtils::LuminaDesktopVersion();
+ sesset << "DesktopVersion="+LDesktopUtils::LuminaDesktopVersion();
for(int i=0; i<tmp.length(); i++){
if(tmp[i].startsWith("#") || !tmp[i].contains("=") ){ continue; }
QString var = tmp[i].section("=",0,0).toLower().simplified();
@@ -616,7 +202,7 @@ void LUtils::LoadSystemDefaults(bool skipOS){
if(var.contains(".")){ var.replace(".","_"); }
//Now parse the variable and put the value in the proper file
- if(var.contains("_default_")){ val = AppToAbsolute(val); } //got an application/binary
+ if(var.contains("_default_")){ val = LUtils::AppToAbsolute(val); } //got an application/binary
//Special handling for values which need to exist first
if(var.endsWith("_ifexists") ){
var = var.remove("_ifexists"); //remove this flag from the variable
@@ -670,7 +256,7 @@ void LUtils::LoadSystemDefaults(bool skipOS){
//Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while
if(var.contains(".")){ var.replace(".","_"); }
//Now parse the variable and put the value in the proper file
- val = AppToAbsolute(val);
+ val = LUtils::AppToAbsolute(val);
//Special handling for values which need to exist first
if(var.endsWith("_ifexists") ){
var = var.remove("_ifexists"); //remove this flag from the variable
@@ -766,10 +352,10 @@ void LUtils::LoadSystemDefaults(bool skipOS){
if(var.contains(".")){ var.replace(".","_"); }
//Now parse the variable and put the value in the proper file
qDebug() << "Favorite entry:" << var << val;
- val = AppToAbsolute(val); //turn any relative files into absolute
- if(var=="favorites_add_ifexists" && QFile::exists(val)){ qDebug() << " - Exists/Adding:"; LUtils::addFavorite(val); }
- else if(var=="favorites_add"){ qDebug() << " - Adding:"; LUtils::addFavorite(val); }
- else if(var=="favorites_remove"){ qDebug() << " - Removing:"; LUtils::removeFavorite(val); }
+ val = LUtils::AppToAbsolute(val); //turn any relative files into absolute
+ if(var=="favorites_add_ifexists" && QFile::exists(val)){ qDebug() << " - Exists/Adding:"; LDesktopUtils::addFavorite(val); }
+ else if(var=="favorites_add"){ qDebug() << " - Adding:"; LDesktopUtils::addFavorite(val); }
+ else if(var=="favorites_remove"){ qDebug() << " - Removing:"; LDesktopUtils::removeFavorite(val); }
}
// -- QUICKLAUNCH --
@@ -783,7 +369,7 @@ void LUtils::LoadSystemDefaults(bool skipOS){
//Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while
if(var.contains(".")){ var.replace(".","_"); }
//Now parse the variable and put the value in the proper file
- val = AppToAbsolute(val); //turn any relative files into absolute
+ val = LUtils::AppToAbsolute(val); //turn any relative files into absolute
if(var=="quicklaunch_add_ifexists" && QFile::exists(val)){ quickL << val; }
else if(var=="quicklaunch_add"){ quickL << val; }
}
@@ -876,12 +462,12 @@ void LUtils::LoadSystemDefaults(bool skipOS){
}
-bool LUtils::checkUserFiles(QString lastversion){
+bool LDesktopUtils::checkUserFiles(QString lastversion){
//internal version conversion examples:
// [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001]
//returns true if something changed
- int oldversion = LUtils::VersionStringToNumber(lastversion);
- int nversion = LUtils::VersionStringToNumber(QApplication::applicationVersion());
+ int oldversion = LDesktopUtils::VersionStringToNumber(lastversion);
+ int nversion = LDesktopUtils::VersionStringToNumber(QApplication::applicationVersion());
bool newversion = ( oldversion < nversion ); //increasing version number
bool newrelease = ( lastversion.contains("-devel", Qt::CaseInsensitive) && QApplication::applicationVersion().contains("-release", Qt::CaseInsensitive) ); //Moving from devel to release
@@ -892,11 +478,11 @@ bool LUtils::checkUserFiles(QString lastversion){
if(!QFile::exists(dset) || oldversion < 5000){
if( oldversion < 100000 && nversion>=100000 ){ system("rm -rf ~/.lumina"); qDebug() << "Current desktop settings obsolete: Re-implementing defaults"; }
else{ firstrun = true; }
- LUtils::LoadSystemDefaults();
+ LDesktopUtils::LoadSystemDefaults();
}
//Convert the favorites framework as necessary (change occured with 0.8.4)
if(newversion || newrelease){
- LUtils::upgradeFavorites(oldversion);
+ LDesktopUtils::upgradeFavorites(oldversion);
}
//Convert from the old desktop numbering system to the new one (change occured with 1.0.1)
if(oldversion<=1000001){
@@ -949,7 +535,7 @@ bool LUtils::checkUserFiles(QString lastversion){
return (firstrun || newversion || newrelease);
}
-int LUtils::VersionStringToNumber(QString version){
+int LDesktopUtils::VersionStringToNumber(QString version){
version = version.section("-",0,0); //trim any extra labels off the end
int maj, mid, min; //major/middle/minor version numbers (<Major>.<Middle>.<Minor>)
maj = mid = min = 0;
@@ -962,102 +548,3 @@ int LUtils::VersionStringToNumber(QString version){
//NOTE: This format allows numbers to be anywhere from 0->999 without conflict
return (maj*1000000 + mid*1000 + min);
}
-
-// =======================
-// RESIZEMENU CLASS
-// =======================
-/*ResizeMenu::ResizeMenu(QWidget *parent) : QMenu(parent){
- this->setContentsMargins(1,1,1,1);
- this->setMouseTracking(true);
- resizeSide = NONE;
- cAct = new QWidgetAction(this);
- contents = 0;
- connect(this, SIGNAL(aboutToShow()), this, SLOT(clearFlags()) );
- connect(this, SIGNAL(aboutToHide()), this, SLOT(clearFlags()) );
- connect(cAct, SIGNAL(hovered()), this, SLOT(clearFlags()) );
-}
-
-ResizeMenu::~ResizeMenu(){
-
-}
-
-void ResizeMenu::setContents(QWidget *con){
- this->clear();
- cAct->setDefaultWidget(con);
- this->addAction(cAct);
- contents = con; //save for later
- contents->setCursor(Qt::ArrowCursor);
-}
-
-void ResizeMenu::mouseMoveEvent(QMouseEvent *ev){
- QRect geom = this->geometry();
- //Note: The exact position does not matter as much as the size
- // since the window will be moved again the next time it is shown
- // The "-2" in the sizing below accounts for the menu margins
- QPoint gpos = this->mapToGlobal(ev->pos());
- bool handled = false;
- switch(resizeSide){
- case TOP:
- if(gpos.y() >= geom.bottom()-1){ break; }
- geom.setTop(gpos.y());
- this->setGeometry(geom);
- if(contents!=0){ contents->setFixedSize(QSize(geom.width()-2, geom.height()-2));}
- handled = true;
- break;
- case BOTTOM:
- if(gpos.y() <= geom.top()+1){ break; }
- geom.setBottom( gpos.y());
- this->setGeometry(geom);
- if(contents!=0){ contents->setFixedSize(QSize(geom.width()-2, geom.height()-2));}
- handled = true;
- break;
- case LEFT:
- if(gpos.x() >= geom.right()-1){ break; }
- geom.setLeft(gpos.x());
- this->setGeometry(geom);
- if(contents!=0){ contents->setFixedSize(QSize(geom.width()-2, geom.height()-2));}
- handled = true;
- break;
- case RIGHT:
- if(gpos.x() <= geom.left()+1){ break; }
- geom.setRight(gpos.x());
- this->setGeometry(geom);
- if(contents!=0){ contents->setFixedSize(QSize(geom.width()-2, geom.height()-2));}
- handled = true;
- break;
- default: //NONE
- //qDebug() << " - Mouse At:" << ev->pos();
- //Just adjust the mouse cursor which is shown
- if(ev->pos().x()<=1 && ev->pos().x() >= -1){ this->setCursor(Qt::SizeHorCursor); }
- else if(ev->pos().x() >= this->width()-1 && ev->pos().x() <= this->width()+1){ this->setCursor(Qt::SizeHorCursor); }
- else if(ev->pos().y()<=1 && ev->pos().y() >= -1){ this->setCursor(Qt::SizeVerCursor); }
- else if(ev->pos().y() >= this->height()-1 && ev->pos().y() <= this->height()+1){ this->setCursor(Qt::SizeVerCursor); }
- else{ this->setCursor(Qt::ArrowCursor); }
- }
- if(!handled){ QMenu::mouseMoveEvent(ev); } //do normal processing as well
-}
-
-void ResizeMenu::mousePressEvent(QMouseEvent *ev){
- bool used = false;
- if(ev->buttons().testFlag(Qt::LeftButton) && resizeSide==NONE){
- //qDebug() << "Mouse Press Event:" << ev->pos() << resizeSide;
- if(ev->pos().x()<=1 && ev->pos().x() >= -1){resizeSide = LEFT; used = true;}
- else if(ev->pos().x() >= this->width()-1 && ev->pos().x() <= this->width()+1){ resizeSide = RIGHT; used = true;}
- else if(ev->pos().y()<=1 && ev->pos().y() >= -1){ resizeSide = TOP; used = true; }
- else if(ev->pos().y() >= this->height()-1 && ev->pos().y() <= this->height()+1){ resizeSide = BOTTOM; used = true; }
- }
- if(used){ ev->accept(); this->grabMouse(); }
- else{ QMenu::mousePressEvent(ev); } //do normal processing
-}
-
-void ResizeMenu::mouseReleaseEvent(QMouseEvent *ev){
- this->releaseMouse();
- if(ev->button() == Qt::LeftButton && resizeSide!=NONE ){
- //qDebug() << "Mouse Release Event:" << ev->pos() << resizeSide;
- resizeSide = NONE;
- emit MenuResized(contents->size());
- ev->accept();
- }else{
- QMenu::mouseReleaseEvent(ev); //do normal processing
- }
-}*/
diff --git a/src-qt5/core/libLumina/LDesktopUtils.h b/src-qt5/core/libLumina/LDesktopUtils.h
new file mode 100644
index 00000000..dbad8757
--- /dev/null
+++ b/src-qt5/core/libLumina/LDesktopUtils.h
@@ -0,0 +1,49 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2012-2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_LIBRARY_DESKTOP_UTILS_H
+#define _LUMINA_LIBRARY_DESKTOP_UTILS_H
+
+#include <QString>
+#include <QStringList>
+#include <QFile>
+#include <QDir>
+#include <QDateTime>
+
+//Other classes needed
+#include <LUtils.h>
+#include <LuminaXDG.h>
+#include <LuminaOS.h>
+
+class LDesktopUtils{
+public:
+ //Get the current version/build of the Lumina desktop
+ static QString LuminaDesktopVersion();
+ static QString LuminaDesktopBuildDate();
+
+ //Various function for finding valid QtQuick plugins on the system
+ static bool validQuickPlugin(QString ID);
+ static QString findQuickPluginFile(QString ID);
+ static QStringList listQuickPlugins(); //List of valid ID's
+ static QStringList infoQuickPlugin(QString ID); //Returns: [Name, Description, Icon]
+
+ //Various functions for the favorites sub-system
+ // Formatting Note: "<name>::::[dir/app/<mimetype>]::::<path>"
+ // the <name> field might not be used for "app" flagged entries
+ static QStringList listFavorites();
+ static bool saveFavorites(QStringList);
+ static bool isFavorite(QString path);
+ static bool addFavorite(QString path, QString name = "");
+ static void removeFavorite(QString path);
+ static void upgradeFavorites(int fromoldversionnumber);
+
+ //Load the default setup for the system
+ static void LoadSystemDefaults(bool skipOS = false);
+ static bool checkUserFiles(QString lastversion); //returns true if something changed
+ static int VersionStringToNumber(QString version); //convert the lumina version string to a number for comparisons
+};
+
+#endif
diff --git a/src-qt5/core/libLumina/LDesktopUtils.pri b/src-qt5/core/libLumina/LDesktopUtils.pri
new file mode 100644
index 00000000..80bbcfa8
--- /dev/null
+++ b/src-qt5/core/libLumina/LDesktopUtils.pri
@@ -0,0 +1,7 @@
+SOURCES *= $${PWD}/LDesktopUtils.cpp
+HEADERS *= $${PWD}/LDesktopUtils.h
+
+INCLUDEPATH *= ${PWD}
+
+#Now the other dependendies of it
+include(LUtils.pri)
diff --git a/src-qt5/core/libLumina/LUtils.cpp b/src-qt5/core/libLumina/LUtils.cpp
new file mode 100644
index 00000000..78831231
--- /dev/null
+++ b/src-qt5/core/libLumina/LUtils.cpp
@@ -0,0 +1,436 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2013-2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "LUtils.h"
+
+#include "LuminaOS.h"
+#include "LuminaXDG.h"
+
+#include <QApplication>
+#include <QtConcurrent>
+
+inline QStringList ProcessRun(QString cmd, QStringList args){
+ //Assemble outputs
+ QStringList out; out << "1" << ""; //error code, string output
+ QProcess proc;
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert("LANG", "C");
+ env.insert("LC_MESSAGES", "C");
+ proc.setProcessEnvironment(env);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ if(args.isEmpty()){
+ proc.start(cmd, QIODevice::ReadOnly);
+ }else{
+ proc.start(cmd,args ,QIODevice::ReadOnly);
+ }
+ QString info;
+ while(!proc.waitForFinished(1000)){
+ if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
+ QString tmp = proc.readAllStandardOutput();
+ if(tmp.isEmpty()){ proc.terminate(); }
+ else{ info.append(tmp); }
+ }
+ out[0] = QString::number(proc.exitCode());
+ out[1] = info+QString(proc.readAllStandardOutput());
+ return out;
+}
+//=============
+// LUtils Functions
+//=============
+int LUtils::runCmd(QString cmd, QStringList args){
+ /*QProcess proc;
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ if(args.isEmpty()){
+ proc.start(cmd);
+ }else{
+ proc.start(cmd, args);
+ }
+ //if(!proc.waitForStarted(30000)){ return 1; } //process never started - max wait of 30 seconds
+ while(!proc.waitForFinished(300)){
+ if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
+ QCoreApplication::processEvents();
+ }
+ int ret = proc.exitCode();
+ return ret;*/
+ QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args);
+ return future.result()[0].toInt(); //turn it back into an integer return code
+
+}
+
+QStringList LUtils::getCmdOutput(QString cmd, QStringList args){
+ /*QProcess proc;
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert("LANG", "C");
+ env.insert("LC_MESSAGES", "C");
+ proc.setProcessEnvironment(env);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ if(args.isEmpty()){
+ proc.start(cmd);
+ }else{
+ proc.start(cmd,args);
+ }
+ //if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds
+ while(!proc.waitForFinished(300)){
+ if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
+ QCoreApplication::processEvents();
+ }
+ QStringList out = QString(proc.readAllStandardOutput()).split("\n");
+ return out;*/
+ QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args);
+ return future.result()[1].split("\n"); //Split the return message into lines
+}
+
+QStringList LUtils::readFile(QString filepath){
+ QStringList out;
+ QFile file(filepath);
+ if(file.open(QIODevice::Text | QIODevice::ReadOnly)){
+ QTextStream in(&file);
+ while(!in.atEnd()){
+ out << in.readLine();
+ }
+ file.close();
+ }
+ return out;
+}
+
+bool LUtils::writeFile(QString filepath, QStringList contents, bool overwrite){
+ QFile file(filepath);
+ if(file.exists() && !overwrite){ return false; }
+ bool ok = false;
+ if(contents.isEmpty()){ contents << "\n"; }
+ if( file.open(QIODevice::WriteOnly | QIODevice::Truncate) ){
+ QTextStream out(&file);
+ out << contents.join("\n");
+ if(!contents.last().isEmpty()){ out << "\n"; } //always end with a new line
+ file.close();
+ ok = true;
+ }
+ return ok;
+}
+
+bool LUtils::isValidBinary(QString& bin){
+ if(!bin.startsWith("/")){
+ //Relative path: search for it on the current "PATH" settings
+ QStringList paths = QString(qgetenv("PATH")).split(":");
+ for(int i=0; i<paths.length(); i++){
+ if(QFile::exists(paths[i]+"/"+bin)){ bin = paths[i]+"/"+bin; break;}
+ }
+ }
+ //bin should be the full path by now
+ if(!bin.startsWith("/")){ return false; }
+ QFileInfo info(bin);
+ bool good = (info.exists() && info.isExecutable());
+ if(good){ bin = info.absoluteFilePath(); }
+ return good;
+}
+
+QStringList LUtils::systemApplicationDirs(){
+ //Returns a list of all the directories where *.desktop files can be found
+ QStringList appDirs = QString(getenv("XDG_DATA_HOME")).split(":");
+ appDirs << QString(getenv("XDG_DATA_DIRS")).split(":");
+ if(appDirs.isEmpty()){ appDirs << "/usr/local/share" << "/usr/share" << LOS::AppPrefix()+"/share" << LOS::SysPrefix()+"/share" << L_SHAREDIR; }
+ appDirs.removeDuplicates();
+ //Now create a valid list
+ QStringList out;
+ for(int i=0; i<appDirs.length(); i++){
+ if( QFile::exists(appDirs[i]+"/applications") ){
+ out << appDirs[i]+"/applications";
+ //Also check any subdirs within this directory
+ // (looking at you KDE - stick to the standards!!)
+ out << LUtils::listSubDirectories(appDirs[i]+"/applications");
+ }
+ }
+ //qDebug() << "System Application Dirs:" << out;
+ return out;
+}
+
+QString LUtils::GenerateOpenTerminalExec(QString term, QString dirpath){
+ //Check the input terminal application (default/fallback - determined by calling application)
+ //if(!LUtils::isValidBinary(term)){
+ if(term.endsWith(".desktop")){
+ //Pull the binary name out of the shortcut
+ XDGDesktop DF(term);
+ if(DF.type == XDGDesktop::BAD){ term = "xterm"; }
+ else{ term= DF.exec.section(" ",0,0); } //only take the binary name - not any other flags
+ }else{
+ term = "xterm"; //fallback
+ }
+ //}
+ //Now create the calling command for the designated terminal
+ // NOTE: While the "-e" routine is supposed to be universal, many terminals do not properly use it
+ // so add some special/known terminals here as necessary
+ QString exec;
+ qWarning() << " - Reached terminal initialization" << term;
+ if(term=="mate-terminal" || term=="lxterminal" || term=="gnome-terminal"){
+ exec = term+" --working-directory=\""+dirpath+"\"";
+ }else if(term=="xfce4-terminal"){
+ exec = term+" --default-working-directory=\""+dirpath+"\"";
+ }else if(term=="konsole" || term == "qterminal"){
+ exec = term+" --workdir \""+dirpath+"\"";
+ }else{
+ //-e is the parameter for most of the terminal appliction to execute an external command.
+ //In this case we start a shell in the selected directory
+ //Need the user's shell first
+ QString shell = QString(getenv("SHELL"));
+ if(!LUtils::isValidBinary(shell)){ shell = "/bin/sh"; } //universal fallback for a shell
+ exec = term + " -e \"cd " + dirpath + " && " + shell + " \" ";
+ }
+ qDebug() << exec;
+ return exec;
+}
+
+QStringList LUtils::listSubDirectories(QString dir, bool recursive){
+ //This is a recursive method for returning the full paths of all subdirectories (if recursive flag is enabled)
+ QDir maindir(dir);
+ QStringList out;
+ QStringList subs = maindir.entryList(QDir::NoDotAndDotDot | QDir::Dirs, QDir::Name);
+ for(int i=0; i<subs.length(); i++){
+ out << maindir.absoluteFilePath(subs[i]);
+ if(recursive){
+ out << LUtils::listSubDirectories(maindir.absoluteFilePath(subs[i]), recursive);
+ }
+ }
+ return out;
+}
+
+QString LUtils::PathToAbsolute(QString path){
+ //Convert an input path to an absolute path (this does not check existance ot anything)
+ if(path.startsWith("/")){ return path; } //already an absolute path
+ if(path.startsWith("~")){ path.replace(0,1,QDir::homePath()); }
+ if(!path.startsWith("/")){
+ //Must be a relative path
+ if(path.startsWith("./")){ path = path.remove(2); }
+ path.prepend( QDir::currentPath()+"/");
+ }
+ return path;
+}
+
+QString LUtils::AppToAbsolute(QString path){
+ if(path.startsWith("~/")){ path = path.replace("~/", QDir::homePath()+"/" ); }
+ if(path.startsWith("/") || QFile::exists(path)){ return path; }
+ if(path.endsWith(".desktop")){
+ //Look in the XDG dirs
+ QStringList dirs = systemApplicationDirs();
+ for(int i=0; i<dirs.length(); i++){
+ if(QFile::exists(dirs[i]+"/"+path)){ return (dirs[i]+"/"+path); }
+ }
+ }else{
+ //Look on $PATH for the binary
+ QStringList paths = QString(getenv("PATH")).split(":");
+ for(int i=0; i<paths.length(); i++){
+ if(QFile::exists(paths[i]+"/"+path)){ return (paths[i]+"/"+path); }
+ }
+ }
+ return path;
+}
+
+QStringList LUtils::imageExtensions(bool wildcards){
+ //Note that all the image extensions are lowercase!!
+ static QStringList imgExtensions;
+ if(imgExtensions.isEmpty()){
+ QList<QByteArray> fmt = QImageReader::supportedImageFormats();
+ for(int i=0; i<fmt.length(); i++){
+ if(wildcards){ imgExtensions << "*."+QString::fromLocal8Bit(fmt[i]); }
+ else{ imgExtensions << QString::fromLocal8Bit(fmt[i]); }
+ }
+ }
+ return imgExtensions;
+}
+
+ QTranslator* LUtils::LoadTranslation(QApplication *app, QString appname, QString locale, QTranslator *cTrans){
+ //Get the current localization
+ QString langEnc = "UTF-8"; //default value
+ QString langCode = locale; //provided locale
+ if(langCode.isEmpty()){ langCode = getenv("LC_ALL"); }
+ if(langCode.isEmpty()){ langCode = getenv("LANG"); }
+ if(langCode.isEmpty()){ langCode = "en_US.UTF-8"; } //default to US english
+ //See if the encoding is included and strip it out as necessary
+ if(langCode.contains(".")){
+ langEnc = langCode.section(".",-1);
+ langCode = langCode.section(".",0,0);
+ }
+ //Now verify the encoding for the locale
+ if(langCode =="C" || langCode=="POSIX" || langCode.isEmpty()){
+ langEnc = "System"; //use the Qt system encoding
+ }
+ if(app !=0){
+ qDebug() << "Loading Locale:" << appname << langCode << langEnc;
+ //If an existing translator was provided, remove it first (will be replaced)
+ if(cTrans!=0){ app->removeTranslator(cTrans); }
+ //Setup the translator
+ cTrans = new QTranslator();
+ //Use the shortened locale code if specific code does not have a corresponding file
+ if(!QFile::exists(LOS::LuminaShare()+"i18n/"+appname+"_" + langCode + ".qm") && langCode!="en_US" ){
+ langCode.truncate( langCode.indexOf("_") );
+ }
+ QString filename = appname+"_"+langCode+".qm";
+ //qDebug() << "FileName:" << filename << "Dir:" << LOS::LuminaShare()+"i18n/";
+ if( cTrans->load( filename, LOS::LuminaShare()+"i18n/" ) ){
+ app->installTranslator( cTrans );
+ }else{
+ //Translator could not be loaded for some reason
+ cTrans = 0;
+ if(langCode!="en_US"){
+ qWarning() << " - Could not load Locale:" << langCode;
+ }
+ }
+ }else{
+ //Only going to set the encoding since no application given
+ qDebug() << "Loading System Encoding:" << langEnc;
+ }
+ //Load current encoding for this locale
+ QTextCodec::setCodecForLocale( QTextCodec::codecForName(langEnc.toUtf8()) );
+ return cTrans;
+}
+
+QStringList LUtils::knownLocales(){
+ QDir i18n = QDir(LOS::LuminaShare()+"i18n");
+ if( !i18n.exists() ){ return QStringList(); }
+ QStringList files = i18n.entryList(QStringList() << "lumina-desktop_*.qm", QDir::Files, QDir::Name);
+ if(files.isEmpty()){ return QStringList(); }
+ //Now strip off the filename and just leave the locale tag
+ for(int i=0; i<files.length(); i++){
+ files[i].chop(3); //remove the ".qm" on the end
+ files[i] = files[i].section("_",1,50).simplified();
+ }
+ files << "en_US"; //default locale
+ files.sort();
+ return files;
+}
+
+void LUtils::setLocaleEnv(QString lang, QString msg, QString time, QString num,QString money,QString collate, QString ctype){
+ //Adjust the current locale environment variables
+ bool all = false;
+ if(msg.isEmpty() && time.isEmpty() && num.isEmpty() && money.isEmpty() && collate.isEmpty() && ctype.isEmpty() ){
+ if(lang.isEmpty()){ return; } //nothing to do - no changes requested
+ all = true; //set everything to the "lang" value
+ }
+ //If no lang given, but others are given, then use the current setting
+ if(lang.isEmpty()){ lang = getenv("LC_ALL"); }
+ if(lang.isEmpty()){ lang = getenv("LANG"); }
+ if(lang.isEmpty()){ lang = "en_US"; }
+ //Now go through and set/unset the environment variables
+ // - LANG & LC_ALL
+ if(!lang.contains(".")){ lang.append(".UTF-8"); }
+ setenv("LANG",lang.toUtf8() ,1); //overwrite setting (this is always required as the fallback)
+ if(all){ setenv("LC_ALL",lang.toUtf8() ,1); }
+ else{ unsetenv("LC_ALL"); } //make sure the custom settings are used
+ // - LC_MESSAGES
+ if(msg.isEmpty()){ unsetenv("LC_MESSAGES"); }
+ else{
+ if(!msg.contains(".")){ msg.append(".UTF-8"); }
+ setenv("LC_MESSAGES",msg.toUtf8(),1);
+ }
+ // - LC_TIME
+ if(time.isEmpty()){ unsetenv("LC_TIME"); }
+ else{
+ if(!time.contains(".")){ time.append(".UTF-8"); }
+ setenv("LC_TIME",time.toUtf8(),1);
+ }
+ // - LC_NUMERIC
+ if(num.isEmpty()){ unsetenv("LC_NUMERIC"); }
+ else{
+ if(!num.contains(".")){ num.append(".UTF-8"); }
+ setenv("LC_NUMERIC",num.toUtf8(),1);
+ }
+ // - LC_MONETARY
+ if(money.isEmpty()){ unsetenv("LC_MONETARY"); }
+ else{
+ if(!money.contains(".")){ money.append(".UTF-8"); }
+ setenv("LC_MONETARY",money.toUtf8(),1);
+ }
+ // - LC_COLLATE
+ if(collate.isEmpty()){ unsetenv("LC_COLLATE"); }
+ else{
+ if(!collate.contains(".")){ collate.append(".UTF-8"); }
+ setenv("LC_COLLATE",collate.toUtf8(),1);
+ }
+ // - LC_CTYPE
+ if(ctype.isEmpty()){ unsetenv("LC_CTYPE"); }
+ else{
+ if(!ctype.contains(".")){ ctype.append(".UTF-8"); }
+ setenv("LC_CTYPE",ctype.toUtf8(),1);
+ }
+}
+
+QString LUtils::currentLocale(){
+ QString curr = getenv("LC_ALL");// = QLocale::system();
+ if(curr.isEmpty()){ curr = getenv("LANG"); }
+ if(curr.isEmpty()){ curr = "en_US"; }
+ curr = curr.section(".",0,0); //remove any encodings off the end
+ return curr;
+}
+
+double LUtils::DisplaySizeToBytes(QString num){
+ //qDebug() << "Convert Num to Bytes:" << num;
+ num = num.toLower().simplified();
+ num = num.remove(" ");
+ if(num.isEmpty()){ return 0.0; }
+ if(num.endsWith("b")){ num.chop(1); } //remove the "bytes" marker (if there is one)
+ QString lab = "b";
+ if(!num[num.size()-1].isNumber()){
+ lab = num.right(1); num.chop(1);
+ }
+ double N = num.toDouble();
+ QStringList labs; labs <<"b"<<"k"<<"m"<<"g"<<"t"<<"p"; //go up to petabytes for now
+ for(int i=0; i<labs.length(); i++){
+ if(lab==labs[i]){ break; }//already at the right units - break out
+ N = N*1024.0; //Move to the next unit of measurement
+ }
+ //qDebug() << " - Done:" << QString::number(N) << lab << num;
+ return N;
+}
+
+QString LUtils::BytesToDisplaySize(qint64 ibytes){
+ static QStringList labs = QStringList();
+ if(labs.isEmpty()){ labs << "B" << "K" << "M" << "G" << "T" << "P"; }
+ //Now get the dominant unit
+ int c=0;
+ double bytes = ibytes; //need to keep decimel places for calculations
+ while(bytes>=1000 && c<labs.length() ){
+ bytes = bytes/1024;
+ c++;
+ } //labs[c] is the unit
+ //Bytes are now
+ //Now format the number (up to 3 digits, not including decimel places)
+ QString num;
+ if(bytes>=100){
+ //No decimel places
+ num = QString::number(qRound(bytes));
+ }else if(bytes>=10){
+ //need 1 decimel place
+ num = QString::number( (qRound(bytes*10)/10.0) );
+ }else if(bytes>=1){
+ //need 2 decimel places
+ num = QString::number( (qRound(bytes*100)/100.0) );
+ }else{
+ //Fully decimel (3 places)
+ num = "0."+QString::number(qRound(bytes*1000));
+ }
+ //qDebug() << "Bytes to Human-readable:" << bytes << c << num << labs[c];
+ return (num+labs[c]);
+}
+
+QString LUtils::SecondsToDisplay(int secs){
+ if(secs < 0){ return "??"; }
+ QString rem; //remaining
+ if(secs > 3600){
+ int hours = secs/3600;
+ rem.append( QString::number(hours)+"h ");
+ secs = secs - (hours*3600);
+ }
+ if(secs > 60){
+ int min = secs/60;
+ rem.append( QString::number(min)+"m ");
+ secs = secs - (min*60);
+ }
+ if(secs > 0){
+ rem.append( QString::number(secs)+"s");
+ }else{
+ rem.append( "0s" );
+ }
+ return rem;
+}
diff --git a/src-qt5/core/libLumina/LuminaUtils.h b/src-qt5/core/libLumina/LUtils.h
index 4a0a19af..459fca60 100644
--- a/src-qt5/core/libLumina/LuminaUtils.h
+++ b/src-qt5/core/libLumina/LUtils.h
@@ -1,6 +1,6 @@
//===========================================
// Lumina-DE source code
-// Copyright (c) 2012-2015, Ken Moore
+// Copyright (c) 2012-2016, Ken Moore
// Available under the 3-clause BSD license
// See the LICENSE file for full details
//===========================================
@@ -10,6 +10,7 @@
#include <QCoreApplication>
#include <QProcess>
#include <QTextStream>
+#include <QTextCodec>
#include <QFile>
#include <QDir>
#include <QString>
@@ -18,17 +19,15 @@
#include <QFileInfo>
#include <QObject>
#include <QTranslator>
-//#include <QApplication>
-#include <QMenu>
-#include <QMouseEvent>
-#include <QSize>
-#include <QWidgetAction>
+#include <QDebug>
+#include <QDesktopWidget>
+#include <QImageReader>
+#include <QRegExp>
+#include <QFuture>
+#include <QScreen>
class LUtils{
public:
- //Get the current version/build of the Lumina desktop
- static QString LuminaDesktopVersion();
- static QString LuminaDesktopBuildDate();
//Run an external command and return the exit code
static int runCmd(QString cmd, QStringList args = QStringList());
@@ -47,6 +46,9 @@ public:
return isValidBinary(bins); //overload for a "junk" binary variable input
}
+ //Return all the dirs on the system which contain .desktop files
+ static QStringList systemApplicationDirs();
+
//Create the exec string to open a terminal in a particular directory
static QString GenerateOpenTerminalExec(QString term, QString dirpath);
@@ -72,60 +74,5 @@ public:
static QString BytesToDisplaySize(qint64 bytes); //convert into a readable size (like 50M or 50KB)
static QString SecondsToDisplay(int secs); //convert into a readable time
-
- //Various function for finding valid QtQuick plugins on the system
- static bool validQuickPlugin(QString ID);
- static QString findQuickPluginFile(QString ID);
- static QStringList listQuickPlugins(); //List of valid ID's
- static QStringList infoQuickPlugin(QString ID); //Returns: [Name, Description, Icon]
-
- //Various functions for the favorites sub-system
- // Formatting Note: "<name>::::[dir/app/<mimetype>]::::<path>"
- // the <name> field might not be used for "app" flagged entries
- static QStringList listFavorites();
- static bool saveFavorites(QStringList);
- static bool isFavorite(QString path);
- static bool addFavorite(QString path, QString name = "");
- static void removeFavorite(QString path);
- static void upgradeFavorites(int fromoldversionnumber);
-
- //Load the default setup for the system
- static void LoadSystemDefaults(bool skipOS = false);
- static bool checkUserFiles(QString lastversion); //returns true if something changed
- static int VersionStringToNumber(QString version); //convert the lumina version string to a number for comparisons
-
};
-
-//Special subclass for a menu which the user can grab the edges and resize as necessary
-// Note: Make sure that you don't set 0pixel contents margins on this menu
-// - it needs at least 1 pixel margins for the user to be able to grab it
-/*class ResizeMenu : public QMenu{
- Q_OBJECT
-public:
- ResizeMenu(QWidget *parent = 0);
- virtual ~ResizeMenu();
-
- void setContents(QWidget *con);
-
-private:
- enum SideFlag{NONE, TOP, BOTTOM, LEFT, RIGHT};
- SideFlag resizeSide;
- QWidget *contents;
- QWidgetAction *cAct;
-
-private slots:
- void clearFlags(){
- resizeSide=NONE;
- }
-
-protected:
- virtual void mouseMoveEvent(QMouseEvent *ev);
- virtual void mousePressEvent(QMouseEvent *ev);
- virtual void mouseReleaseEvent(QMouseEvent *ev);
-
-signals:
- void MenuResized(QSize); //Emitted when the menu is manually resized by the user
-
-};*/
-
#endif
diff --git a/src-qt5/core/libLumina/LUtils.pri b/src-qt5/core/libLumina/LUtils.pri
new file mode 100644
index 00000000..d5941a41
--- /dev/null
+++ b/src-qt5/core/libLumina/LUtils.pri
@@ -0,0 +1,34 @@
+#since this is the most common of the include files - make sure it only gets added once
+!contains( HEADERS, $${PWD}/LUtils.h ){
+
+include("$${PWD}/../../OS-detect.pri")
+
+QT *= concurrent
+
+#Setup any special defines (qmake -> C++)
+GIT_VERSION=$$system(git describe --always)
+!isEmpty(GIT_VERSION){
+ DEFINES += GIT_VERSION='"\\\"$${GIT_VERSION}\\\""'
+}
+#Note: Saving the build date will break reproducible builds (time stamp always different)
+# Disable this by default, but leave it possible to re-enable this as needed by user
+#DEFINES += BUILD_DATE='"\\\"$$system(date)\\\""'
+
+#LuminaOS files
+HEADERS *= $${PWD}/LuminaOS.h
+# LuminaOS support functions (or fall back to generic one)
+exists($${PWD}/LuminaOS-$${LINUX_DISTRO}.cpp){
+ SOURCES *= $${PWD}/LuminaOS-$${LINUX_DISTRO}.cpp
+}else:exists($${PWD}/LuminaOS-$${OS}.cpp){
+ SOURCES *= $${PWD}/LuminaOS-$${OS}.cpp
+}else{
+ SOURCES *= $${PWD}/LuminaOS-template.cpp
+}
+
+#LUtils Files
+SOURCES *= $${PWD}/LUtils.cpp
+HEADERS *= $${PWD}/LUtils.h
+
+INCLUDEPATH *= ${PWD}
+
+}
diff --git a/src-qt5/core/libLumina/LuminaOS.h b/src-qt5/core/libLumina/LuminaOS.h
index 50d6baec..96a587a8 100644
--- a/src-qt5/core/libLumina/LuminaOS.h
+++ b/src-qt5/core/libLumina/LuminaOS.h
@@ -1,6 +1,6 @@
//===========================================
// Lumina-DE source code
-// Copyright (c) 2014-15, Ken Moore
+// Copyright (c) 2014-16, Ken Moore
// Available under the 3-clause BSD license
// See the LICENSE file for full details
//===========================================
@@ -18,7 +18,7 @@
#include <QDir>
#include <QObject>
-#include "LuminaUtils.h"
+#include "LUtils.h"
class LOS{
public:
diff --git a/src-qt5/core/libLumina/LuminaSingleApplication.h b/src-qt5/core/libLumina/LuminaSingleApplication.h
index 725d8e40..bacf5640 100644
--- a/src-qt5/core/libLumina/LuminaSingleApplication.h
+++ b/src-qt5/core/libLumina/LuminaSingleApplication.h
@@ -25,7 +25,7 @@
#include <QLockFile>
#include <QApplication>
-#include <LuminaUtils.h>
+#include <LUtils.h>
//NOTE: This application type will automatically load the proper translation file(s)
// if the application name is set properly
diff --git a/src-qt5/core/libLumina/LuminaSingleApplication.pri b/src-qt5/core/libLumina/LuminaSingleApplication.pri
new file mode 100644
index 00000000..88ab7726
--- /dev/null
+++ b/src-qt5/core/libLumina/LuminaSingleApplication.pri
@@ -0,0 +1,12 @@
+include("$${PWD}/../../OS-detect.pri")
+
+QT *= network x11extras
+
+#LUtils Files
+SOURCES *= $${PWD}/LuminaSingleApplication.cpp
+HEADERS *= $${PWD}/LuminaSingleApplication.h
+
+INCLUDEPATH *= ${PWD}
+
+#include LUtils and LuminaOS
+include(LUtils.pri)
diff --git a/src-qt5/core/libLumina/LuminaThemes.cpp b/src-qt5/core/libLumina/LuminaThemes.cpp
index 03dfb771..70cd221d 100644
--- a/src-qt5/core/libLumina/LuminaThemes.cpp
+++ b/src-qt5/core/libLumina/LuminaThemes.cpp
@@ -6,7 +6,7 @@
//===========================================
#include "LuminaThemes.h"
-#include "LuminaUtils.h"
+#include "LUtils.h"
#include "LuminaOS.h"
#include <QIcon>
#include <QFont>
diff --git a/src-qt5/core/libLumina/LuminaThemes.pri b/src-qt5/core/libLumina/LuminaThemes.pri
new file mode 100644
index 00000000..0fe35b79
--- /dev/null
+++ b/src-qt5/core/libLumina/LuminaThemes.pri
@@ -0,0 +1,10 @@
+include("$${PWD}/../../OS-detect.pri")
+
+#LUtils Files
+SOURCES *= $${PWD}/LuminaThemes.cpp
+HEADERS *= $${PWD}/LuminaThemes.h
+
+INCLUDEPATH *= ${PWD}
+
+#include LUtils and LuminaOS
+include(LUtils.pri)
diff --git a/src-qt5/core/libLumina/LuminaX11.pri b/src-qt5/core/libLumina/LuminaX11.pri
new file mode 100644
index 00000000..0e472dd4
--- /dev/null
+++ b/src-qt5/core/libLumina/LuminaX11.pri
@@ -0,0 +1,13 @@
+
+QT *= x11extras
+
+LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lXdamage
+
+#LUtils Files
+SOURCES *= $${PWD}/LuminaX11.cpp
+HEADERS *= $${PWD}/LuminaX11.h
+
+INCLUDEPATH *= ${PWD}
+
+#include LUtils and LuminaOS
+include(LUtils.pri)
diff --git a/src-qt5/core/libLumina/LuminaXDG.cpp b/src-qt5/core/libLumina/LuminaXDG.cpp
index b0d2edd9..d6342269 100644
--- a/src-qt5/core/libLumina/LuminaXDG.cpp
+++ b/src-qt5/core/libLumina/LuminaXDG.cpp
@@ -6,7 +6,7 @@
//===========================================
#include "LuminaXDG.h"
#include "LuminaOS.h"
-#include "LuminaUtils.h"
+#include "LUtils.h"
#include <QObject>
#include <QTimer>
#include <QMediaPlayer>
diff --git a/src-qt5/core/libLumina/LuminaXDG.pri b/src-qt5/core/libLumina/LuminaXDG.pri
new file mode 100644
index 00000000..6f3a2b7c
--- /dev/null
+++ b/src-qt5/core/libLumina/LuminaXDG.pri
@@ -0,0 +1,10 @@
+QT *= multimedia svg
+
+#LUtils Files
+SOURCES *= $${PWD}/LuminaXDG.cpp
+HEADERS *= $${PWD}/LuminaXDG.h
+
+INCLUDEPATH *= ${PWD}
+
+#include LUtils and LuminaOS
+include(LUtils.pri)
diff --git a/src-qt5/core/libLumina/colors/Black.qss.colors b/src-qt5/core/libLumina/colors/Black.qss.colors
deleted file mode 100644
index b6269188..00000000
--- a/src-qt5/core/libLumina/colors/Black.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(204,204,204,200)
-ACCENTDISABLECOLOR=rgba(204,204,204,100)
-ALTBASECOLOR=rgb(37,37,37)
-BASECOLOR=rgb(36,36,36)
-HIGHLIGHTCOLOR=rgba(218,222,226,170)
-HIGHLIGHTDISABLECOLOR=rgba(218,222,226,160)
-PRIMARYCOLOR=rgba(0,0,4,250)
-PRIMARYDISABLECOLOR=rgba(0,0,0,180)
-SECONDARYCOLOR=rgba(192,192,192,200)
-SECONDARYDISABLECOLOR=rgba(192,192,192,100)
-TEXTCOLOR=white
-TEXTDISABLECOLOR=darkgrey
-TEXTHIGHLIGHTCOLOR=black
diff --git a/src-qt5/core/libLumina/colors/Blue-Light.qss.colors b/src-qt5/core/libLumina/colors/Blue-Light.qss.colors
deleted file mode 100644
index 5bcb85f6..00000000
--- a/src-qt5/core/libLumina/colors/Blue-Light.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(157,161,165,200)
-ACCENTDISABLECOLOR=rgba(156,156,157,200)
-ALTBASECOLOR=rgb(239,247,255)
-BASECOLOR=rgb(165,210,255)
-HIGHLIGHTCOLOR=rgb(110,158,208)
-HIGHLIGHTDISABLECOLOR=rgba(110,158,208,150)
-PRIMARYCOLOR=rgba(181,212,238,200)
-PRIMARYDISABLECOLOR=rgba(234,237,238,100)
-SECONDARYCOLOR=rgba(200,222,243,200)
-SECONDARYDISABLECOLOR=rgba(200,222,243,100)
-TEXTCOLOR=black
-TEXTDISABLECOLOR=grey
-TEXTHIGHLIGHTCOLOR=black
diff --git a/src-qt5/core/libLumina/colors/Grey-Dark.qss.colors b/src-qt5/core/libLumina/colors/Grey-Dark.qss.colors
deleted file mode 100644
index 207edd04..00000000
--- a/src-qt5/core/libLumina/colors/Grey-Dark.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(43,43,45,200)
-ACCENTDISABLECOLOR=rgba(43,43,45,100)
-ALTBASECOLOR=rgb(63,61,61)
-BASECOLOR=rgb(93,92,92)
-HIGHLIGHTCOLOR=rgba(218,222,226,170)
-HIGHLIGHTDISABLECOLOR=rgba(218,222,226,160)
-PRIMARYCOLOR=rgba(75,77,80,240)
-PRIMARYDISABLECOLOR=rgba(75,77,80,180)
-SECONDARYCOLOR=rgba(144,140,142,200)
-SECONDARYDISABLECOLOR=rgba(144,140,142,100)
-TEXTCOLOR=white
-TEXTDISABLECOLOR=darkgrey
-TEXTHIGHLIGHTCOLOR=black
diff --git a/src-qt5/core/libLumina/colors/Lumina-Glass.qss.colors b/src-qt5/core/libLumina/colors/Lumina-Glass.qss.colors
deleted file mode 100644
index 89534aaa..00000000
--- a/src-qt5/core/libLumina/colors/Lumina-Glass.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(255,252,234,100)
-ACCENTDISABLECOLOR=rgba(0,0,0,100)
-ALTBASECOLOR=rgba(255,255,255,125)
-BASECOLOR=rgb(247,246,244)
-HIGHLIGHTCOLOR=rgba(212,212,212,170)
-HIGHLIGHTDISABLECOLOR=rgba(184,184,184,100)
-PRIMARYCOLOR=rgba(235,242,242,200)
-PRIMARYDISABLECOLOR=rgba(214,220,220,200)
-SECONDARYCOLOR=rgba(100,100,100,200)
-SECONDARYDISABLECOLOR=rgba(100,100,100,100)
-TEXTCOLOR=black
-TEXTDISABLECOLOR=grey
-TEXTHIGHLIGHTCOLOR=black
diff --git a/src-qt5/core/libLumina/colors/Lumina-Gold.qss.colors b/src-qt5/core/libLumina/colors/Lumina-Gold.qss.colors
deleted file mode 100644
index cfad7069..00000000
--- a/src-qt5/core/libLumina/colors/Lumina-Gold.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(149,144,122,200)
-ACCENTDISABLECOLOR=rgba(74,71,60,200)
-ALTBASECOLOR=rgb(230,227,204)
-BASECOLOR=rgb(247,247,240)
-HIGHLIGHTCOLOR=rgba(252,237,149,170)
-HIGHLIGHTDISABLECOLOR=rgba(252,237,149,100)
-PRIMARYCOLOR=rgba(238,234,226,200)
-PRIMARYDISABLECOLOR=rgba(238,235,224,100)
-SECONDARYCOLOR=rgba(247,209,112,200)
-SECONDARYDISABLECOLOR=rgba(234,198,106,150)
-TEXTCOLOR=black
-TEXTDISABLECOLOR=grey
-TEXTHIGHLIGHTCOLOR=black \ No newline at end of file
diff --git a/src-qt5/core/libLumina/colors/Lumina-Green.qss.colors b/src-qt5/core/libLumina/colors/Lumina-Green.qss.colors
deleted file mode 100644
index 99f16acb..00000000
--- a/src-qt5/core/libLumina/colors/Lumina-Green.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(149,144,122,200)
-ACCENTDISABLECOLOR=rgba(74,71,60,200)
-ALTBASECOLOR=rgb(230,230,230)
-BASECOLOR=rgb(247,246,244)
-HIGHLIGHTCOLOR=rgba(66,153,76,170)
-HIGHLIGHTDISABLECOLOR=rgba(66,153,76,100)
-PRIMARYCOLOR=rgba(229,231,238,200)
-PRIMARYDISABLECOLOR=rgba(229,231,238,100)
-SECONDARYCOLOR=rgba(76,197,84,200)
-SECONDARYDISABLECOLOR=rgba(76,197,84,150)
-TEXTCOLOR=black
-TEXTDISABLECOLOR=grey
-TEXTHIGHLIGHTCOLOR=black
diff --git a/src-qt5/core/libLumina/colors/Lumina-Purple.qss.colors b/src-qt5/core/libLumina/colors/Lumina-Purple.qss.colors
deleted file mode 100644
index f2ba7e05..00000000
--- a/src-qt5/core/libLumina/colors/Lumina-Purple.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(247,231,255,200)
-ACCENTDISABLECOLOR=rgba(167,166,166,200)
-ALTBASECOLOR=rgb(63,61,61)
-BASECOLOR=rgb(93,92,92)
-HIGHLIGHTCOLOR=rgba(76,38,171,170)
-HIGHLIGHTDISABLECOLOR=rgba(57,19,139,170)
-PRIMARYCOLOR=rgba(65,67,80,240)
-PRIMARYDISABLECOLOR=rgba(65,67,80,180)
-SECONDARYCOLOR=rgba(74,65,120,200)
-SECONDARYDISABLECOLOR=rgba(71,65,120,100)
-TEXTCOLOR=white
-TEXTDISABLECOLOR=darkgrey
-TEXTHIGHLIGHTCOLOR=white \ No newline at end of file
diff --git a/src-qt5/core/libLumina/colors/Lumina-Red.qss.colors b/src-qt5/core/libLumina/colors/Lumina-Red.qss.colors
deleted file mode 100644
index f73bdb75..00000000
--- a/src-qt5/core/libLumina/colors/Lumina-Red.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(255,244,245,200)
-ACCENTDISABLECOLOR=rgba(167,166,166,200)
-ALTBASECOLOR=rgb(63,61,61)
-BASECOLOR=rgb(93,92,92)
-HIGHLIGHTCOLOR=rgba(175,9,9,170)
-HIGHLIGHTDISABLECOLOR=rgba(154,20,20,170)
-PRIMARYCOLOR=rgba(80,66,66,240)
-PRIMARYDISABLECOLOR=rgba(80,66,66,180)
-SECONDARYCOLOR=rgba(120,22,23,200)
-SECONDARYDISABLECOLOR=rgba(120,22,23,100)
-TEXTCOLOR=white
-TEXTDISABLECOLOR=darkgrey
-TEXTHIGHLIGHTCOLOR=white \ No newline at end of file
diff --git a/src-qt5/core/libLumina/colors/PCBSD10-Default.qss.colors b/src-qt5/core/libLumina/colors/PCBSD10-Default.qss.colors
deleted file mode 100644
index efcea51d..00000000
--- a/src-qt5/core/libLumina/colors/PCBSD10-Default.qss.colors
+++ /dev/null
@@ -1,13 +0,0 @@
-ACCENTCOLOR=rgba(182,186,191,200)
-ACCENTDISABLECOLOR=rgba(190,190,191,200)
-ALTBASECOLOR=rgb(241,241,241)
-BASECOLOR=rgb(247,246,244)
-HIGHLIGHTCOLOR=rgb(129,184,243)
-HIGHLIGHTDISABLECOLOR=rgba(129,184,243,150)
-PRIMARYCOLOR=rgba(224,236,238,200)
-PRIMARYDISABLECOLOR=rgba(234,237,238,100)
-SECONDARYCOLOR=rgba(200,222,243,200)
-SECONDARYDISABLECOLOR=rgba(200,222,243,100)
-TEXTCOLOR=black
-TEXTDISABLECOLOR=grey
-TEXTHIGHLIGHTCOLOR=black
diff --git a/src-qt5/core/libLumina/colors/Solarized-Dark.qss.colors b/src-qt5/core/libLumina/colors/Solarized-Dark.qss.colors
deleted file mode 100644
index d4f0f1c9..00000000
--- a/src-qt5/core/libLumina/colors/Solarized-Dark.qss.colors
+++ /dev/null
@@ -1,16 +0,0 @@
-# Solarized is a theme created by Ethan Schoonover
-# See the project site at http://ethanschoonover.com/solarized
-# Or see the source at https://github.com/altercation/solarized
-ACCENTCOLOR=rgb(181,137,0)
-ACCENTDISABLECOLOR=rgb(181,137,0)
-ALTBASECOLOR=rgb(0,43,54)
-BASECOLOR=rgb(0,43,54)
-HIGHLIGHTCOLOR=rgb(7,54,66)
-HIGHLIGHTDISABLECOLOR=rgb(7,53,66)
-PRIMARYCOLOR=rgb(0,43,54)
-PRIMARYDISABLECOLOR=rgb(7,54,66)
-SECONDARYCOLOR=rgb(0,43,54)
-SECONDARYDISABLECOLOR=rgb(7,54,66)
-TEXTCOLOR=rgb(131,148,150)
-TEXTDISABLECOLOR=rgb(88,110,117)
-TEXTHIGHLIGHTCOLOR=rgb(147,161,161)
diff --git a/src-qt5/core/libLumina/colors/Solarized-Light.qss.colors b/src-qt5/core/libLumina/colors/Solarized-Light.qss.colors
deleted file mode 100644
index fead1915..00000000
--- a/src-qt5/core/libLumina/colors/Solarized-Light.qss.colors
+++ /dev/null
@@ -1,16 +0,0 @@
-# Solarized is a theme created by Ethan Schoonover
-# See the project site at http://ethanschoonover.com/solarized
-# Or see the source at https://github.com/altercation/solarized
-ACCENTCOLOR=rgb(38,139,210)
-ACCENTDISABLECOLOR=rgb(38,139,210)
-ALTBASECOLOR=rgb(253,246,227)
-BASECOLOR=rgb(253,246,227)
-HIGHLIGHTCOLOR=rgb(238,232,213)
-HIGHLIGHTDISABLECOLOR=rgb(238,232,213)
-PRIMARYCOLOR=rgb(253,246,227)
-PRIMARYDISABLECOLOR=rgb(238,232,213)
-SECONDARYCOLOR=rgb(253,246,227)
-SECONDARYDISABLECOLOR=rgb(238,232,213)
-TEXTCOLOR=rgb(131,148,150)
-TEXTDISABLECOLOR=rgb(147,161,161)
-TEXTHIGHLIGHTCOLOR=rgb(88,110,117)
diff --git a/src-qt5/core/libLumina/libLumina.pro b/src-qt5/core/libLumina/libLumina.pro
index 2786b875..a7dc160a 100644
--- a/src-qt5/core/libLumina/libLumina.pro
+++ b/src-qt5/core/libLumina/libLumina.pro
@@ -1,57 +1,57 @@
-include("$${PWD}/../../OS-detect.pri")
+#include("$${PWD}/../../OS-detect.pri")
-QT += core network widgets x11extras multimedia concurrent svg
+#QT += core network widgets x11extras multimedia concurrent svg
-define
+#define
#Setup any special defines (qmake -> C++)
-GIT_VERSION=$$system(git describe --always)
-!isEmpty(GIT_VERSION){
- DEFINES += GIT_VERSION='"\\\"$${GIT_VERSION}\\\""'
-}
-DEFINES += BUILD_DATE='"\\\"$$system(date)\\\""'
+#GIT_VERSION=$$system(git describe --always)
+#!isEmpty(GIT_VERSION){
+# DEFINES += GIT_VERSION='"\\\"$${GIT_VERSION}\\\""'
+#}
+#DEFINES += BUILD_DATE='"\\\"$$system(date)\\\""'
-TARGET=LuminaUtils
+#TARGET=LuminaUtils
-target.path = $${L_LIBDIR}
+#target.path = $${L_LIBDIR}
-DESTDIR= $$_PRO_FILE_PWD_/
+#DESTDIR= $$_PRO_FILE_PWD_/
-TEMPLATE = lib
-LANGUAGE = C++
-VERSION = 1
+#TEMPLATE = lib
+#LANGUAGE = C++
+#VERSION = 1
-HEADERS += LuminaXDG.h \
- LuminaUtils.h \
- LuminaX11.h \
- LuminaThemes.h \
- LuminaOS.h \
- LuminaSingleApplication.h
+#HEADERS += LuminaXDG.h \
+# LuminaUtils.h \
+# LuminaX11.h \
+# LuminaThemes.h \
+# LuminaOS.h \
+# LuminaSingleApplication.h
-SOURCES += LuminaXDG.cpp \
- LuminaUtils.cpp \
- LuminaX11.cpp \
- LuminaThemes.cpp \
- LuminaSingleApplication.cpp
+#SOURCES += LuminaXDG.cpp \
+# LuminaUtils.cpp \
+# LuminaX11.cpp \
+# LuminaThemes.cpp \
+# LuminaSingleApplication.cpp
# Also load the OS template as available for
# LuminaOS support functions (or fall back to generic one)
-exists($${PWD}/LuminaOS-$${LINUX_DISTRO}.cpp){
- SOURCES += LuminaOS-$${LINUX_DISTRO}.cpp
-}else:exists($${PWD}/LuminaOS-$${OS}.cpp){
- SOURCES += LuminaOS-$${OS}.cpp
-}else{
- SOURCES += LuminaOS-template.cpp
-}
-
-LIBS += -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lXdamage
-
-include.path=$${L_INCLUDEDIR}
-include.files=LuminaXDG.h \
- LuminaUtils.h \
- LuminaX11.h \
- LuminaThemes.h \
- LuminaOS.h \
- LuminaSingleApplication.h
+#exists($${PWD}/LuminaOS-$${LINUX_DISTRO}.cpp){
+# SOURCES += LuminaOS-$${LINUX_DISTRO}.cpp
+#}else:exists($${PWD}/LuminaOS-$${OS}.cpp){
+# SOURCES += LuminaOS-$${OS}.cpp
+#}else{
+# SOURCES += LuminaOS-template.cpp
+#}
+
+#LIBS += -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lXdamage
+
+#include.path=$${L_INCLUDEDIR}
+#include.files=LuminaXDG.h \
+# LuminaUtils.h \
+# LuminaX11.h \
+# LuminaThemes.h \
+# LuminaOS.h \
+# LuminaSingleApplication.h
colors.path=$${L_SHAREDIR}/lumina-desktop/colors
colors.files=colors/*.qss.colors
@@ -65,4 +65,4 @@ themes.files=themes/*.qss.template
globs.path=$${L_SHAREDIR}/lumina-desktop
globs.files=xtrafiles/globs2
-INSTALLS += target include colors themes globs
+INSTALLS += colors themes globs
diff --git a/src-qt5/core/libLumina/quickplugins/quick-sample.qml b/src-qt5/core/libLumina/quickplugins/quick-sample.qml
deleted file mode 100644
index 18b10d77..00000000
--- a/src-qt5/core/libLumina/quickplugins/quick-sample.qml
+++ /dev/null
@@ -1,12 +0,0 @@
-// Plugin-Name=Sample
-// Plugin-Description=A simple example for QtQuick/QML plugins
-// Plugin-Icon=preferences-plugin
-// Created: Ken Moore (ken@pcbsd.org) May 2015
-
-import QtQuick.Controls 1.3
-
-Label {
- text: "Sample"
- color: "blue"
- font.bold: true
-} \ No newline at end of file
diff --git a/src-qt5/core/libLumina/themes/Glass.qss.template b/src-qt5/core/libLumina/themes/Glass.qss.template
deleted file mode 100644
index d594d25e..00000000
--- a/src-qt5/core/libLumina/themes/Glass.qss.template
+++ /dev/null
@@ -1,539 +0,0 @@
-/* ALL THE TEMPLATE WIDGETS */
-INHERITS=None
-
-/* ALL THE WIDGETS WITH THE BASE COLOR */
-QMainWindow, QMenu, QDialog, QMessageBox{
- background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 %%BASECOLOR%%, stop:1 %%ALTBASECOLOR%%);
- color: %%TEXTCOLOR%%;
- border: 1px solid %%ACCENTDISABLECOLOR%%;
- border-radius: 3px;
-}
-
-/* ALL THE WIDGETS WITH AN ALTERNATE BASE COLOR */
-QLineEdit, QTextEdit, QTextBrowser, QPlainTextEdit, QSpinBox, QDateEdit, QDateTimeEdit, QTimeEdit, QDoubleSpinBox{
- background: %%ALTBASECOLOR%%;
- color: %%TEXTCOLOR%%;
- border-color: %%ACCENTDISABLECOLOR%%;
- selection-background-color: %%HIGHLIGHTCOLOR%%;
- selection-color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-
-/* PAGES OF CONTAINER WIDGETS */
-QStackedWidget .QWidget{
- background: transparent;
- color: %%TEXTCOLOR%%;
- border: none;
-}
-
-QToolBox::tab{
- color: %%TEXTCOLOR%%;
-}
-
-/* MENU WIDGETS */
-QMenuBar, QMenuBar::item,QToolBar{
- background: transparent;
- border: none;
- color: %%TEXTCOLOR%%;
-}
-
-QStatusBar{
- background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 transparent, stop: 0.5 %%SECONDARYCOLOR%%);
- border: none;
- color: %%TEXTCOLOR%%;
-}
-QToolBar:top{
- border-bottom: 1px solid %%ACCENTCOLOR%%;
-}
-QToolBar:bottom{
- border-top: 1px solid %%ACCENTCOLOR%%;
-}
-QToolBar:left{
- border-right: 1px solid %%ACCENTCOLOR%%;
-}
-QToolBar:right{
- border-left: 1px solid %%ACCENTCOLOR%%;
-}
-
-QMenuBar::item{
- background: transparent; /*Use the menu bar color*/
- padding-left: 4px;
- padding-right: 2px;
-}
-
-QMenuBar::item:selected, QMenuBar::item:pressed, QMenu::item:selected{
-background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
-color: %%TEXTHIGHLIGHTCOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-}
-QMenuBar::item:disabled{
- color: %%TEXTDISABLECOLOR%%;
-}
-
-/*QMenu::item{
- border: 2px solid #808080;
-}*/
-
-QMenu::item{
- background: transparent;
- border: 1px solid transparent;
- color: %%TEXTCOLOR%%;
- padding: 4px 30px 4px 20px;
- margin-left: 3px;
- margin-right: 3px;
-}
-
-/* TAB WIDGETS */
-/*QTabBar{
- Custom Font settings need to be here and NOT in the ::tab fields,
- otherwise it will break auto-scaling of the tab sizes to fit the text
-}*/
-/* Transparency does not work on main pages within tabwidgets*/
-QTabWidget QStackedWidget .QWidget{
- background: rgb(230,230,230);
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
-}
-QTabWidget{
- color: black;
- border: none;
-}
-QTabWidget QLabel{
- color: black;
-}
-QTabBar::tab {
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%SECONDARYDISABLECOLOR%%, stop: 1 %%ALTBASECOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
- padding: 2px;
- color: %%TEXTCOLOR%%;
-}
-QTabBar::tab:top{
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- max-width: 100em;
- min-width: 0em;
-}
-QTabBar::tab:bottom{
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
- max-width: 100em;
- min-width: 0em;
-}
-/* left/right tab indicators appear to be reversed in Qt*/
-QTabBar::tab:right{
- border-top-left-radius: 4px;
- border-bottom-left-radius: 4px;
- max-height: 100em;
- min-height: 0em;
-}
-QTabBar::tab:left{
- border-top-right-radius: 4px;
- border-bottom-right-radius: 4px;
- max-height: 100em;
- min-height: 0em;
-}
-QTabBar::tab:selected{
- background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 rgb(230,230,230));
- border-bottom: none;
-}
-QTabBar::tab:hover {
- background: %%HIGHLIGHTCOLOR%%;
- border: 1px solid %%ACCENTDISABLECOLOR%%;
- }
-
-QTabBar::tab:!selected:top {
- margin-top: 4px;
-}
-QTabBar::tab:!selected:bottom{
- margin-bottom: 4px;
-}
-QTabBar::tab:!selected:right{
- margin-left: 4px;
-}
-QTabBar::tab:!selected:left{
- margin-right: 4px;
-}
-
-/* FRAME WIDGETS */
-QToolTip{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%BASECOLOR%%, stop: 1 %%ALTBASECOLOR%%);
- border-radius: 3px;
- border: 1px solid %%ACCENTCOLOR%%;
- padding: 1px;
- color: %%TEXTCOLOR%%;
-}
-
-QLabel{
- background: transparent;
- border: none;
- color: %%TEXTCOLOR%%;
-}
-QAbstractButton::disabled{
- color: %%TEXTDISABLECOLOR%%;
-}
-
-/* GROUP BOX */
-QGroupBox{
- background-color: transparent;
- border-color: %%ACCENTCOLOR%%;
- border-radius: 5px;
- margin-top: 2ex;
- font-weight: bold;
-}
-QGroupBox::title{
- subcontrol-origin: margin;
- subcontrol-position: top center;
- padding: 0 3px;
- background: transparent;
- /*border: none;*/
- color: %%TEXTCOLOR%%;
-}
-
-/* COMBO BOX */
-QComboBox{
- /*border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
- padding: 1px 18px 1px 3px;*/
- color: %%TEXTCOLOR%%;
- background: %%ALTBASECOLOR%%;
- selection-background-color: %%HIGHLIGHTCOLOR%%;
- }
-
-
-/* VIEW WIDGETS */
-QTreeView, QListView{
- background: %%ALTBASECOLOR%%;
- alternate-background-color: %%BASECOLOR%%;
- /*selection-background-color: %%SECONDARYCOLOR%%;*/
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
- /*show-decoration-selected: 1;*/
- color: %%TEXTCOLOR%%;
- selection-color: %%TEXTCOLOR%%;
-}
-
-QTreeView:focus, QListView:focus{
- border: 1px solid %%HIGHLIGHTDISABLECOLOR%%;
-}
-
-/*
-QTreeView::item and QListView::item unneccessary:
-Already set though parentage and causes usage errors if set manually
-*/
-
-/*QTreeView::item:selected, QListView::item:selected{
- background: %%SECONDARYDISABLECOLOR%%;
- border-color: %%ACCENTCOLOR%%;
- color: %%TEXTCOLOR%%;
-}*/
-
-QTreeView::item:hover, QListView::item:hover{
- background: %%HIGHLIGHTDISABLECOLOR%%;
-}
-QTreeView::item:selected:hover, QListView::item:selected:hover{
- background: %%HIGHLIGHTDISABLECOLOR%%;
-}
-QTreeView::item:selected, QListView::item:selected{
- background: %%SECONDARYDISABLECOLOR%%;
-}
-QTreeView::item:selected:focus, QListView::item:selected:focus{
- background: %%SECONDARYCOLOR%%;
-}
-QHeaderView{
- background: %%HIGHLIGHTDISABLECOLOR%%;
- color: %%TEXTHIGHLIGHTCOLOR%%;
- border: none;
- border-top-left-radius: 3px; /*match the list/tree view widgets*/
- border-top-right-radius: 3px; /*match the list/tree view widgets*/
-}
-QHeaderView::section{
- background: %%HIGHLIGHTDISABLECOLOR%%; /*QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%PRIMARYDISABLECOLOR%%, stop: 1 %%PRIMARYCOLOR%%);*/
- color: %%TEXTHIGHLIGHTCOLOR%%;
- border-color: %%ACCENTCOLOR%%;
- padding: 1px;
- padding-left: 4px;
-}
-QHeaderView::section:hover{
- background: %%PRIMARYCOLOR%%;
- border-color: %%ACCENTDISABLECOLOR%%;
- color: %%TEXTCOLOR%%;
-}
-
-/* SCROLLBARS (NOTE: Changing 1 subcontrol means you have to change all of them)*/
-QScrollBar{
- background:%%ALTBASECOLOR%%;
-}
-QScrollBar:horizontal{
- margin: 0px 0px 0px 0px;
-}
-QScrollBar:vertical{
- margin: 0px 0px 0px 0px;
-}
-QScrollBar::handle{
- background: %%SECONDARYCOLOR%%;
- border: 1px solid transparent;
- border-radius: 7px;
-}
-QScrollBar::handle:hover, QScrollBar::add-line:hover, QScrollBar::sub-line:hover{
- background: %%SECONDARYDISABLECOLOR%%;
-}
-QScrollBar::add-line{
-subcontrol-origin: none;
-}
-QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical{
-height: 0px;
-}
-QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal{
-width: 0px;
-}
-QScrollBar::sub-line{
-subcontrol-origin: none;
-}
-
-/* SLIDERS */
-QSlider::groove:horizontal {
-border: 1px solid %%ACCENTCOLOR%%;
-background: %%ALTBASECOLOR%%;
-height: 10px;
-border-radius: 3px;
-}
-QSlider::groove:vertical {
-border: 1px solid %%ACCENTCOLOR%%;
-background: %%ALTBASECOLOR%%;
-width: 10px;
-border-radius: 3px;
-}
-QSlider::sub-page:horizontal {
-background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1,
- stop: 0 %%HIGHLIGHTCOLOR%%, stop: 1 %%HIGHLIGHTDISABLECOLOR%%);
-border: 1px solid %%ACCENTCOLOR%%;
-height: 10px;
-border-radius: 3px;
-}
-QSlider::sub-page:vertical {
-background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1,
- stop: 0 %%HIGHLIGHTCOLOR%%, stop: 1 %%HIGHLIGHTDISABLECOLOR%%);
-border: 1px solid %%ACCENTCOLOR%%;
-width: 10px;
-border-radius: 3px;
-}
-QSlider::add-page:horizontal{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-height: 10px;
-border-radius: 3px;
-}
-QSlider::add-page:vertical{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-width: 10px;
-border-radius: 3px;
-}
-QSlider::handle:horizontal{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-width: 13px;
-border-radius: 4px;
-}
-QSlider::handle:vertical{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-height: 13px;
-border-radius: 4px;
-}
-QSlider::handle:horizontal:hover, QSlider::handle:vertical:hover{
-border: 1px solid %%ACCENTDISABLECOLOR%%;
-/*background: %%HIGHLIGHTCOLOR%%;*/
-}
-
-QSlider::sub-page:horizontal:disabled {
-background: %%ACCENTDISABLECOLOR%%;
-border-color: %%ACCENTCOLOR%%;
-}
-
-QSlider::add-page:horizontal:disabled {
-background: %%ACCENTDISABLECOLOR%%;
-border-color: %%ACCENTCOLOR%%;
-}
-
-QSlider::handle:horizontal:disabled {
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-}
-
-/* BUTTONS */
-QPushButton{
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%SECONDARYDISABLECOLOR%%, stop: 1 %%SECONDARYCOLOR%%);
- padding: 2px;
- padding-right: 4px;
- color: %%TEXTCOLOR%%;
- }
-
-QToolButton{ /* Assume a flat button for every toolbutton by default*/
- color: %%TEXTCOLOR%%;
- border: 1px solid transparent;
- border-radius: 3px;
- background-color: transparent;
- padding: 1px;
-}
-
- QPushButton:pressed, QPushButton:open, QPushButton:selected, QPushButton:checked, QPushButton:on, QToolButton:pressed, QToolButton:open, QToolButton:selected, QToolButton:checked, QToolButton:on{
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
- margin-top: 2px;
- }
-
-QPushButton:flat, QToolButton:flat{
- background-color: transparent;
- border: 1px solid transparent; /* no border for a flat button */
-}
-
-QPushButton:hover, QToolButton:hover{
- border: 1px solid %%ACCENTCOLOR%%;
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QRadioButton, QCheckBox{
- padding: 2px;
- border: 1px solid transparent;
- border-radius: 3px;
- color: %%TEXTCOLOR%%;
-}
-QRadioButton::hover, QCheckBox:hover{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QRadioButton::indicator, QCheckBox::indicator, QGroupBox::indicator{
- border: 1px solid %%TEXTCOLOR%%;
-}
-QRadioButton::indicator{
- border-radius: 7px;
-}
-QRadioButton::indicator:checked{
- background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:1, fx:0.5, fy:0.5, stop:0 %%TEXTCOLOR%%, stop:0.25 %%TEXTCOLOR%%, stop:0.25001 transparent);
-}
-QCheckBox::indicator:checked, QGroupBox::indicator:checked{
- padding: 1px;
- background-origin: content;
- background-clip: content;
- background: %%TEXTCOLOR%%;
-}
-QCheckBox::indicator:indeterminate, QGroupBox::indicator:indeterminate{
- padding: 1px;
- background-origin: content;
- background-clip: content;
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0.49 transparent, stop: 0.5 %%TEXTCOLOR%%);
-}
-
-/* PROGRESSBAR */
-QProgressBar{
- background-color: %%ALTBASECOLOR%%;
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 5px;
- color: %%TEXTCOLOR%%;
- text-align: center;
- padding: 1px;
-}
- QProgressBar::chunk {
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTCOLOR%%, stop: 1 %%HIGHLIGHTDISABLECOLOR%%);
- /*border: 1px solid %%ACCENTDISABLECOLOR%%;*/
- border-radius: 5px;
- }
-QProgressBar::chunk:vertical{
- margin-left: 2px;
- margin-right: 2px;
-}
-QProgressBar::chunk:horizontal{
- margin-top: 2px;
- margin-bottom: 2px;
-}
-
-QWidget#LuminaBootSplash{
- background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(234, 236, 243, 30), stop:1 rgba(229, 229, 229, 70));
- border-radius: 5px;
-}
-
-LDPlugin#applauncher{
- background-color: transparent;
- border: none;
-}
-LDPlugin#applauncher QToolButton, LDPlugin, LDPlugin#desktopview QListWidget::item{
- background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(234, 236, 243, 30), stop:1 rgba(229, 229, 229, 70));
- border-width: 3px;
- border-style: solid;
- border-radius: 5px;
- border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- color: white;
-}
-
-LDPlugin#applauncher QToolButton:hover, LDPlugin#desktopview QListWidget::item:hover{
- background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(234, 236, 243, 100), stop:1 rgba(229, 229, 229, 150));
- border-width: 3px;
- border-style: solid;
- border-radius: 5px;
- border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QWidget#LuminaPanelColor{
- background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(234, 236, 243, 60), stop:1 rgba(229, 229, 229, 110));
- border-radius: 3px;
-}
-/*Special taskmanager window buttons: based on window state*/
-LTBWidget{
- border: 1px solid transparent;
- border-radius: 3px;
-}
-LTBWidget::menu-indicator{ image: none; } /*disable the menu arrow*/
-LTBWidget#WindowVisible{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 %%PRIMARYCOLOR%%, stop: 1 transparent);
-}
-LTBWidget#WindowInvisible{
- background: transparent;
-}
-LTBWidget#WindowActive{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 transparent);
-}
-LTBWidget#WindowAttention{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 %%HIGHLIGHTCOLOR%%, stop: 1 transparent);
-}
-LTBWidget:hover, LTBWidget#WindowVisible:hover, LTBWidget#WindowInvisible:hover, LTBWidget#WindowActive:hover, LTBWidget#WindowAttention:hover, QToolButton:hover{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 %%HIGHLIGHTCOLOR%%, stop: 1 transparent);
- color: %%TEXTHIGHLIGHTCOLOR%%;
- border-width: 1px;
- border-style: solid;
- border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
- border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255, 255, 255, 30), stop:0.724868 rgba(255, 255, 255, 60), stop:1 rgba(255, 255, 255, 10));
-}
-/* CALENDER WIDGET */
- /* (This is a special hack since there is no official support for stylesheets for this widget) */
- QCalendarWidget QWidget#qt_calendar_navigationbar{
- background-color: %%ALTBASECOLOR%%;
- }
-QCalendarWidget QWidget{
- background-color: %%BASECOLOR%%;
- alternate-background-color: rgba(255, 255, 255, 50);
- color: %%TEXTCOLOR%%;
-}
-QCalendarWidget QAbstractButton{
- background-color: transparent;
-}
-QCalendarWidget QAbstractButton::menu-indicator{
- image: none;
-}
-QCalendarWidget QAbstractItemView{
- selection-background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(234, 236, 243, 20), stop:1 rgba(229, 229, 229, 100));
- selection-color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QCalendarWidget QWidget#qt_calendar_calendarview{
- background-color: rgb(220,220,220);
- border: none;
-}
diff --git a/src-qt5/core/libLumina/themes/Lumina-default.qss.template b/src-qt5/core/libLumina/themes/Lumina-default.qss.template
deleted file mode 100644
index 9f03d4ae..00000000
--- a/src-qt5/core/libLumina/themes/Lumina-default.qss.template
+++ /dev/null
@@ -1,494 +0,0 @@
-/* ALL THE TEMPLATE WIDGETS */
-INHERITS=None
-
-/* ALL THE WIDGETS WITH THE BASE COLOR */
-QMainWindow, QMenu, QDialog, QMessageBox{
- background: %%BASECOLOR%%;
- color: %%TEXTCOLOR%%;
-}
-
-/* ALL THE WIDGETS WITH AN ALTERNATE BASE COLOR */
-QLineEdit, QTextEdit, QTextBrowser, QPlainTextEdit, QSpinBox, QDateEdit, QDateTimeEdit, QTimeEdit, QDoubleSpinBox{
- background: %%ALTBASECOLOR%%;
- color: %%TEXTCOLOR%%;
- border-color: %%ACCENTDISABLECOLOR%%;
- selection-background-color: %%HIGHLIGHTCOLOR%%;
- selection-color: %%TEXTHIGHLIGHTCOLOR%%;
-
-}
-
-/* PAGES OF CONTAINER WIDGETS */
-QStackedWidget .QWidget, QTabWidget .QWidget{
- background: %%ALTBASECOLOR%%;
- color: %%TEXTCOLOR%%;
- border: none;
-}
-QToolBox::tab{
- color: %%TEXTCOLOR%%;
-}
-
-/* MENU WIDGETS */
-QMenuBar, QMenuBar::item,QToolBar{
- background: %%SECONDARYCOLOR%%;
- border: none;
- color: %%TEXTCOLOR%%;
-}
-
-QStatusBar{
- background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 transparent, stop: 0.5 %%SECONDARYCOLOR%%);
- border: none;
- color: %%TEXTCOLOR%%;
-}
-QToolBar:top{
- border-bottom: 1px solid %%ACCENTCOLOR%%;
-}
-QToolBar:bottom{
- border-top: 1px solid %%ACCENTCOLOR%%;
-}
-QToolBar:left{
- border-right: 1px solid %%ACCENTCOLOR%%;
-}
-QToolBar:right{
- border-left: 1px solid %%ACCENTCOLOR%%;
-}
-
-QMenuBar::item{
- background: transparent; /*Use the menu bar color*/
- padding-left: 4px;
- padding-right: 2px;
-}
-
-QMenuBar::item:selected, QMenuBar::item:pressed, QMenu::item:selected{
-background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
-color: %%TEXTHIGHLIGHTCOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-}
-QMenuBar::item:disabled{
- color: %%TEXTDISABLECOLOR%%;
-}
-
-QMenu::item{
- border: 2px solid #808080;
-}
-
-QMenu::item{
- background: transparent;
- border: 1px solid transparent;
- color: %%TEXTCOLOR%%;
- padding: 4px 30px 4px 20px;
- margin-left: 3px;
- margin-right: 3px;
-}
-
-/* TAB WIDGETS */
-/*QTabBar{
- Custom Font settings need to be here and NOT in the ::tab fields,
- otherwise it will break auto-scaling of the tab sizes to fit the text
-}*/
-QTabBar::tab {
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%SECONDARYDISABLECOLOR%%, stop: 1 %%SECONDARYCOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
- padding: 2px;
- color: %%TEXTCOLOR%%;
-}
-QTabBar::tab:top{
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- max-width: 100em;
- min-width: 0em;
-}
-QTabBar::tab:bottom{
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
- max-width: 100em;
- min-width: 0em;
-}
-/* left/right tab indicators appear to be reversed in Qt*/
-QTabBar::tab:right{
- border-top-left-radius: 4px;
- border-bottom-left-radius: 4px;
- max-height: 100em;
- min-height: 0em;
-}
-QTabBar::tab:left{
- border-top-right-radius: 4px;
- border-bottom-right-radius: 4px;
- max-height: 100em;
- min-height: 0em;
-}
-QTabBar::tab:selected{
- background: %%HIGHLIGHTDISABLECOLOR%%;
-}
-QTabBar::tab:hover {
- background: %%HIGHLIGHTCOLOR%%;
- border: 1px solid %%ACCENTDISABLECOLOR%%;
- }
-
-QTabBar::tab:!selected:top {
- margin-top: 4px;
-}
-QTabBar::tab:!selected:bottom{
- margin-bottom: 4px;
-}
-QTabBar::tab:!selected:right{
- margin-left: 4px;
-}
-QTabBar::tab:!selected:left{
- margin-right: 4px;
-}
-
-/* FRAME WIDGETS */
-QToolTip{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%BASECOLOR%%, stop: 1 %%ALTBASECOLOR%%);
- border-radius: 3px;
- border: 1px solid %%ACCENTCOLOR%%;
- padding: 1px;
- color: %%TEXTCOLOR%%;
-}
-
-QLabel{
- background: transparent;
- border: none;
- color: %%TEXTCOLOR%%;
-}
-QAbstractButton::disabled{
- color: %%TEXTDISABLECOLOR%%;
-}
-
-/* GROUP BOX */
-QGroupBox{
- background-color: transparent;
- border-color: %%ACCENTCOLOR%%;
- border-radius: 5px;
- margin-top: 2ex;
- font-weight: bold;
-}
-QGroupBox::title{
- subcontrol-origin: margin;
- subcontrol-position: top center;
- padding: 0 3px;
- background: transparent;
- /*border: none;*/
- color: %%TEXTCOLOR%%;
-}
-
-/* COMBO BOX */
-QComboBox{
- /*border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
- padding: 1px 18px 1px 3px;*/
- color: %%TEXTCOLOR%%;
- background: %%ALTBASECOLOR%%;
- selection-background-color: %%HIGHLIGHTCOLOR%%;
- }
-
-
-/* VIEW WIDGETS */
-QTreeView, QListView{
- background: %%ALTBASECOLOR%%;
- alternate-background-color: %%BASECOLOR%%;
- /*selection-background-color: %%SECONDARYCOLOR%%;*/
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
- /*show-decoration-selected: 1;*/
- color: %%TEXTCOLOR%%;
- selection-color: %%TEXTCOLOR%%;
-}
-
-QTreeView:focus, QListView:focus{
- border: 1px solid %%HIGHLIGHTDISABLECOLOR%%;
-}
-
-/*
-QTreeView::item and QListView::item unneccessary:
-Already set though parentage and causes usage errors if set manually
-*/
-
-/*QTreeView::item:selected, QListView::item:selected{
- background: %%SECONDARYDISABLECOLOR%%;
- border-color: %%ACCENTCOLOR%%;
- color: %%TEXTCOLOR%%;
-}*/
-
-QTreeView::item:hover, QListView::item:hover{
- background: %%HIGHLIGHTDISABLECOLOR%%;
-}
-QTreeView::item:selected:hover, QListView::item:selected:hover{
- background: %%HIGHLIGHTDISABLECOLOR%%;
-}
-QTreeView::item:selected, QListView::item:selected{
- background: %%SECONDARYDISABLECOLOR%%;
-}
-QTreeView::item:selected:focus, QListView::item:selected:focus{
- background: %%SECONDARYCOLOR%%;
-}
-QHeaderView{
- background: %%HIGHLIGHTDISABLECOLOR%%;
- color: %%TEXTHIGHLIGHTCOLOR%%;
- border: none;
- border-top-left-radius: 3px; /*match the list/tree view widgets*/
- border-top-right-radius: 3px; /*match the list/tree view widgets*/
-}
-QHeaderView::section{
- background: %%HIGHLIGHTDISABLECOLOR%%; /*QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%PRIMARYDISABLECOLOR%%, stop: 1 %%PRIMARYCOLOR%%);*/
- color: %%TEXTHIGHLIGHTCOLOR%%;
- border-color: %%ACCENTCOLOR%%;
- padding: 1px;
- padding-left: 4px;
-}
-QHeaderView::section:hover{
- background: %%PRIMARYCOLOR%%;
- border-color: %%ACCENTDISABLECOLOR%%;
- color: %%TEXTCOLOR%%;
-}
-
-/* SCROLLBARS (NOTE: Changing 1 subcontrol means you have to change all of them)*/
-QScrollBar{
- background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 %%SECONDARYCOLOR%%, stop: 1 %%SECONDARYDISABLECOLOR%%);
- /*border: 1px solid %%ACCENTCOLOR%%;*/
-}
-QScrollBar:horizontal{
- margin: 0px 20px 0px 20px;
-}
-QScrollBar:vertical{
- margin: 20px 0px 20px 0px;
-}
-QScrollBar::sub-page, QScrollBar::add-page{
- background: %%BASECOLOR%%;
- border: 1px solid %%ACCENTCOLOR%%;
-}
-QScrollBar::sub-page:vertical{
- border-bottom: none;
-}
-QScrollBar::add-page:vertical{
- border-top: none;
-}
-QScrollBar::sub-page:horizontal{
- border-right: none;
-}
-QScrollBar::add-page:horizontal{
- border-left: none;
-}
-QScrollBar::handle{
- background: QLinearGradient(x1: 0, y1: -0.3, x2: 0, y2: 1.3, stop: 0 %%BASECOLOR%%, stop: 0.5 %%SECONDARYCOLOR%%, stop: 1 %%BASECOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
-}
-QScrollBar::handle:hover, QScrollBar::add-line:hover, QScrollBar::sub-line:hover{
- background: %%HIGHLIGHTCOLOR%%;
-}
-QScrollBar::add-line{
- background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 %%SECONDARYDISABLECOLOR%%, stop: 1 %%SECONDARYCOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
-subcontrol-position: bottom right;
-subcontrol-origin: margin;
-}
-QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical{
-height: 20px;
-}
-QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal{
-width: 20px;
-}
-QScrollBar::sub-line{
- background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 %%SECONDARYCOLOR%%, stop: 1 %%SECONDARYDISABLECOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
-subcontrol-position: top left;
-subcontrol-origin: margin;
-height: 20px;
-}
-/* SLIDERS */
-QSlider::groove:horizontal {
-border: 1px solid %%ACCENTCOLOR%%;
-background: %%ALTBASECOLOR%%;
-height: 10px;
-border-radius: 3px;
-}
-QSlider::groove:vertical {
-border: 1px solid %%ACCENTCOLOR%%;
-background: %%ALTBASECOLOR%%;
-width: 10px;
-border-radius: 3px;
-}
-QSlider::sub-page:horizontal {
-background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1,
- stop: 0 %%HIGHLIGHTCOLOR%%, stop: 1 %%HIGHLIGHTDISABLECOLOR%%);
-border: 1px solid %%ACCENTCOLOR%%;
-height: 10px;
-border-radius: 3px;
-}
-QSlider::sub-page:vertical {
-background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1,
- stop: 0 %%HIGHLIGHTCOLOR%%, stop: 1 %%HIGHLIGHTDISABLECOLOR%%);
-border: 1px solid %%ACCENTCOLOR%%;
-width: 10px;
-border-radius: 3px;
-}
-QSlider::add-page:horizontal{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-height: 10px;
-border-radius: 3px;
-}
-QSlider::add-page:vertical{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-width: 10px;
-border-radius: 3px;
-}
-QSlider::handle:horizontal{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-width: 13px;
-border-radius: 4px;
-}
-QSlider::handle:vertical{
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-height: 13px;
-border-radius: 4px;
-}
-QSlider::handle:horizontal:hover, QSlider::handle:vertical:hover{
-border: 1px solid %%ACCENTDISABLECOLOR%%;
-/*background: %%HIGHLIGHTCOLOR%%;*/
-}
-
-QSlider::sub-page:horizontal:disabled {
-background: %%ACCENTDISABLECOLOR%%;
-border-color: %%ACCENTCOLOR%%;
-}
-
-QSlider::add-page:horizontal:disabled {
-background: %%ACCENTDISABLECOLOR%%;
-border-color: %%ACCENTCOLOR%%;
-}
-
-QSlider::handle:horizontal:disabled {
-background: %%ALTBASECOLOR%%;
-border: 1px solid %%ACCENTCOLOR%%;
-}
-
-/* BUTTONS */
-QPushButton{
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%SECONDARYDISABLECOLOR%%, stop: 1 %%SECONDARYCOLOR%%);
- padding: 2px;
- padding-right: 4px;
- color: %%TEXTCOLOR%%;
- }
-
-QToolButton{ /* Assume a flat button for every toolbutton by default*/
- color: %%TEXTCOLOR%%;
- border: 1px solid transparent;
- border-radius: 3px;
- background-color: transparent;
- padding: 1px;
-}
-
- QPushButton:pressed, QPushButton:open, QPushButton:selected, QPushButton:checked, QPushButton:on, QToolButton:pressed, QToolButton:open, QToolButton:selected, QToolButton:checked, QToolButton:on{
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
- margin-top: 2px;
- }
-
-QPushButton:flat, QToolButton:flat{
- background-color: transparent;
- border: 1px solid transparent; /* no border for a flat button */
-}
-
-QPushButton:hover, QToolButton:hover{
- border: 1px solid %%ACCENTCOLOR%%;
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QRadioButton, QCheckBox{
- padding: 2px;
- border: 1px solid transparent;
- border-radius: 3px;
- color: %%TEXTCOLOR%%;
-}
-QRadioButton::hover, QCheckBox:hover{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);
- border: 1px solid %%ACCENTCOLOR%%;
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QRadioButton::indicator, QCheckBox::indicator, QGroupBox::indicator{
- border: 1px solid %%TEXTCOLOR%%;
-}
-QRadioButton::indicator{
- border-radius: 7px;
-}
-QRadioButton::indicator:checked{
- background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:1, fx:0.5, fy:0.5, stop:0 %%TEXTCOLOR%%, stop:0.25 %%TEXTCOLOR%%, stop:0.25001 transparent);
-}
-QCheckBox::indicator:checked, QGroupBox::indicator:checked{
- padding: 1px;
- background-origin: content;
- background-clip: content;
- background: %%TEXTCOLOR%%;
-}
-QCheckBox::indicator:indeterminate, QGroupBox::indicator:indeterminate{
- padding: 1px;
- background-origin: content;
- background-clip: content;
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0.49 transparent, stop: 0.5 %%TEXTCOLOR%%);
-}
-
-/* PROGRESSBAR */
-QProgressBar{
- background-color: %%ALTBASECOLOR%%;
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 5px;
- color: %%TEXTCOLOR%%;
- text-align: center;
- padding: 1px;
-}
- QProgressBar::chunk {
- background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%HIGHLIGHTCOLOR%%, stop: 1 %%HIGHLIGHTDISABLECOLOR%%);
- /*border: 1px solid %%ACCENTDISABLECOLOR%%;*/
- border-radius: 5px;
- }
-QProgressBar::chunk:vertical{
- margin-left: 2px;
- margin-right: 2px;
-}
-QProgressBar::chunk:horizontal{
- margin-top: 2px;
- margin-bottom: 2px;
-}
-
- /* SPINBOX */
-/*QAbstractSpinBox{
- background-color: %%ALTBASECOLOR%%;
- border: 1px solid %%ACCENTCOLOR%%;
- border-radius: 3px;
-}
-QAbstractSpinBox:disabled{
- color: %%ACCENTDISABLECOLOR%%;
-}*/
-/*QAbstractSpinBox::down-button{
- subcontrol-origin: border;
- subcontrol-position: left;
- width: 16px;
- border-width: 1px;
-}
-QAbstractSpinBox::up-button{
- subcontrol-origin: border;
- subcontrol-position: right;
- width: 16px;
- border-width: 1px;
-}*/
-/*
-QAbstractSpinBox::down-arrow{
- border-image: url(":/trolltech/styles/commonstyle/images/left-16.png");
- width: 16px;
- height: 16px;
-}
-QAbstractSpinBox::down-arrow:disabled, QAbstractSpinBox::up-arrow:disabled, QAbstractSpinBox::down-arrow:off, QAbstractSpinBox::up-arrow:off{
- border-image: url(:/none);
-}
-QAbstractSpinBox::up-arrow{
- border-image: url(":/trolltech/styles/commonstyle/images/right-16.png");
- width: 16px;
- height: 16px;
-}*/
diff --git a/src-qt5/core/libLumina/themes/None.qss.template b/src-qt5/core/libLumina/themes/None.qss.template
deleted file mode 100644
index 7d923b1e..00000000
--- a/src-qt5/core/libLumina/themes/None.qss.template
+++ /dev/null
@@ -1,118 +0,0 @@
-/* This is a blank stylesheet to disable the Lumina Themes almost entirely*/
-QWidget{
- font-family: %%FONT%%;
- font-size: %%FONTSIZE%%;
-}
-/* Set the panel appearance for this theme (unless manually customized) */
-QWidget#LuminaPanelColor{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 %%PRIMARYCOLOR%%, stop: 1 %%PRIMARYDISABLECOLOR%%);
- border-radius: 5px;
-}
-QWidget#LuminaBootSplash{
- background: %%BASECOLOR%%;
- border-radius: 5px;
-}
-
-/* Set the default canvas appearance for Lumina desktop plugins*/
-/* Default to a non-transparent background for all desktop plugins*/
-LDPlugin{
- background: %%BASECOLOR%%;
- border-radius: 5px;
-}
-/* Now specify which plugins should have a transparent background */
-LDPlugin#applauncher, LDPlugin#desktopview{
- background: transparent;
- border-radius: 5px;
-}
-
-LDPlugin#applauncher QToolButton{
-background: transparent;
- border: none;
- border-radius: 5px;
- color: white;
-}
-LDPlugin#applauncher QToolButton:hover{
- background: %%PRIMARYDISABLECOLOR%%;
- border: none;
- border-radius: 5px;
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-
-LDPlugin#desktopview QListWidget{
- background: transparent;
- border: 1px solid transparent;
-}
-LDPlugin#desktopview QListWidget::item{
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 transparent,
- stop: 0.7 transparent,
- stop: 1.0 %%PRIMARYDISABLECOLOR%%);
- border-radius: 5px;
- color: %%TEXTCOLOR%%;
-}
-
-LDPlugin#desktopview QListWidget::item:hover{
- background: %%PRIMARYDISABLECOLOR%%;
- border-radius: 5px;
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-/*For the special widgets on the user button*/
-UserItemWidget, ItemWidget{
- background: transparent;
- border-radius: 3px;
-}
-UserItemWidget:hover, ItemWidget:hover{
- background: %%HIGHLIGHTCOLOR%%;
- color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-
-/*Special taskmanager window buttons: based on window state*/
-LTBWidget{
- border: 1px solid transparent;
- border-radius: 3px;
-}
-LTBWidget::menu-indicator{ image: none; } /*disable the menu arrow*/
-LTBWidget#WindowVisible{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.3 %%SECONDARYCOLOR%%, stop: 1 transparent);
-}
-LTBWidget#WindowInvisible{
- /* Primary color is used for the panel appearance, so use that to make it disappear*/
- background: transparent;
-}
-LTBWidget#WindowActive{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.3 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 transparent);
-}
-LTBWidget#WindowAttention{
- background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.3 %%HIGHLIGHTCOLOR%%, stop: 1 transparent);
-}
-LTBWidget:hover, LTBWidget#WindowVisible:hover, LTBWidget#WindowInvisible:hover, LTBWidget#WindowActive:hover, LTBWidget#WindowAttention:hover{
- background: %%HIGHLIGHTCOLOR%%;
- color: %%TEXTHIGHLIGHTCOLOR%%;
- border: 1px solid %%ACCENTCOLOR%%;
-}
-
-/* CALENDER WIDGET */
- /* (This is a special hack since there is no official support for stylesheets for this widget) */
- QCalendarWidget QWidget#qt_calendar_navigationbar{
- background-color: %%ALTBASECOLOR%%;
- }
-QCalendarWidget QWidget{
- background-color: %%BASECOLOR%%;
- alternate-background-color: %%HIGHLIGHTDISABLECOLOR%%;
- color: %%TEXTCOLOR%%;
-}
-QCalendarWidget QAbstractButton{
- background-color: transparent;
-}
-QCalendarWidget QAbstractButton::menu-indicator{
- image: none;
-}
-QCalendarWidget QAbstractItemView{
- background-color: %%SECONDARYCOLOR%%;
- selection-background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 %%HIGHLIGHTDISABLECOLOR%%, stop: 1 %%HIGHLIGHTCOLOR%%);;
- selection-color: %%TEXTHIGHLIGHTCOLOR%%;
-}
-QCalendarWidget QWidget#qt_calendar_calendarview{
- background-color: %%ALTBASECOLOR%%;
- border: none;
-} \ No newline at end of file
diff --git a/src-qt5/core/libLumina/xtrafiles/globs2 b/src-qt5/core/libLumina/xtrafiles/globs2
deleted file mode 100644
index 0a783316..00000000
--- a/src-qt5/core/libLumina/xtrafiles/globs2
+++ /dev/null
@@ -1,991 +0,0 @@
-# Fallback "globs2" file from the FreeDesktop mimetype database (9/23/16)
-# This is only used if the official database cannot be found on the system
-80:application/x-cd-image:*.iso
-80:application/x-doom-wad:*.wad
-50:text/x-vala:*.vala
-50:application/x-nes-rom:*.nez
-50:audio/ac3:*.ac3
-50:application/x-mswrite:*.wri
-50:application/smil+xml:*.smil
-50:text/x-verilog:*.v
-50:application/x-qpress:*.qp
-50:image/x-exr:*.exr
-50:application/x-compress:*.z
-50:image/x-jng:*.jng
-50:application/oda:*.oda
-50:application/vnd.oasis.opendocument.database:*.odb
-50:application/vnd.sun.xml.base:*.odb
-50:application/vnd.oasis.opendocument.chart:*.odc
-50:text/vtt:*.vtt
-50:application/x-xz-compressed-tar:*.txz
-50:application/vnd.oasis.opendocument.formula:*.odf
-50:application/vnd.oasis.opendocument.formula:*.odf
-50:application/vnd.oasis.opendocument.graphics:*.odg
-50:application/vnd.oasis.opendocument.graphics:*.odg
-50:text/x-ldif:*.ldif
-50:application/vnd.oasis.opendocument.image:*.odi
-50:image/jp2:*.jp2
-50:application/x-oleo:*.oleo
-50:application/oxps:*.xps
-50:application/vnd.oasis.opendocument.text-master:*.odm
-50:application/vnd.oasis.opendocument.text-master:*.odm
-50:application/x-ruby:*.rb
-50:audio/vnd.rn-realaudio:*.ra
-50:application/x-mimearchive:*.mht
-50:application/vnd.oasis.opendocument.presentation:*.odp
-50:application/vnd.oasis.opendocument.presentation:*.odp
-50:application/x-raw-disk-image-xz-compressed:*.raw-disk-image.xz
-50:application/vnd.oasis.opendocument.spreadsheet:*.ods
-50:application/vnd.oasis.opendocument.spreadsheet:*.ods
-50:application/vnd.oasis.opendocument.text:*.odt
-50:application/vnd.oasis.opendocument.text:*.odt
-50:image/x-portable-bitmap:*.pbm
-50:application/x-egon:*.egon
-50:application/x-font-pcf:*.pcf.z
-50:application/x-xliff:*.xliff
-50:application/vnd.rn-realmedia:*.rm
-50:application/x-abiword:*.abw
-50:image/vnd.rn-realpix:*.rp
-50:image/x-sigma-x3f:*.x3f
-50:video/webm:*.webm
-50:text/rust:*.rs
-50:text/vnd.rn-realtext:*.rt
-50:image/webp:*.webp
-50:application/x-cpio:*.cpio
-50:audio/midi:*.mid
-50:application/x-mif:*.mif
-50:video/vnd.rn-realvideo:*.rv
-50:application/vnd.google-earth.kml+xml:*.kml
-50:image/x-3ds:*.3ds
-50:image/x-photo-cd:*.pcd
-50:application/x-pc-engine-rom:*.pce
-50:application/x-font-pcf:*.pcf
-50:application/x-cisco-vpn-settings:*.pcf
-50:model/vrml:*.wrl
-50:text/x-fortran:*.f95
-50:text/plain:*.txt
-50:image/x-xpixmap:*.xpm
-50:application/vnd.hp-pcl:*.pcl
-50:application/x-trash:*.bak
-50:application/vnd.openxmlformats-officedocument.presentationml.template:*.potx
-50:application/vnd.openxmlformats-officedocument.presentationml.template:*.potx
-50:application/x-sms-rom:*.sg
-50:application/x-shellscript:*.sh
-50:model/vrml:*.vrml
-50:text/vcard:*.vcard
-50:image/x-skencil:*.sk
-50:image/x-pict:*.pct
-50:video/3gpp2:*.3g2
-50:text/x-vala:*.vapi
-50:application/x-sharedlib:*.so
-50:application/x-tzo:*.tzo
-50:video/x-javafx:*.fxm
-50:image/jpeg:*.jpe
-50:audio/x-aifc:*.aifc
-50:application/x-lzma-compressed-tar:*.tar.lzma
-50:x-epoc/x-sisx-app:*.sisx
-50:audio/x-aiff:*.aiff
-50:audio/x-aifc:*.aiffc
-50:image/jp2:*.jpf
-50:application/x-hdf:*.hdf4
-50:application/x-hdf:*.hdf5
-50:application/x-aportisdoc:*.pdb
-50:application/vnd.palm:*.pdb
-50:application/x-aportisdoc:*.pdc
-50:application/x-profile:gmon.out
-50:application/x-jbuilder-project:*.jpr
-50:application/pdf:*.pdf
-50:application/x-bzpdf:*.pdf.bz2
-50:application/x-theme:*.theme
-50:image/jpeg:*.jpg
-50:application/x-raw-disk-image-xz-compressed:*.img.xz
-50:application/x-jbuilder-project:*.jpx
-50:image/jp2:*.jpx
-50:text/x-svsrc:*.sv
-50:image/x-quicktime:*.qtif
-50:image/x-kodak-k25:*.k25
-50:text/x-scheme:*.ss
-50:application/vnd.openxmlformats-officedocument.presentationml.presentation:*.pptx
-50:application/vnd.openxmlformats-officedocument.presentationml.presentation:*.pptx
-50:application/x-ace:*.ace
-50:image/vnd.zbrush.pcx:*.pcx
-50:text/x-adasrc:*.ads
-50:text/x-tcl:*.tk
-50:text/x-changelog:changelog
-50:audio/flac:*.flac
-50:text/x-adasrc:*.adb
-50:text/html:*.htm
-50:text/x-google-video-pointer:*.gvp
-50:text/troff:*.tr
-50:audio/x-matroska:*.mka
-50:text/vnd.trolltech.linguist:*.ts
-50:video/mp2t:*.ts
-50:application/x-cb7:*.cb7
-50:text/x-vhdl:*.vhdl
-50:audio/ogg:*.oga
-50:audio/x-vorbis+ogg:*.oga
-50:audio/x-flac+ogg:*.oga
-50:audio/x-speex+ogg:*.oga
-50:application/xslt+xml:*.xsl
-50:application/x-saturn-rom:*.iso
-50:application/x-wii-rom:*.iso
-50:application/x-gamecube-rom:*.iso
-50:application/atom+xml:*.atom
-50:video/3gpp:*.3ga
-50:application/x-kontour:*.kon
-50:audio/ogg:*.ogg
-50:video/ogg:*.ogg
-50:audio/x-vorbis+ogg:*.ogg
-50:audio/x-flac+ogg:*.ogg
-50:audio/x-speex+ogg:*.ogg
-50:video/x-theora+ogg:*.ogg
-50:image/x-pentax-pef:*.pef
-50:application/vnd.ms-cab-compressed:*.cab
-50:text/markdown:*.mkd
-50:application/rdf+xml:*.rdfs
-50:application/x-zoo:*.zoo
-50:video/x-ogm+ogg:*.ogm
-50:text/x-rpm-spec:*.spec
-50:application/x-x509-ca-cert:*.pem
-50:video/3gpp2:*.3gp2
-50:application/x-xpinstall:*.xpi
-50:video/x-matroska:*.mkv
-50:application/ram:*.ram
-50:application/x-designer:*.ui
-50:application/x-gtk-builder:*.ui
-50:audio/x-wavpack-correction:*.wvc
-50:video/ogg:*.ogv
-50:application/vnd.tcpdump.pcap:*.cap
-50:application/ogg:*.ogx
-50:application/x-rar:*.rar
-50:application/x-xbel:*.xbel
-50:application/jrd+json:*.jrd
-50:application/vnd.ms-tnef:*.tnef
-50:image/x-panasonic-raw:*.raw
-50:video/3gpp:*.3gp
-50:audio/vnd.rn-realaudio:*.rax
-50:text/x-python:*.wsgi
-50:application/x-7z-compressed:*.7z
-50:audio/x-wavpack:*.wvp
-50:image/x-cmu-raster:*.ras
-50:application/x-font-type1:*.pfa
-50:application/x-font-type1:*.pfb
-50:application/x-kpovmodeler:*.kpm
-50:text/x-ocaml:*.mli
-50:image/x-fuji-raf:*.raf
-50:application/ld+json:*.jsonld
-50:audio/x-ms-asx:*.wvx
-50:application/x-kpresenter:*.kpr
-50:application/x-font-bdf:*.bdf
-50:application/x-cd-image:*.iso9660
-50:application/x-kpresenter:*.kpt
-50:text/x-eiffel:*.e
-50:application/x-font-afm:*.afm
-50:text/x-nfo:*.nfo
-50:image/x-compressed-xcf:*.xcf.bz2
-50:text/x-cobol:*.cbl
-50:video/mp2t:*.bdm
-50:video/quicktime:*.moov
-50:text/x-texinfo:*.texi
-50:application/x-wwf:*.wwf
-50:application/x-cbr:*.cbr
-50:application/pkcs12:*.pfx
-50:application/metalink+xml:*.metalink
-50:application/x-cbt:*.cbt
-50:video/mpeg:[0-9][0-9][0-9].vdr
-50:application/x-perl:*.perl
-50:application/vnd.mozilla.xul+xml:*.xul
-50:application/x-cbz:*.cbz
-50:text/x-log:*.log
-50:application/x-smaf:*.mmf
-50:application/javascript:*.jsm
-50:text/x-meson:meson_options.txt
-50:application/x-gba-rom:*.agb
-50:application/x-hwt:*.hwt
-50:text/x-iptables:*.iptables
-50:application/mathml+xml:*.mml
-50:application/oxps:*.oxps
-50:video/mp2t:*.bdmv
-50:video/3gpp:*.3gpp
-50:application/x-docbook+xml:*.docbook
-50:audio/x-mod:*.m15
-50:application/x-chess-pgn:*.pgn
-50:audio/x-mo3:*.mo3
-50:application/x-bcpio:*.bcpio
-50:application/pgp-encrypted:*.pgp
-50:application/pgp-keys:*.pgp
-50:application/pgp-signature:*.pgp
-50:application/x-bzip-compressed-tar:*.tar.bz
-50:application/x-amipro:*.sam
-50:application/vnd.google-earth.kmz:*.kmz
-50:video/quicktime:*.qt
-50:image/x-portable-graymap:*.pgm
-50:application/x-krita:*.kra
-50:application/x-dar:*.dar
-50:application/vnd.wordperfect:*.wp
-50:image/vnd.wap.wbmp:*.wbmp
-50:application/x-spss-sav:*.sav
-50:text/x-scons:sconstruct
-50:video/x-msvideo:*.divx
-50:audio/x-wavpack:*.wv
-50:application/xhtml+xml:*.xhtml
-50:video/x-mng:*.mng
-50:text/x-uuencode:*.uue
-50:image/x-pict:*.pict1
-50:image/x-pict:*.pict2
-50:image/x-bzeps:*.eps.bz2
-50:application/x-n64-rom:*.z64
-50:audio/x-musepack:*.mp+
-50:text/x-c++hdr:*.hxx
-50:application/rdf+xml:*.rdf
-50:application/x-netcdf:*.cdf
-50:application/vnd.rn-realmedia:*.rmvb
-50:application/x-dbf:*.dbf
-50:audio/mp2:*.mp2
-50:video/mpeg:*.mp2
-50:application/vnd.lotus-1-2-3:*.123
-50:application/x-php:*.php
-50:application/x-font-pcf:*.pcf.gz
-50:audio/mpeg:*.mp3
-50:video/mp4:*.mp4
-50:text/x-python:*.py
-50:audio/x-minipsf:*.minipsf
-50:audio/x-xm:*.xm
-50:application/vnd.corel-draw:*.cdr
-50:audio/x-xi:*.xi
-50:image/x-xwindowdump:*.xwd
-50:application/x-desktop:*.desktop
-50:application/x-bzip-compressed-tar:*.tb2
-50:text/x-tex:*.latex
-50:text/x-moc:*.moc
-50:audio/x-mod:*.mod
-50:application/vnd.openxmlformats-officedocument.presentationml.slideshow:*.ppsx
-50:application/x-docbook+xml:*.dbk
-50:text/x-mof:*.mof
-50:application/x-xz:*.xz
-50:application/vnd.ms-excel.sheet.binary.macroEnabled.12:*.xlsb
-50:application/vnd.ms-excel.sheet.binary.macroenabled.12:*.xlsb
-50:application/x-kspread:*.ksp
-50:audio/x-aiff:*.aif
-50:text/markdown:*.markdown
-50:text/vcard:*.gcrd
-50:application/x-php:*.php3
-50:application/x-php:*.php4
-50:application/x-php:*.php5
-50:text/x-reject:*.rej
-50:application/vnd.ms-excel.sheet.macroEnabled.12:*.xlsm
-50:application/vnd.ms-excel.sheet.macroenabled.12:*.xlsm
-50:video/mp2t:*.m2ts
-50:text/x-ms-regedit:*.reg
-50:application/vnd.openxmlformats-officedocument.wordprocessingml.document:*.docx
-50:application/vnd.openxmlformats-officedocument.wordprocessingml.document:*.docx
-50:text/x-dcl:*.dcl
-50:application/dicom:*.dcm
-50:video/vnd.mpegurl:*.m1u
-50:text/x-scheme:*.scm
-50:application/x-qtiplot:*.qti.gz
-50:application/pkix-cert:*.cer
-50:image/x-kodak-dcr:*.dcr
-50:application/x-tar:*.tar
-50:text/x-patch:*.patch
-50:text/x-scala:*.scala
-50:image/vnd.djvu:*.djvu
-50:audio/x-musepack:*.mpc
-50:video/quicktime:*.mov
-50:video/mpeg:*.mpe
-50:application/x-tarz:*.taz
-50:application/x-trash:*.old
-50:video/mpeg:*.mpg
-50:video/mp2t:*.mpl
-50:application/vnd.stardivision.draw:*.sda
-50:application/vnd.stardivision.calc:*.sdc
-50:text/x-mrml:*.mrml
-50:application/vnd.stardivision.impress:*.sdd
-50:audio/x-musepack:*.mpp
-50:application/vnd.ms-excel.template.macroEnabled.12:*.xltm
-50:application/vnd.ms-excel.template.macroenabled.12:*.xltm
-50:video/mp4:*.lrv
-50:video/mp2t:*.m2t
-50:image/x-gzeps:*.epsf.gz
-50:application/x-lrzip:*.lrz
-50:video/3gpp2:*.3gpp2
-50:image/jpeg:*.jpeg
-50:application/mbox:*.mbox
-50:application/vnd.stardivision.impress:*.sdp
-50:application/sdp:*.sdp
-50:audio/x-mpegurl:*.m3u8
-50:application/vnd.apple.mpegurl:*.m3u8
-50:application/vnd.stardivision.chart:*.sds
-50:image/x-dds:*.dds
-50:application/x-kugar:*.kud
-50:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:*.xlsx
-50:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:*.xlsx
-50:application/vnd.stardivision.writer:*.sdw
-50:application/x-fictionbook+xml:*.fb2
-50:application/x-xzpdf:*.pdf.xz
-50:text/x-copying:copying
-50:application/x-bzip-compressed-tar:*.tbz
-50:application/zlib:*.zz
-50:application/x-lrzip-compressed-tar:*.tar.lrz
-50:text/x-bibtex:*.bib
-50:image/x-rgb:*.rgb
-50:application/x-gzpostscript:*.ps.gz
-50:application/x-gameboy-rom:*.cgb
-50:application/x-php:*.phps
-50:application/vnd.debian.binary-package:*.deb
-50:application/x-qw:*.qif
-50:image/x-quicktime:*.qif
-50:audio/x-mpegurl:*.m3u
-50:application/vnd.apple.mpegurl:*.m3u
-50:application/vnd.openxmlformats-officedocument.spreadsheetml.template:*.xltx
-50:application/vnd.openxmlformats-officedocument.spreadsheetml.template:*.xltx
-50:text/x-c++src:*.c++
-50:application/x-ccmx:*.ccmx
-50:application/vnd.coffeescript:*.coffee
-50:application/octet-stream:*.bin
-50:application/x-saturn-rom:*.bin
-50:application/smil+xml:*.kino
-50:application/pgp-keys:*.pkr
-50:application/vnd.ms-visio.stencil.macroEnabled.main+xml:*.vssm
-50:image/cgm:*.cgm
-50:text/x-mup:*.not
-50:text/x-tcl:*.tcl
-50:audio/mp4:*.m4a
-50:application/x-x509-ca-cert:*.der
-50:audio/x-m4b:*.m4b
-50:application/x-pagemaker:*.pm6
-50:text/x-meson:meson.build
-50:application/x-sami:*.sami
-50:application/vnd.ms-visio.stencil.main+xml:*.vssx
-50:audio/x-iriver-pla:*.pla
-50:text/x-mrml:*.mrl
-50:application/vnd.nintendo.snes.rom:*.sfc
-50:application/xml:*.xsd
-50:video/mp4:*.m4v
-50:video/mp2t:*.mpls
-50:application/x-planperfect:*.pln
-50:text/x-tex:*.ltx
-50:image/x-minolta-mrw:*.mrw
-50:application/metalink4+xml:*.meta4
-50:application/vnd.ms-powerpoint.addin.macroEnabled.12:*.ppam
-50:application/vnd.ms-visio.template.macroEnabled.main+xml:*.vstm
-50:application/x-compressed-tar:*.tar.gz
-50:audio/x-scpls:*.pls
-50:application/vnd.ms-htmlhelp:*.chm
-50:application/x-hwp:*.hwp
-50:application/x-abiword:*.abw.gz
-50:application/x-alz:*.alz
-50:application/x-kword:*.kwd
-50:text/x-lua:*.lua
-50:application/vnd.ms-visio.template.main+xml:*.vstx
-50:video/vnd.mpegurl:*.m4u
-50:text/x-ooc:*.ooc
-50:application/x-msi:*.msi
-50:application/x-kexiproject-sqlite2:*.kexi
-50:application/x-kexiproject-sqlite3:*.kexi
-50:video/x-anim:*.anim[1-9j]
-50:application/x-pagemaker:*.pmd
-50:application/x-abiword:*.zabw
-50:application/x-gameboy-rom:*.sgb
-50:application/x-kword:*.kwt
-50:application/x-go-sgf:*.sgf
-50:application/pkcs10:*.p10
-50:image/x-sgi:*.sgi
-50:application/pkcs12:*.p12
-50:application/x-blender:*.blender
-50:application/vnd.stardivision.writer:*.sgl
-50:application/x-msx-rom:*.msx
-50:application/x-dia-shape:*.shape
-50:application/x-blender:*.blend
-50:application/x-blender:*.blend
-50:application/x-mimearchive:*.mhtml
-50:audio/midi:*.midi
-50:application/x-java-jnlp-file:*.jnlp
-50:text/x-cmake:cmakelists.txt
-50:audio/x-amzxml:*.amz
-50:image/x-tga:*.tpic
-50:audio/AMR:*.amr
-50:text/x-makefile:makefile
-50:text/x-scons:sconscript.*
-50:text/x-tex:*.tex
-50:application/vnd.oasis.opendocument.graphics-flat-xml:*.fodg
-50:application/vnd.oasis.opendocument.graphics-flat-xml:*.fodg
-50:text/sgml:*.sgm
-50:application/x-amiga-disk-format:*.adf
-50:image/x-msod:*.msod
-50:audio/x-mod:*.mtm
-50:image/png:*.png
-50:application/vnd.oasis.opendocument.presentation-flat-xml:*.fodp
-50:application/vnd.oasis.opendocument.presentation-flat-xml:*.fodp
-50:application/x-navi-animation:*.ani
-50:application/vnd.oasis.opendocument.spreadsheet-flat-xml:*.fods
-50:application/vnd.oasis.opendocument.spreadsheet-flat-xml:*.fods
-50:application/vnd.oasis.opendocument.text-flat-xml:*.fodt
-50:application/vnd.oasis.opendocument.text-flat-xml:*.fodt
-50:application/x-n64-rom:*.n64
-50:application/x-ustar:*.ustar
-50:application/x-gameboy-rom:*.gbc
-50:application/x-gba-rom:*.gba
-50:application/x-java-pack200:*.pack
-50:application/dicom:dicomdir
-50:application/x-shar:*.shar
-50:application/x-shorten:*.shn
-50:application/x-genesis-rom:*.32x
-50:image/x-portable-anymap:*.pnm
-50:application/x-gzdvi:*.dvi.gz
-50:application/annodex:*.anx
-50:text/html:*.html
-50:video/mp2t:*.mts
-50:text/x-authors:authors
-50:text/x-install:install
-50:application/x-quattropro:*.wb1
-50:application/x-quattropro:*.wb2
-50:application/x-quattropro:*.wb3
-50:application/x-gnucash:*.gnucash
-50:application/x-perl:*.pod
-50:application/x-source-rpm:*.src.rpm
-50:image/x-lwo:*.lwo
-50:application/x-dia-diagram:*.dia
-50:application/vnd.lotus-wordpro:*.lwp
-50:application/x-lrzip-compressed-tar:*.tlrz
-50:application/x-partial-download:*.wkdownload
-50:application/x-glade:*.glade
-50:application/pgp-signature:*.sig
-50:text/x-qml:*.qml
-50:image/x-tga:*.tga
-50:audio/prs.sid:*.sid
-50:application/x-trash:*.sik
-50:application/x-spss-por:*.por
-50:application/x-wii-wad:*.wad
-50:application/vnd.ms-powerpoint:*.pot
-50:text/x-gettext-translation-template:*.pot
-50:image/x-lws:*.lws
-50:application/x-zip-compressed-fb2:*.fb2.zip
-50:text/vcard:*.vcf
-50:application/vnd.symbian.install:*.sis
-50:application/x-stuffit:*.sit
-50:application/x-e-theme:*.etheme
-50:application/sieve:*.siv
-50:image/bmp:*.bmp
-50:application/x-nes-rom:*.unif
-50:image/x-skencil:*.sk1
-50:image/openraster:*.ora
-50:text/vcard:*.vct
-50:application/x-compressed-tar:*.tgz
-50:application/x-netshow-channel:*.nsc
-50:audio/x-wav:*.wav
-50:image/x-olympus-orf:*.orf
-50:audio/x-ms-asx:*.wax
-50:audio/x-ape:*.ape
-50:image/x-lwo:*.lwob
-50:text/calendar:*.vcs
-50:image/rle:*.rle
-50:application/x-siag:*.siag
-50:application/vnd.android.package-archive:*.apk
-50:image/x-portable-pixmap:*.ppm
-50:application/x-lz4:*.lz4
-50:image/x-applix-graphics:*.ag
-50:application/illustrator:*.ai
-50:application/vnd.ms-powerpoint:*.pps
-50:application/vnd.ms-powerpoint:*.ppt
-50:application/vnd.ms-powerpoint:*.ppt
-50:video/x-nsv:*.nsv
-50:application/x-perl:*.al
-50:image/x-tga:*.vda
-50:text/x-tex:*.cls
-50:application/x-archive:*.ar
-50:application/vnd.ms-powerpoint:*.ppz
-50:application/x-applix-spreadsheet:*.as
-50:application/vnd.tcpdump.pcap:*.pcap
-50:audio/basic:*.au
-50:application/x-applix-word:*.aw
-50:image/vnd.djvu:*.djv
-50:application/vnd.palm:*.pqa
-50:application/xslt+xml:*.xslt
-50:application/x-bittorrent:*.torrent
-50:image/x-bzeps:*.epsi.bz2
-50:video/quicktime:*.qtvr
-50:text/x-mup:*.mup
-50:application/x-t602:*.602
-50:application/vnd.rn-realmedia:*.rmj
-50:image/tiff:*.tif
-50:application/x-lyx:*.lyx
-50:application/x-gedcom:*.ged
-50:application/vnd.rn-realmedia:*.rmm
-50:application/x-gnucash:*.xac
-50:text/x-eiffel:*.eif
-50:application/x-sv4cpio:*.sv4cpio
-50:application/vnd.rn-realmedia:*.rms
-50:application/pgp-keys:*.skr
-50:application/x-tar:*.gem
-50:application/x-genesis-rom:*.gen
-50:application/vnd.ms-works:*.wcm
-50:application/x-yaml:*.yaml
-50:application/vnd.ms-word.template.macroEnabled.12:*.dotm
-50:application/vnd.ms-word.template.macroenabled.12:*.dotm
-50:application/x-lha:*.lzh
-50:application/mxf:*.mxf
-50:application/vnd.oasis.opendocument.chart-template:*.otc
-50:application/x-mobipocket-ebook:*.prc
-50:application/vnd.palm:*.prc
-50:application/vnd.oasis.opendocument.formula-template:*.otf
-50:application/x-font-otf:*.otf
-50:application/vnd.oasis.opendocument.graphics-template:*.otg
-50:application/vnd.oasis.opendocument.graphics-template:*.otg
-50:application/vnd.oasis.opendocument.text-web:*.oth
-50:application/vnd.oasis.opendocument.text-web:*.oth
-50:application/relax-ng-compact-syntax:*.rnc
-50:application/x-lzop:*.lzo
-50:text/x-makefile:gnumakefile
-50:application/x-bzip:*.bz
-50:application/x-arj:*.arj
-50:application/x-spss-sav:*.zsav
-50:text/x-c++src:*.cc
-50:application/vnd.oasis.opendocument.presentation-template:*.otp
-50:application/vnd.oasis.opendocument.presentation-template:*.otp
-50:image/fits:*.fits
-50:application/vnd.ms-works:*.wdb
-50:application/vnd.oasis.opendocument.spreadsheet-template:*.ots
-50:application/vnd.oasis.opendocument.spreadsheet-template:*.ots
-50:application/vnd.oasis.opendocument.text-template:*.ott
-50:application/vnd.oasis.opendocument.text-template:*.ott
-50:application/x-partial-download:*.crdownload
-50:application/x-tzo:*.tar.lzo
-50:application/x-hdf:*.hdf
-50:application/x-tarz:*.tar.z
-50:application/vnd.rn-realmedia:*.rmx
-50:image/x-sony-arw:*.arw
-50:image/svg+xml-compressed:*.svgz
-50:text/x-csharp:*.cs
-50:text/spreadsheet:*.slk
-50:image/x-icns:*.icns
-50:image/x-xbitmap:*.xbm
-50:video/vnd.mpegurl:*.mxu
-50:application/xml:*.xbl
-50:application/xml:*.rng
-50:application/x-pagemaker:*.p65
-50:text/x-opml+xml:*.opml
-50:text/plain:*.asc
-50:image/vnd.adobe.photoshop:*.psd
-50:application/x-font-linux-psf:*.psf
-50:audio/x-psf:*.psf
-50:text/x-cobol:*.cob
-50:application/vnd.ms-asf:*.asf
-50:application/vnd.nintendo.snes.rom:*.smc
-50:application/vnd.stardivision.mail:*.smd
-50:application/x-genesis-rom:*.smd
-50:application/x-dc-rom:*.dc
-50:application/vnd.stardivision.math:*.smf
-50:application/x-apple-diskimage:*.dmg
-50:application/smil+xml:*.smi
-50:application/x-sami:*.smi
-50:text/x-dsrc:*.di
-50:application/x-asp:*.asp
-50:application/x-gedcom:*.gedcom
-50:application/smil+xml:*.sml
-50:text/x-ssa:*.ass
-50:image/x-xfig:*.fig
-50:image/x-tga:*.icb
-50:application/vnd.tcpdump.pcap:*.dmp
-50:application/x-pocket-word:*.psw
-50:application/x-sms-rom:*.sms
-50:audio/x-ms-asx:*.asx
-50:image/x-xcf:*.xcf
-50:text/vnd.sun.j2me.app-descriptor:*.jad
-50:video/dv:*.dv
-50:application/vnd.openxmlformats-officedocument.wordprocessingml.template:*.dotx
-50:application/vnd.openxmlformats-officedocument.wordprocessingml.template:*.dotx
-50:image/vnd.microsoft.icon:*.ico
-50:application/x-ica:*.ica
-50:application/vnd.iccprofile:*.icc
-50:text/calendar:*.ics
-50:application/x-java-archive:*.jar
-50:application/x-gnumeric:*.gnumeric
-50:application/vnd.iccprofile:*.icm
-50:application/x-sv4crc:*.sv4crc
-50:audio/basic:*.snd
-50:application/x-lzma:*.lzma
-50:application/x-x509-ca-cert:*.cert
-50:image/x-adobe-dng:*.dng
-50:video/mp2t:*.cpi
-50:text/x-vhdl:*.vhd
-50:application/x-rpm:*.rpm
-50:application/x-bzpostscript:*.ps.bz2
-50:text/x-emacs-lisp:*.el
-50:application/xspf+xml:*.xspf
-50:text/x-c++src:*.cpp
-50:application/vnd.oasis.opendocument.text-master-template:*.otm
-50:image/x-canon-cr2:*.cr2
-50:application/x-gnuplot:*.gnuplot
-50:application/ecmascript:*.es
-50:image/fax-g3:*.g3
-50:text/x-idl:*.idl
-50:application/x-pkcs7-certificates:*.p7b
-50:application/pkcs7-mime:*.p7c
-50:application/andrew-inset:*.ez
-50:application/x-desktop:*.kdelnk
-50:application/x-lzma-compressed-tar:*.tlz
-50:application/vnd.ms-publisher:*.pub
-50:text/x-xslfo:*.xslfo
-50:application/x-core:core:cs
-50:application/x-core:core
-50:application/x-trig:*.trig
-50:application/pkcs7-mime:*.p7m
-50:application/msword:*.doc
-50:application/msword:*.doc
-50:application/vnd.ms-word:*.doc
-50:application/rdf+xml:*.owl
-50:text/cache-manifest:*.manifest
-50:application/pkcs7-signature:*.p7s
-50:image/x-emf:*.emf
-50:application/x-fluid:*.fl
-50:image/gif:*.gif
-50:message/rfc822:*.eml
-50:application/owl+xml:*.owx
-50:image/ief:*.ief
-50:text/x-c++hdr:*.h++
-50:text/x-xslfo:*.fo
-50:application/vnd.emusic-emusic_package:*.emp
-50:application/msword-template:*.dot
-50:text/vnd.graphviz:*.dot
-50:application/x-hdf:*.h4
-50:application/x-hdf:*.h5
-50:application/x-nzb:*.nzb
-50:text/x-uil:*.uil
-50:video/vnd.vivo:*.viv
-50:application/vnd.debian.binary-package:*.udeb
-50:audio/midi:*.kar
-50:video/x-msvideo:*.avf
-50:text/csv-schema:*.csvs
-50:application/x-pkcs7-certificates:*.spc
-50:application/x-font-speedo:*.spd
-50:application/x-qtiplot:*.qti
-50:application/vnd.ms-excel.addin.macroEnabled.12:*.xlam
-50:application/x-tex-gf:*.gf
-50:application/vnd.ms-tnef:*.tnf
-50:application/x-quicktime-media-link:*.qtl
-50:text/x-patch:*.diff
-50:application/pkix-crl:*.crl
-50:application/vnd.openofficeorg.extension:*.oxt
-50:application/vnd.openofficeorg.extension:*.oxt
-50:application/x-source-rpm:*.spm
-50:application/x-sms-rom:*.gg
-50:application/vnd.adobe.flash.movie:*.spl
-50:application/x-bzdvi:*.dvi.bz2
-50:application/x-gnuplot:*.gp
-50:application/x-gameboy-rom:*.gb
-50:application/x-x509-ca-cert:*.crt
-50:image/x-sony-sr2:*.sr2
-50:application/x-gz-font-linux-psf:*.psf.gz
-50:image/x-canon-crw:*.crw
-50:image/x-ilbm:*.iff
-50:audio/x-speex:*.spx
-50:audio/x-mod:*.ult
-50:audio/x-mod:*.669
-50:video/x-flv:*.flv
-50:application/x-kivio:*.flw
-50:text/vnd.graphviz:*.gv
-50:application/gzip:*.gz
-50:application/pkix-pkipath:*.pkipath
-50:application/vnd.palm:*.oprc
-50:audio/AMR-WB:*.awb
-50:text/x-genie:*.gs:cs
-50:text/x-genie:*.gs
-50:video/x-flic:*.flc
-50:text/x-go:*.go
-50:application/x-cdrdao-toc:*.toc
-50:application/x-awk:*.awk
-50:application/x-csh:*.csh
-50:audio/x-s3m:*.s3m
-50:text/x-c++hdr:*.hh
-50:application/xml-external-parsed-entity:*.ent
-50:application/sql:*.sql
-50:image/x-gzeps:*.eps.gz
-50:text/x-texinfo:*.texinfo
-50:video/x-msvideo:*.avi
-50:application/rss+xml:*.rss
-50:application/x-ufraw:*.ufraw
-50:text/css:*.css
-50:text/x-c++hdr:*.hp
-50:application/x-ms-wim:*.wim
-50:text/csv:*.csv
-50:text/x-haskell:*.hs
-50:application/x-mobipocket-ebook:*.mobi
-50:application/vnd.lotus-1-2-3:*.wk1
-50:audio/annodex:*.axa
-50:application/vnd.lotus-1-2-3:*.wk3
-50:application/vnd.lotus-1-2-3:*.wk4
-50:application/x-wais-source:*.src
-50:application/rtf:*.rtf
-50:image/x-sony-srf:*.srf
-50:image/x-ilbm:*.ilbm
-50:audio/x-mpegurl:*.vlc
-50:application/x-nes-rom:*.unf
-50:application/x-smaf:*.smaf
-50:audio/x-mod:*.uni
-50:video/x-flic:*.fli
-50:text/sgml:*.sgml
-50:video/annodex:*.axv
-50:image/x-kodak-kdc:*.kdc
-50:text/x-txt2tags:*.t2t
-50:application/x-subrip:*.srt
-50:audio/x-it:*.it
-50:image/x-eps:*.eps
-50:application/x-gzpdf:*.pdf.gz
-50:image/x-eps:*.epsf
-50:text/richtext:*.rtx
-50:image/x-eps:*.epsi
-50:application/x-java-jce-keystore:*.jceks
-50:application/x-python-bytecode:*.pyc
-50:image/x-ilbm:*.lbm
-50:video/vnd.vivo:*.vivo
-50:text/x-ssa:*.ssa
-50:application/x-cue:*.cue
-50:audio/vnd.dts.hd:*.dtshd
-50:application/x-python-bytecode:*.pyo
-50:application/x-windows-themepack:*.themepack
-50:video/x-sgi-movie:*.movie
-50:text/x-cmake:*.cmake
-50:text/x-dsl:*.dsl
-50:application/x-trash:*%
-50:application/vnd.ms-powerpoint.slide.macroEnabled.12:*.sldm
-50:image/x-panasonic-raw2:*.rw2
-50:application/gml+xml:*.gml
-50:application/javascript:*.js
-50:application/x-markaby:*.mab
-50:application/x-gettext-translation:*.gmo
-50:image/x-win-bitmap:*.cur
-50:text/x-fortran:*.for
-50:application/vnd.lotus-1-2-3:*.wks
-50:application/vnd.ms-works:*.wks
-50:text/x-python:*.pyx
-50:application/vnd.openxmlformats-officedocument.presentationml.slide:*.sldx
-50:text/x-makefile:*.mak
-50:application/x-troff-man:*.man
-50:message/x-gnu-rmail:rmail
-50:application/vnd.sun.xml.calc.template:*.stc
-50:application/vnd.sun.xml.calc.template:*.stc
-50:application/vnd.sun.xml.draw.template:*.std
-50:application/vnd.sun.xml.draw.template:*.std
-50:application/xml-dtd:*.dtd
-50:application/x-iwork-keynote-sffkey:*.key
-50:application/vnd.sun.xml.impress.template:*.sti
-50:application/vnd.sun.xml.impress.template:*.sti
-50:application/x-gnucash:*.gnc
-50:application/x-abiword:*.abw.crashed
-50:application/x-kchart:*.chrt
-50:audio/prs.sid:*.psid
-50:application/gnunet-directory:*.gnd
-50:audio/ogg:*.opus
-50:audio/x-opus+ogg:*.opus
-50:audio/x-stm:*.stm
-50:application/x-bzip:*.bz2
-50:text/x-erlang:*.erl
-50:application/epub+zip:*.epub
-50:application/x-java-keystore:*.ks
-50:video/vnd.rn-realvideo:*.rvx
-50:application/x-m4:*.m4
-50:application/vnd.sun.xml.writer.template:*.stw
-50:application/vnd.sun.xml.writer.template:*.stw
-50:text/x-tex:*.sty
-50:audio/vnd.dts:*.dts
-50:application/json:*.json
-50:text/x-tex:*.dtx
-50:application/x-kformula:*.kfo
-50:application/json-patch+json:*.json-patch
-50:application/x-bzip-compressed-tar:*.tar.bz2
-50:application/x-java:*.class
-50:application/x-shared-library-la:*.la
-50:text/x-microdvd:*.sub
-50:text/x-mpsub:*.sub
-50:text/x-subviewer:*.sub
-50:application/font-woff:*.woff
-50:image/x-macpaint:*.pntg
-50:application/winhlp:*.hlp
-50:image/tiff:*.tiff
-50:audio/x-ms-wma:*.wma
-50:text/x-qml:*.qmlproject
-50:video/mpeg:*.vob
-50:application/vnd.ms-visio.drawing.macroEnabled.main+xml:*.vsdm
-50:text/troff:*.roff
-50:image/x-sun-raster:*.sun
-50:audio/x-voc:*.voc
-50:image/x-wmf:*.wmf
-50:text/x-scons:sconscript
-50:application/x-tar:*.gtar
-50:text/vnd.wap.wml:*.wml
-50:application/x-par2:*.par2
-50:application/x-par2:*.par2
-50:application/x-cpio-compressed:*.cpio.gz
-50:application/vnd.ms-visio.drawing.main+xml:*.vsdx
-50:application/vnd.stardivision.writer:*.vor
-50:image/x-compressed-xcf:*.xcf.gz
-50:text/x-lilypond:*.ly
-50:application/x-lzip:*.lz
-50:audio/x-psflib:*.psflib
-50:video/x-ms-wmv:*.wmv
-50:audio/x-ms-asx:*.wmx
-50:application/x-it87:*.it87
-50:text/tab-separated-values:*.tsv
-50:audio/mp4:*.f4a
-50:audio/x-m4b:*.f4b
-50:audio/x-tta:*.tta
-50:application/x-trash:*~
-50:application/x-font-ttf:*.ttc
-50:image/svg+xml:*.svg
-50:application/x-kexi-connectiondata:*.kexic
-50:application/x-font-ttf:*.ttf
-50:application/x-dvi:*.dvi
-50:application/vnd.ms-excel:*.xla
-50:text/x-java:*.java
-50:application/vnd.ms-excel:*.xlc
-50:application/vnd.ms-excel:*.xld
-50:application/pgp-encrypted:*.gpg
-50:application/pgp-keys:*.gpg
-50:application/pgp-signature:*.gpg
-50:application/x-xliff:*.xlf
-50:application/x-gettext-translation:*.mo
-50:text/x-modelica:*.mo
-50:text/x-svhdr:*.svh
-50:application/x-mswinurl:*.url
-50:image/x-gzeps:*.epsi.gz
-50:application/vnd.ms-access:*.mdb
-50:application/vnd.ms-excel:*.xll
-50:application/vnd.ms-excel:*.xlm
-50:application/vnd.ms-tnef:winmail.dat
-50:application/x-kexiproject-shortcut:*.kexis
-50:application/x-font-ttx:*.ttx
-50:application/x-raw-disk-image:*.raw-disk-image
-50:application/vnd.ms-works:*.xlr
-50:application/vnd.ms-excel:*.xls
-50:application/vnd.ms-excel:*.xls
-50:application/vnd.wordperfect:*.wp4
-50:application/vnd.wordperfect:*.wp5
-50:application/vnd.wordperfect:*.wp6
-50:application/vnd.ms-excel:*.xlt
-50:application/vnd.ms-excel:*.xlw
-50:text/turtle:*.ttl
-50:application/mathematica:*.nb
-50:application/x-netcdf:*.nc
-50:video/mp4:*.f4v
-50:application/vnd.adobe.flash.movie:*.swf
-50:text/x-makefile:*.mk
-50:image/vnd.dwg:*.dwg
-50:text/x-setext:*.etx
-50:application/x-genesis-rom:*.mdx
-50:application/vnd.ms-powerpoint.template.macroEnabled.12:*.potm
-50:application/vnd.ms-powerpoint.template.macroenabled.12:*.potm
-50:application/x-xz-compressed-tar:*.tar.xz
-50:application/x-ms-wim:*.swm
-50:video/mpeg:*.mpeg
-50:text/x-credits:credits
-50:text/x-iMelody:*.ime
-50:audio/x-xmf:*.xmf
-50:application/x-raw-disk-image:*.img
-50:text/x-xmi:*.xmi
-50:text/spreadsheet:*.sylk
-50:application/x-partial-download:*.part
-50:application/xml:*.xml
-50:audio/x-mod:*.med
-50:text/vnd.wap.wmlscript:*.wmls
-50:image/x-bzeps:*.epsf.bz2
-50:application/x-killustrator:*.kil
-50:application/pkcs8:*.p8
-50:application/zip:*.zip
-50:image/vnd.ms-modi:*.mdi
-50:application/x-java-keystore:*.jks
-50:text/x-c++src:*.cxx
-50:text/x-iMelody:*.imy
-50:application/vnd.sun.xml.calc:*.sxc
-50:application/vnd.sun.xml.calc:*.sxc
-50:application/vnd.sun.xml.draw:*.sxd
-50:application/vnd.sun.xml.draw:*.sxd
-50:application/x-java-keystore:cacerts
-50:application/vnd.sun.xml.writer.global:*.sxg
-50:application/vnd.sun.xml.writer.global:*.sxg
-50:application/x-graphite:*.gra
-50:application/vnd.sun.xml.impress:*.sxi
-50:application/vnd.sun.xml.impress:*.sxi
-50:video/x-matroska-3d:*.mk3d
-50:application/vnd.wordperfect:*.wpd
-50:application/vnd.sun.xml.math:*.sxm
-50:application/vnd.sun.xml.math:*.sxm
-50:application/vnd.ms-powerpoint.slideshow.macroEnabled.12:*.ppsm
-50:application/x-wpg:*.wpg
-50:application/x-gnuplot:*.gplt
-50:image/vnd.dxf:*.dxf
-50:application/x-lha:*.lha
-50:model/vrml:*.vrm
-50:application/vnd.ms-wpl:*.wpl
-50:audio/mpeg:*.mpga
-50:application/vnd.sun.xml.writer:*.sxw
-50:application/vnd.sun.xml.writer:*.sxw
-50:application/vnd.wordperfect:*.wpp
-50:application/x-n64-rom:*.v64
-50:text/x-c++hdr:*.hpp
-50:application/vnd.ms-works:*.wps
-50:text/plain:*,v
-50:text/markdown:*.md
-50:text/x-tex:*.ins
-50:text/x-troff-ms:*.ms
-50:application/x-tgif:*.obj
-50:text/x-c++src:*.C:cs
-50:text/x-c++src:*.C
-50:text/x-literate-haskell:*.lhs
-50:image/x-pict:*.pict
-50:text/x-ocaml:*.ml
-50:text/x-troff-mm:*.mm
-50:application/x-nintendo-ds-rom:*.nds
-50:application/x-bzip-compressed-tar:*.tbz2
-50:text/x-qml:*.qmltypes
-50:application/x-lhz:*.lhz
-50:application/vnd.visio:*.vsd
-50:application/x-tex-pk:*.pk
-50:application/x-font-type1:*.gsf
-50:application/x-perl:*.pl
-50:application/x-perl:*.pl
-50:application/x-perl:*.pm
-50:application/x-pagemaker:*.pm
-50:application/vnd.ms-powerpoint.presentation.macroEnabled.12:*.pptm
-50:application/vnd.ms-powerpoint.presentation.macroenabled.12:*.pptm
-50:text/x-gettext-translation:*.po
-50:application/vnd.hp-hpgl:*.hpgl
-50:audio/x-gsm:*.gsm
-50:application/postscript:*.ps
-50:text/x-fortran:*.f90
-50:application/vnd.ms-word.document.macroEnabled.12:*.docm
-50:application/vnd.ms-word.document.macroenabled.12:*.docm
-50:application/x-yaml:*.yml
-50:application/vnd.visio:*.vss
-50:application/vnd.visio:*.vst
-50:image/x-tga:*.vst
-50:application/x-karbon:*.karbon
-50:image/x-nikon-nef:*.nef
-50:application/vnd.visio:*.vsw
-50:application/x-archive:*.a
-50:audio/aac:*.aac
-50:text/x-csrc:*.c:cs
-50:text/x-csrc:*.c
-50:application/x-pw:*.pw
-50:application/x-magicpoint:*.mgp
-50:text/x-ocl:*.ocl
-50:application/x-pak:*.pak
-50:text/x-chdr:*.h
-50:text/x-dsrc:*.d
-50:application/x-nes-rom:*.nes
-50:application/x-ms-dos-executable:*.exe
-50:text/x-objcsrc:*.m
-50:text/x-matlab:*.m
-50:text/x-troff-me:*.me
-50:application/x-object:*.o
-50:text/x-fortran:*.f
-50:text/x-pascal:*.p
-50:text/x-pascal:*.pas
-50:video/mp2t:*.clpi
-10:application/x-perl:*.t
-10:text/troff:*.t
-10:text/x-readme:readme*
-10:application/pgp-encrypted:*.asc
-10:application/pgp-keys:*.asc
-10:application/pgp-signature:*.asc
-10:text/x-makefile:makefile.*
bgstack15