aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/libLumina
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2016-11-07 13:52:20 -0500
committerKen Moore <ken@ixsystems.com>2016-11-07 13:52:20 -0500
commit7ab900e41f5f15adccd573d459a80fe60cf6a044 (patch)
tree6effe3593f7b9f942fe7aaf5626ebe039262af3b /src-qt5/core/libLumina
parentConvert the ResizeMenu class into it's own files: (diff)
downloadlumina-7ab900e41f5f15adccd573d459a80fe60cf6a044.tar.gz
lumina-7ab900e41f5f15adccd573d459a80fe60cf6a044.tar.bz2
lumina-7ab900e41f5f15adccd573d459a80fe60cf6a044.zip
LARGE UPDATE:
1) Dismantle the Lumina library completely. 2) Setup lots of small subproject files (.pri) for the individual classes within the old library. 3) Move all the Lumina binaries to use the new subproject files 4) Split up the LuminaUtils class/files into LUtils and LDesktopUtils (generic utilities, and desktop-specific utilities)
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