diff --git a/.gitmodules b/.gitmodules
index 1e294d433..134e135f6 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,6 +4,3 @@
[submodule "apps/atom"]
path = apps/atom
url = https://github.com/Omega-Numworks/Omega-Atom.git
-[submodule "themes"]
- path = themes
- url = https://github.com/Omega-Numworks/Omega-Themes.git
diff --git a/themes b/themes
deleted file mode 160000
index 5a39ad720..000000000
--- a/themes
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5a39ad720511706891a96816192b5e425b014160
diff --git a/themes/Omega.png b/themes/Omega.png
new file mode 100644
index 000000000..839f33e43
Binary files /dev/null and b/themes/Omega.png differ
diff --git a/themes/README.md b/themes/README.md
new file mode 100644
index 000000000..cdfc9f8bd
--- /dev/null
+++ b/themes/README.md
@@ -0,0 +1,45 @@
+

+
+
+
+
+
+
+## About
+
+Omega-Themes `BETA` is the theme engine of [Omega](https://github.com/Omega-Numworks/Omega), an extension to Numworks' Epsilon. This engine allows you to change the theme of Omega easily before installing the OS.
+
+## Installation
+
+While compiling Omega, add the `THEME_NAME` flag :
+
+```
+make THEME_NAME=the_name_of_the_theme -j4
+```
+
+There are 4 themes:
+* Omega Light (`THEME_NAME=omega_light`)
+* Omega Dark (`THEME_NAME=omega_dark`)
+* Epsilon Light (`THEME_NAME=epsilon_light`)
+* Epsilon Dark (`THEME_NAME=epsilon_dark`)
+
+## 3rd party themes
+
+To make your own theme, you can use our 3rd party theme system :
+* Create a new repository with your theme (there is an example [here](https://github.com/Omega-Numworks/Omega-Theme-Example)). Note: You can put several themes in the same repository.
+* It's done!
+
+To install your new theme, use these flags during the compilation:
+
+```
+make THEME_REPO={your repository url} THEME_NAME={Your theme name}
+```
+
+Example:
+```
+make THEME_REPO=https://github.com/Omega-Numworks/Omega-Theme-Example.git THEME_NAME=omega_blue
+```
+
+## License
+
+Omega-Themes is released under a [CC BY-NC-SA License](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode). NumWorks is a registered trademark.
diff --git a/themes/icons.json b/themes/icons.json
new file mode 100644
index 000000000..d16c64c85
--- /dev/null
+++ b/themes/icons.json
@@ -0,0 +1,44 @@
+{
+ "apps/exam_icon.png" : "exam_icon.png",
+ "apps/on_boarding/logo_icon.png" : "logo_icon.png",
+
+ "apps/atom/atom_icon.png" : "apps/atom_icon.png",
+ "apps/calculation/calculation_icon.png" : "apps/calculation_icon.png",
+ "apps/code/code_icon.png" : "apps/code_icon.png",
+ "apps/external/external_icon.png" : "apps/external_icon.png",
+ "apps/graph/graph_icon.png" : "apps/graph_icon.png",
+ "apps/probability/probability_icon.png" : "apps/probability_icon.png",
+ "apps/regression/regression_icon.png" : "apps/regression_icon.png",
+ "apps/rpn/rpn_icon.png" : "apps/rpn_icon.png",
+ "apps/sequence/sequence_icon.png" : "apps/sequence_icon.png",
+ "apps/settings/settings_icon.png" : "apps/settings_icon.png",
+ "apps/solver/solver_icon.png" : "apps/solver_icon.png",
+ "apps/statistics/stat_icon.png" : "apps/stat_icon.png",
+
+ "apps/probability/images/binomial_icon.png" : "probability/binomial_icon.png",
+ "apps/probability/images/calcul1_icon.png" : "probability/calcul1_icon.png",
+ "apps/probability/images/calcul2_icon.png" : "probability/calcul2_icon.png",
+ "apps/probability/images/calcul3_icon.png" : "probability/calcul3_icon.png",
+ "apps/probability/images/calcul4_icon.png" : "probability/calcul4_icon.png",
+ "apps/probability/images/chi_squared_icon.png" : "probability/chi_squared_icon.png",
+ "apps/probability/images/exponential_icon.png" : "probability/exponential_icon.png",
+ "apps/probability/images/fisher_icon.png" : "probability/fisher_icon.png",
+ "apps/probability/images/focused_binomial_icon.png" : "probability/focused_binomial_icon.png",
+ "apps/probability/images/focused_calcul1_icon.png" : "probability/focused_calcul1_icon.png",
+ "apps/probability/images/focused_calcul2_icon.png" : "probability/focused_calcul2_icon.png",
+ "apps/probability/images/focused_calcul3_icon.png" : "probability/focused_calcul3_icon.png",
+ "apps/probability/images/focused_calcul4_icon.png" : "probability/focused_calcul4_icon.png",
+ "apps/probability/images/focused_chi_squared_icon.png" : "probability/focused_chi_squared_icon.png",
+ "apps/probability/images/focused_exponential_icon.png" : "probability/focused_exponential_icon.png",
+ "apps/probability/images/focused_fisher_icon.png" : "probability/focused_fisher_icon.png",
+ "apps/probability/images/focused_geometric_icon.png" : "probability/focused_geometric_icon.png",
+ "apps/probability/images/focused_normal_icon.png" : "probability/focused_normal_icon.png",
+ "apps/probability/images/focused_poisson_icon.png" : "probability/focused_poisson_icon.png",
+ "apps/probability/images/focused_student_icon.png" : "probability/focused_student_icon.png",
+ "apps/probability/images/focused_uniform_icon.png" : "probability/focused_uniform_icon.png",
+ "apps/probability/images/geometric_icon.png" : "probability/geometric_icon.png",
+ "apps/probability/images/normal_icon.png" : "probability/normal_icon.png",
+ "apps/probability/images/poisson_icon.png" : "probability/poisson_icon.png",
+ "apps/probability/images/student_icon.png" : "probability/student_icon.png",
+ "apps/probability/images/uniform_icon.png" : "probability/uniform_icon.png"
+}
diff --git a/themes/themes/git/.empty-folder b/themes/themes/git/.empty-folder
new file mode 100644
index 000000000..e69de29bb
diff --git a/themes/themes/local/epsilon_dark.json b/themes/themes/local/epsilon_dark.json
new file mode 100644
index 000000000..012dd654d
--- /dev/null
+++ b/themes/themes/local/epsilon_dark.json
@@ -0,0 +1,148 @@
+{
+ "name": "Epsilon Dark",
+ "icons": "epsilon_light",
+ "colors": {
+ "PrimaryText": "ffffff",
+ "SecondaryText": "585858",
+ "AccentText": "ffb734",
+ "ApproximateSignText": "737373",
+ "ApproximateExpressionText": "737373",
+ "Background": {
+ "Hard": "000000",
+ "Apps": "080605",
+ "AppsSecondary": "1f1912"
+ },
+ "Toolbar": {
+ "": "ffb734",
+ "Text": "000000"
+ },
+ "ExpressionInput": {
+ "Background": "000000",
+ "Border": "262626"
+ },
+ "Grid": {
+ "PrimaryLine": "262626",
+ "SecondaryLine": "0a0a0a"
+ },
+ "Battery": {
+ "": "000000",
+ "InCharge": "ffcc7b",
+ "Low": "f30211"
+ },
+ "ScrollBar": {
+ "Foreground": "585858",
+ "Background": "262626"
+ },
+ "Control": {
+ "": "ffb734",
+ "Enabled": "ffb734",
+ "Disabled": "585858"
+ },
+ "Calculation": {
+ "BackgroundOdd": "080605",
+ "BackgroundEven": "000000",
+ "EmptyBox": "131313",
+ "EmptyBoxNeeded": "ffb734",
+ "TrigoAndComplexForeground": "ff000c"
+ },
+ "Code": {
+ "Background": "000000",
+ "BackgroundSelected": "2b281f",
+ "Text": "ffffff",
+ "Comment": "999988",
+ "Number": "009999",
+ "Keyword": "ff000c",
+ "Operator": "d73a49",
+ "String": "032f62",
+ "GutterViewBackground": "E4E6E7"
+ },
+ "Probability": {
+ "Curve": "ffb734",
+ "CellBorder": "262626",
+ "HistogramBar": "262626"
+ },
+ "Statistics": {
+ "Box": "ffb734",
+ "BoxVerticalLine": "262626",
+ "Selected": "ffb734",
+ "NotSelected": "262626"
+ },
+ "Graph": {
+ "Tangent": "737373"
+ },
+ "SubMenu": {
+ "Background": "000000",
+ "Border": "131313",
+ "Text": "47443a"
+ },
+ "Toolbox": {
+ "HeaderBackground": "656975",
+ "HeaderText": "000000",
+ "HeaderBorder": "414147",
+ "Background": "ffffff"
+ },
+ "List": {
+ "CellBackground": "000000",
+ "CellBackgroundSelected": "2b281f",
+ "CellBorder": "131313"
+ },
+ "Button": {
+ "Background": "000000",
+ "BackgroundSelected": "2b281f",
+ "BackgroundSelectedHighContrast": "ffb734",
+ "Border": "adadad",
+ "RowBorder": "262626",
+ "BorderOut": "0a0a0a",
+ "Shadow": "262626",
+ "Text": "ffffff"
+ },
+ "Tab": {
+ "Background": "4a4a4a",
+ "BackgroundSelected": "2b281f",
+ "BackgroundActive": "000000",
+ "BackgroundSelectedAndActive": "26272e",
+ "Text": "000000",
+ "TextActive": "656975"
+ },
+ "SubTab": {
+ "Background": "000000",
+ "BackgroundSelected": "2b281f",
+ "Text": "ffffff"
+ },
+ "Banner": {
+ "FirstBackground": "656975",
+ "FirstBorder": "656975",
+ "FirstText": "000000",
+ "FirstVariantBackground": "414147",
+ "FirstVariantBorder": "414147",
+ "FirstVariantText": "000000",
+ "SecondBackground": "47443a",
+ "SecondBorder": "47443a",
+ "SecondText": "000000"
+ },
+ "Home": {
+ "Background": "000000",
+ "CellBackground": "000000",
+ "CellBackgroundActive": "ffb734",
+ "CellText": "ffffff",
+ "CellTextActive": "000000",
+ "CellTextExternal": "6fe6df",
+ "CellTextExternalActive": "008f87"
+ },
+ "Atom": {
+ "Unknown": "eeeeee",
+ "Text": "000000",
+ "AlkaliMetal": "ffaa00",
+ "AlkaliEarthMetal": "f6f200",
+ "Lanthanide": "ffaa8b",
+ "Actinide": "deaacd",
+ "TransitionMetal": "de999c",
+ "PostTransitionMetal": "9cbaac",
+ "Metalloid": "52ce8b",
+ "Halogen": "00debd",
+ "ReactiveNonmetal": "00ee00",
+ "NobleGas": "8baaff",
+ "TableLines": "323532"
+ }
+ }
+}
diff --git a/themes/themes/local/epsilon_light.json b/themes/themes/local/epsilon_light.json
new file mode 100644
index 000000000..91423fa14
--- /dev/null
+++ b/themes/themes/local/epsilon_light.json
@@ -0,0 +1,148 @@
+{
+ "name": "Epsilon Light",
+ "icons": "epsilon_light",
+ "colors": {
+ "PrimaryText": "000000",
+ "SecondaryText": "a7a7a7",
+ "AccentText": "ffb734",
+ "ApproximateSignText": "8c8c8c",
+ "ApproximateExpressionText": "8c8c8c",
+ "Background": {
+ "Hard": "ffffff",
+ "Apps": "f7f9fa",
+ "AppsSecondary": "e0e6ed"
+ },
+ "Toolbar": {
+ "": "ffb734",
+ "Text": "ffffff"
+ },
+ "ExpressionInput": {
+ "Background": "ffffff",
+ "Border": "d9d9d9"
+ },
+ "Grid": {
+ "PrimaryLine": "d9d9d9",
+ "SecondaryLine": "f5f5f5"
+ },
+ "Battery": {
+ "": "ffffff",
+ "InCharge": "ffcc7b",
+ "Low": "f30211"
+ },
+ "ScrollBar": {
+ "Foreground": "a7a7a7",
+ "Background": "d9d9d9"
+ },
+ "Control": {
+ "": "ffb734",
+ "Enabled": "ffb734",
+ "Disabled": "a7a7a7"
+ },
+ "Calculation": {
+ "BackgroundOdd": "f7f9fa",
+ "BackgroundEven": "ffffff",
+ "EmptyBox": "ececec",
+ "EmptyBoxNeeded": "ffb734",
+ "TrigoAndComplexForeground": "ff000c"
+ },
+ "Code": {
+ "Background": "ffffff",
+ "BackgroundSelected": "d4d7e0",
+ "Text": "000000",
+ "Comment": "999988",
+ "Number": "009999",
+ "Keyword": "ff000c",
+ "Operator": "d73a49",
+ "String": "032f62",
+ "GutterViewBackground": "E4E6E7"
+ },
+ "Probability": {
+ "Curve": "ffb734",
+ "CellBorder": "d9d9d9",
+ "HistogramBar": "d9d9d9"
+ },
+ "Statistics": {
+ "Box": "ffb734",
+ "BoxVerticalLine": "d9d9d9",
+ "Selected": "ffb734",
+ "NotSelected": "d9d9d9"
+ },
+ "Graph": {
+ "Tangent": "8c8c8c"
+ },
+ "SubMenu": {
+ "Background": "ffffff",
+ "Border": "ececec",
+ "Text": "b8bbc5"
+ },
+ "Toolbox": {
+ "HeaderBackground": "656975",
+ "HeaderText": "ffffff",
+ "HeaderBorder": "414147",
+ "Background": "000000"
+ },
+ "List": {
+ "CellBackground": "ffffff",
+ "CellBackgroundSelected": "d4d7e0",
+ "CellBorder": "ececec"
+ },
+ "Button": {
+ "Background": "ffffff",
+ "BackgroundSelected": "d4d7e0",
+ "BackgroundSelectedHighContrast": "ffb734",
+ "Border": "adadad",
+ "RowBorder": "d9d9d9",
+ "BorderOut": "f5f5f5",
+ "Shadow": "d9d9d9",
+ "Text": "000000"
+ },
+ "Tab": {
+ "Background": "4a4a4a",
+ "BackgroundSelected": "d4d7e0",
+ "BackgroundActive": "ffffff",
+ "BackgroundSelectedAndActive": "b0b8d8",
+ "Text": "ffffff",
+ "TextActive": "656975"
+ },
+ "SubTab": {
+ "Background": "ffffff",
+ "BackgroundSelected": "d4d7e0",
+ "Text": "000000"
+ },
+ "Banner": {
+ "FirstBackground": "656975",
+ "FirstBorder": "656975",
+ "FirstText": "ffffff",
+ "FirstVariantBackground": "414147",
+ "FirstVariantBorder": "414147",
+ "FirstVariantText": "ffffff",
+ "SecondBackground": "b8bbc5",
+ "SecondBorder": "b8bbc5",
+ "SecondText": "ffffff"
+ },
+ "Home": {
+ "Background": "ffffff",
+ "CellBackground": "ffffff",
+ "CellBackgroundActive": "ffb734",
+ "CellText": "000000",
+ "CellTextActive": "ffffff",
+ "CellTextExternal": "008f87",
+ "CellTextExternalActive": "6fe6df"
+ },
+ "Atom": {
+ "Unknown": "eeeeee",
+ "Text": "000000",
+ "AlkaliMetal": "ffaa00",
+ "AlkaliEarthMetal": "f6f200",
+ "Lanthanide": "ffaa8b",
+ "Actinide": "deaacd",
+ "TransitionMetal": "de999c",
+ "PostTransitionMetal": "9cbaac",
+ "Metalloid": "52ce8b",
+ "Halogen": "00debd",
+ "ReactiveNonmetal": "00ee00",
+ "NobleGas": "8baaff",
+ "TableLines": "323532"
+ }
+ }
+}
diff --git a/themes/themes/local/epsilon_light/apps/atom_icon.png b/themes/themes/local/epsilon_light/apps/atom_icon.png
new file mode 100644
index 000000000..4fc64e2d0
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/atom_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/calculation_icon.png b/themes/themes/local/epsilon_light/apps/calculation_icon.png
new file mode 100644
index 000000000..06fcc45ba
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/calculation_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/code_icon.png b/themes/themes/local/epsilon_light/apps/code_icon.png
new file mode 100644
index 000000000..5f4d2d162
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/code_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/external_icon.png b/themes/themes/local/epsilon_light/apps/external_icon.png
new file mode 100644
index 000000000..297dc31c6
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/external_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/graph_icon.png b/themes/themes/local/epsilon_light/apps/graph_icon.png
new file mode 100644
index 000000000..593a35088
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/graph_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/probability_icon.png b/themes/themes/local/epsilon_light/apps/probability_icon.png
new file mode 100644
index 000000000..464db94e1
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/probability_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/regression_icon.png b/themes/themes/local/epsilon_light/apps/regression_icon.png
new file mode 100644
index 000000000..09552a31f
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/regression_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/rpn_icon.png b/themes/themes/local/epsilon_light/apps/rpn_icon.png
new file mode 100644
index 000000000..d9b318792
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/rpn_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/sequence_icon.png b/themes/themes/local/epsilon_light/apps/sequence_icon.png
new file mode 100644
index 000000000..ddaa65be4
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/sequence_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/settings_icon.png b/themes/themes/local/epsilon_light/apps/settings_icon.png
new file mode 100644
index 000000000..b7cf4f93d
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/settings_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/solver_icon.png b/themes/themes/local/epsilon_light/apps/solver_icon.png
new file mode 100644
index 000000000..f1d26ca70
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/solver_icon.png differ
diff --git a/themes/themes/local/epsilon_light/apps/stat_icon.png b/themes/themes/local/epsilon_light/apps/stat_icon.png
new file mode 100644
index 000000000..cd98d424f
Binary files /dev/null and b/themes/themes/local/epsilon_light/apps/stat_icon.png differ
diff --git a/themes/themes/local/epsilon_light/exam_icon.png b/themes/themes/local/epsilon_light/exam_icon.png
new file mode 100644
index 000000000..e168f55bd
Binary files /dev/null and b/themes/themes/local/epsilon_light/exam_icon.png differ
diff --git a/themes/themes/local/epsilon_light/logo_icon.png b/themes/themes/local/epsilon_light/logo_icon.png
new file mode 100644
index 000000000..6d14c3a47
Binary files /dev/null and b/themes/themes/local/epsilon_light/logo_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/binomial_icon.png b/themes/themes/local/epsilon_light/probability/binomial_icon.png
new file mode 100644
index 000000000..4f9ee7063
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/binomial_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/calcul1_icon.png b/themes/themes/local/epsilon_light/probability/calcul1_icon.png
new file mode 100644
index 000000000..feedb4412
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/calcul1_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/calcul2_icon.png b/themes/themes/local/epsilon_light/probability/calcul2_icon.png
new file mode 100644
index 000000000..218102ba0
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/calcul2_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/calcul3_icon.png b/themes/themes/local/epsilon_light/probability/calcul3_icon.png
new file mode 100644
index 000000000..f67ffe379
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/calcul3_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/calcul4_icon.png b/themes/themes/local/epsilon_light/probability/calcul4_icon.png
new file mode 100644
index 000000000..8040f094f
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/calcul4_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/chi_squared_icon.png b/themes/themes/local/epsilon_light/probability/chi_squared_icon.png
new file mode 100644
index 000000000..44423aae6
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/chi_squared_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/exponential_icon.png b/themes/themes/local/epsilon_light/probability/exponential_icon.png
new file mode 100644
index 000000000..adc24dce5
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/exponential_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/fisher_icon.png b/themes/themes/local/epsilon_light/probability/fisher_icon.png
new file mode 100644
index 000000000..c24b718fd
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/fisher_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_binomial_icon.png b/themes/themes/local/epsilon_light/probability/focused_binomial_icon.png
new file mode 100644
index 000000000..28b315c0c
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_binomial_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_calcul1_icon.png b/themes/themes/local/epsilon_light/probability/focused_calcul1_icon.png
new file mode 100644
index 000000000..11ca66e1b
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_calcul1_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_calcul2_icon.png b/themes/themes/local/epsilon_light/probability/focused_calcul2_icon.png
new file mode 100644
index 000000000..89cb0c89e
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_calcul2_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_calcul3_icon.png b/themes/themes/local/epsilon_light/probability/focused_calcul3_icon.png
new file mode 100644
index 000000000..5a9ee752a
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_calcul3_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_calcul4_icon.png b/themes/themes/local/epsilon_light/probability/focused_calcul4_icon.png
new file mode 100644
index 000000000..a5e40e24e
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_calcul4_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_chi_squared_icon.png b/themes/themes/local/epsilon_light/probability/focused_chi_squared_icon.png
new file mode 100644
index 000000000..0e86e946d
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_chi_squared_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_exponential_icon.png b/themes/themes/local/epsilon_light/probability/focused_exponential_icon.png
new file mode 100644
index 000000000..aa3da9a8e
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_exponential_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_fisher_icon.png b/themes/themes/local/epsilon_light/probability/focused_fisher_icon.png
new file mode 100644
index 000000000..196f83c70
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_fisher_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_geometric_icon.png b/themes/themes/local/epsilon_light/probability/focused_geometric_icon.png
new file mode 100644
index 000000000..e4802b8e1
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_geometric_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_normal_icon.png b/themes/themes/local/epsilon_light/probability/focused_normal_icon.png
new file mode 100644
index 000000000..3c62147ca
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_normal_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_poisson_icon.png b/themes/themes/local/epsilon_light/probability/focused_poisson_icon.png
new file mode 100644
index 000000000..0cf6a2f53
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_poisson_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_student_icon.png b/themes/themes/local/epsilon_light/probability/focused_student_icon.png
new file mode 100644
index 000000000..039553c51
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_student_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/focused_uniform_icon.png b/themes/themes/local/epsilon_light/probability/focused_uniform_icon.png
new file mode 100644
index 000000000..ea7524a63
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/focused_uniform_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/geometric_icon.png b/themes/themes/local/epsilon_light/probability/geometric_icon.png
new file mode 100644
index 000000000..1233e1682
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/geometric_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/normal_icon.png b/themes/themes/local/epsilon_light/probability/normal_icon.png
new file mode 100644
index 000000000..1f267b1df
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/normal_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/poisson_icon.png b/themes/themes/local/epsilon_light/probability/poisson_icon.png
new file mode 100644
index 000000000..c56aafa34
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/poisson_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/student_icon.png b/themes/themes/local/epsilon_light/probability/student_icon.png
new file mode 100644
index 000000000..fd8b8ea50
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/student_icon.png differ
diff --git a/themes/themes/local/epsilon_light/probability/uniform_icon.png b/themes/themes/local/epsilon_light/probability/uniform_icon.png
new file mode 100644
index 000000000..3e801cfb8
Binary files /dev/null and b/themes/themes/local/epsilon_light/probability/uniform_icon.png differ
diff --git a/themes/themes/local/omega_dark.json b/themes/themes/local/omega_dark.json
new file mode 100644
index 000000000..0426dc2f9
--- /dev/null
+++ b/themes/themes/local/omega_dark.json
@@ -0,0 +1,148 @@
+{
+ "name": "Omega Dark",
+ "icons": "omega_dark",
+ "colors": {
+ "PrimaryText": "ffffff",
+ "SecondaryText": "949494",
+ "AccentText": "00857f",
+ "ApproximateSignText": "a6a6a6",
+ "ApproximateExpressionText": "a6a6a6",
+ "Background": {
+ "Hard": "000000",
+ "Apps": "050505",
+ "AppsSecondary": "0f0f0f"
+ },
+ "Toolbar": {
+ "": "c03535",
+ "Text": "ffffff"
+ },
+ "ExpressionInput": {
+ "Background": "1f1f1f",
+ "Border": "262626"
+ },
+ "Grid": {
+ "PrimaryLine": "262626",
+ "SecondaryLine": "0a0a0a"
+ },
+ "Battery": {
+ "": "ffffff",
+ "InCharge": "179e1f",
+ "Low": "992321"
+ },
+ "ScrollBar": {
+ "Foreground": "b5b5b5",
+ "Background": "262626"
+ },
+ "Control": {
+ "": "00857f",
+ "Enabled": "00b2b0",
+ "Disabled": "616161"
+ },
+ "Calculation": {
+ "BackgroundOdd": "050505",
+ "BackgroundEven": "000000",
+ "EmptyBox": "3b3b3b",
+ "EmptyBoxNeeded": "00857f",
+ "TrigoAndComplexForeground": "ff000c"
+ },
+ "Code": {
+ "Background": "000000",
+ "BackgroundSelected": "1f1f1f",
+ "Text": "ffffff",
+ "Comment": "999988",
+ "Number": "009999",
+ "Keyword": "ff000c",
+ "Operator": "d73a49",
+ "String": "032f62",
+ "GutterViewBackground": "E4E6E7"
+ },
+ "Probability": {
+ "Curve": "00857f",
+ "CellBorder": "131313",
+ "HistogramBar": "262626"
+ },
+ "Statistics": {
+ "Box": "00857f",
+ "BoxVerticalLine": "262626",
+ "Selected": "00857f",
+ "NotSelected": "0a0a0a"
+ },
+ "Graph": {
+ "Tangent": "a6a6a6"
+ },
+ "SubMenu": {
+ "Background": "1f1f1f",
+ "Border": "050505",
+ "Text": "ffffff"
+ },
+ "Toolbox": {
+ "HeaderBackground": "b5b5b5",
+ "HeaderText": "000000",
+ "HeaderBorder": "b5b5b5",
+ "Background": "ffffff"
+ },
+ "List": {
+ "CellBackground": "000000",
+ "CellBackgroundSelected": "1f1f1f",
+ "CellBorder": "121210"
+ },
+ "Button": {
+ "Background": "1f1f1f",
+ "BackgroundSelected": "2e2e2e",
+ "BackgroundSelectedHighContrast": "a6a6a6",
+ "Border": "525252",
+ "RowBorder": "262626",
+ "BorderOut": "0a0a0a",
+ "Shadow": "003833",
+ "Text": "ffffff"
+ },
+ "Tab": {
+ "Background": "b5b5b5",
+ "BackgroundSelected": "8a8a8a",
+ "BackgroundActive": "050505",
+ "BackgroundSelectedAndActive": "1c1c1c",
+ "Text": "000000",
+ "TextActive": "ffffff"
+ },
+ "SubTab": {
+ "Background": "1f1f1f",
+ "BackgroundSelected": "2e2e2e",
+ "Text": "ffffff"
+ },
+ "Banner": {
+ "FirstBackground": "b5b5b5",
+ "FirstBorder": "b5b5b5",
+ "FirstText": "000000",
+ "FirstVariantBackground": "b5b5b5",
+ "FirstVariantBorder": "050505",
+ "FirstVariantText": "000000",
+ "SecondBackground": "1f1f1f",
+ "SecondBorder": "050505",
+ "SecondText": "ffffff"
+ },
+ "Home": {
+ "Background": "000000",
+ "CellBackground": "000000",
+ "CellBackgroundActive": "b5b5b5",
+ "CellText": "ffffff",
+ "CellTextActive": "000000",
+ "CellTextExternal": "6fe6df",
+ "CellTextExternalActive": "008f87"
+ },
+ "Atom": {
+ "Unknown": "eeeeee",
+ "Text": "000000",
+ "AlkaliMetal": "ffaa00",
+ "AlkaliEarthMetal": "f6f200",
+ "Lanthanide": "ffaa8b",
+ "Actinide": "deaacd",
+ "TransitionMetal": "de999c",
+ "PostTransitionMetal": "9cbaac",
+ "Metalloid": "52ce8b",
+ "Halogen": "00debd",
+ "ReactiveNonmetal": "00ee00",
+ "NobleGas": "8baaff",
+ "TableLines": "323532"
+ }
+ }
+}
diff --git a/themes/themes/local/omega_dark/apps/atom_icon.png b/themes/themes/local/omega_dark/apps/atom_icon.png
new file mode 100644
index 000000000..31f40b147
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/atom_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/calculation_icon.png b/themes/themes/local/omega_dark/apps/calculation_icon.png
new file mode 100644
index 000000000..be683df22
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/calculation_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/code_icon.png b/themes/themes/local/omega_dark/apps/code_icon.png
new file mode 100644
index 000000000..ded2ff52c
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/code_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/external_icon.png b/themes/themes/local/omega_dark/apps/external_icon.png
new file mode 100644
index 000000000..fc3b080f0
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/external_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/graph_icon.png b/themes/themes/local/omega_dark/apps/graph_icon.png
new file mode 100644
index 000000000..7d24ebeff
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/graph_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/probability_icon.png b/themes/themes/local/omega_dark/apps/probability_icon.png
new file mode 100644
index 000000000..f0c3239d6
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/probability_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/regression_icon.png b/themes/themes/local/omega_dark/apps/regression_icon.png
new file mode 100644
index 000000000..89a3eb295
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/regression_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/rpn_icon.png b/themes/themes/local/omega_dark/apps/rpn_icon.png
new file mode 100644
index 000000000..b3110f51c
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/rpn_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/sequence_icon.png b/themes/themes/local/omega_dark/apps/sequence_icon.png
new file mode 100644
index 000000000..c7854d75f
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/sequence_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/settings_icon.png b/themes/themes/local/omega_dark/apps/settings_icon.png
new file mode 100644
index 000000000..11927130b
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/settings_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/solver_icon.png b/themes/themes/local/omega_dark/apps/solver_icon.png
new file mode 100644
index 000000000..18ba2c8f0
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/solver_icon.png differ
diff --git a/themes/themes/local/omega_dark/apps/stat_icon.png b/themes/themes/local/omega_dark/apps/stat_icon.png
new file mode 100644
index 000000000..187bfdc85
Binary files /dev/null and b/themes/themes/local/omega_dark/apps/stat_icon.png differ
diff --git a/themes/themes/local/omega_dark/exam_icon.png b/themes/themes/local/omega_dark/exam_icon.png
new file mode 100644
index 000000000..ddd431adb
Binary files /dev/null and b/themes/themes/local/omega_dark/exam_icon.png differ
diff --git a/themes/themes/local/omega_dark/logo_icon.png b/themes/themes/local/omega_dark/logo_icon.png
new file mode 100644
index 000000000..259a0e826
Binary files /dev/null and b/themes/themes/local/omega_dark/logo_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/binomial_icon.png b/themes/themes/local/omega_dark/probability/binomial_icon.png
new file mode 100644
index 000000000..15ff2428b
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/binomial_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/calcul1_icon.png b/themes/themes/local/omega_dark/probability/calcul1_icon.png
new file mode 100644
index 000000000..1c36fdacd
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/calcul1_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/calcul2_icon.png b/themes/themes/local/omega_dark/probability/calcul2_icon.png
new file mode 100644
index 000000000..6b81a5ac5
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/calcul2_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/calcul3_icon.png b/themes/themes/local/omega_dark/probability/calcul3_icon.png
new file mode 100644
index 000000000..8d27e1b7c
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/calcul3_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/calcul4_icon.png b/themes/themes/local/omega_dark/probability/calcul4_icon.png
new file mode 100644
index 000000000..d538d0265
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/calcul4_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/chi_squared_icon.png b/themes/themes/local/omega_dark/probability/chi_squared_icon.png
new file mode 100644
index 000000000..42f44180c
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/chi_squared_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/exponential_icon.png b/themes/themes/local/omega_dark/probability/exponential_icon.png
new file mode 100644
index 000000000..72bd07892
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/exponential_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/fisher_icon.png b/themes/themes/local/omega_dark/probability/fisher_icon.png
new file mode 100644
index 000000000..c24b718fd
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/fisher_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_binomial_icon.png b/themes/themes/local/omega_dark/probability/focused_binomial_icon.png
new file mode 100644
index 000000000..80704de1f
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_binomial_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_calcul1_icon.png b/themes/themes/local/omega_dark/probability/focused_calcul1_icon.png
new file mode 100644
index 000000000..fe7f52c42
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_calcul1_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_calcul2_icon.png b/themes/themes/local/omega_dark/probability/focused_calcul2_icon.png
new file mode 100644
index 000000000..7be844a84
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_calcul2_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_calcul3_icon.png b/themes/themes/local/omega_dark/probability/focused_calcul3_icon.png
new file mode 100644
index 000000000..19f4ef7e2
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_calcul3_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_calcul4_icon.png b/themes/themes/local/omega_dark/probability/focused_calcul4_icon.png
new file mode 100644
index 000000000..1c6f38272
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_calcul4_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_chi_squared_icon.png b/themes/themes/local/omega_dark/probability/focused_chi_squared_icon.png
new file mode 100644
index 000000000..ce440f385
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_chi_squared_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_exponential_icon.png b/themes/themes/local/omega_dark/probability/focused_exponential_icon.png
new file mode 100644
index 000000000..7e5e787ec
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_exponential_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_fisher_icon.png b/themes/themes/local/omega_dark/probability/focused_fisher_icon.png
new file mode 100644
index 000000000..196f83c70
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_fisher_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_geometric_icon.png b/themes/themes/local/omega_dark/probability/focused_geometric_icon.png
new file mode 100644
index 000000000..69f13b098
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_geometric_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_normal_icon.png b/themes/themes/local/omega_dark/probability/focused_normal_icon.png
new file mode 100644
index 000000000..8fe542189
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_normal_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_poisson_icon.png b/themes/themes/local/omega_dark/probability/focused_poisson_icon.png
new file mode 100644
index 000000000..6a2ef05ba
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_poisson_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_student_icon.png b/themes/themes/local/omega_dark/probability/focused_student_icon.png
new file mode 100644
index 000000000..40ee240c7
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_student_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/focused_uniform_icon.png b/themes/themes/local/omega_dark/probability/focused_uniform_icon.png
new file mode 100644
index 000000000..b179e98e5
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/focused_uniform_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/geometric_icon.png b/themes/themes/local/omega_dark/probability/geometric_icon.png
new file mode 100644
index 000000000..d6816fcae
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/geometric_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/normal_icon.png b/themes/themes/local/omega_dark/probability/normal_icon.png
new file mode 100644
index 000000000..933fbb8f9
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/normal_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/poisson_icon.png b/themes/themes/local/omega_dark/probability/poisson_icon.png
new file mode 100644
index 000000000..c44ccd928
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/poisson_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/student_icon.png b/themes/themes/local/omega_dark/probability/student_icon.png
new file mode 100644
index 000000000..f55949ea7
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/student_icon.png differ
diff --git a/themes/themes/local/omega_dark/probability/uniform_icon.png b/themes/themes/local/omega_dark/probability/uniform_icon.png
new file mode 100644
index 000000000..baac0b460
Binary files /dev/null and b/themes/themes/local/omega_dark/probability/uniform_icon.png differ
diff --git a/themes/themes/local/omega_light.json b/themes/themes/local/omega_light.json
new file mode 100644
index 000000000..1e4ecf3da
--- /dev/null
+++ b/themes/themes/local/omega_light.json
@@ -0,0 +1,148 @@
+{
+ "name": "Omega Light",
+ "icons": "omega_light",
+ "colors": {
+ "PrimaryText": "000000",
+ "SecondaryText": "6e6e6e",
+ "AccentText": "00857f",
+ "ApproximateSignText": "595959",
+ "ApproximateExpressionText": "595959",
+ "Background": {
+ "Hard": "ffffff",
+ "Apps": "fafafa",
+ "AppsSecondary": "f0f0f0"
+ },
+ "Toolbar": {
+ "": "c03535",
+ "Text": "ffffff"
+ },
+ "ExpressionInput": {
+ "Background": "e0e0e0",
+ "Border": "d9d9d9"
+ },
+ "Grid": {
+ "PrimaryLine": "d9d9d9",
+ "SecondaryLine": "f5f5f5"
+ },
+ "Battery": {
+ "": "ffffff",
+ "InCharge": "179e1f",
+ "Low": "992321"
+ },
+ "ScrollBar": {
+ "Foreground": "4a4a4a",
+ "Background": "d9d9d9"
+ },
+ "Control": {
+ "": "00857f",
+ "Enabled": "00b2b0",
+ "Disabled": "9e9e9e"
+ },
+ "Calculation": {
+ "BackgroundOdd": "fafafa",
+ "BackgroundEven": "ffffff",
+ "EmptyBox": "c4c4c4",
+ "EmptyBoxNeeded": "00857f",
+ "TrigoAndComplexForeground": "ff000c"
+ },
+ "Code": {
+ "Background": "ffffff",
+ "BackgroundSelected": "e0e0e0",
+ "Text": "000000",
+ "Comment": "999988",
+ "Number": "009999",
+ "Keyword": "ff000c",
+ "Operator": "d73a49",
+ "String": "032f62",
+ "GutterViewBackground": "E4E6E7"
+ },
+ "Probability": {
+ "Curve": "00857f",
+ "CellBorder": "ececec",
+ "HistogramBar": "d9d9d9"
+ },
+ "Statistics": {
+ "Box": "00857f",
+ "BoxVerticalLine": "d9d9d9",
+ "Selected": "00857f",
+ "NotSelected": "f5f5f5"
+ },
+ "Graph": {
+ "Tangent": "595959"
+ },
+ "SubMenu": {
+ "Background": "e0e0e0",
+ "Border": "fafafa",
+ "Text": "000000"
+ },
+ "Toolbox": {
+ "HeaderBackground": "4a4a4a",
+ "HeaderText": "ffffff",
+ "HeaderBorder": "4a4a4a",
+ "Background": "000000"
+ },
+ "List": {
+ "CellBackground": "ffffff",
+ "CellBackgroundSelected": "e0e0e0",
+ "CellBorder": "ededef"
+ },
+ "Button": {
+ "Background": "e6e6e6",
+ "BackgroundSelected": "c9c9c9",
+ "BackgroundSelectedHighContrast": "00b2b0",
+ "Border": "adadad",
+ "RowBorder": "d9d9d9",
+ "BorderOut": "f5f5f5",
+ "Shadow": "003833",
+ "Text": "000000"
+ },
+ "Tab": {
+ "Background": "4a4a4a",
+ "BackgroundSelected": "757575",
+ "BackgroundActive": "fafafa",
+ "BackgroundSelectedAndActive": "e3e3e3",
+ "Text": "ffffff",
+ "TextActive": "000000"
+ },
+ "SubTab": {
+ "Background": "e0e0e0",
+ "BackgroundSelected": "d1d1d1",
+ "Text": "000000"
+ },
+ "Banner": {
+ "FirstBackground": "4a4a4a",
+ "FirstBorder": "4a4a4a",
+ "FirstText": "ffffff",
+ "FirstVariantBackground": "4a4a4a",
+ "FirstVariantBorder": "fafafa",
+ "FirstVariantText": "ffffff",
+ "SecondBackground": "e0e0e0",
+ "SecondBorder": "fafafa",
+ "SecondText": "000000"
+ },
+ "Home": {
+ "Background": "ffffff",
+ "CellBackground": "ffffff",
+ "CellBackgroundActive": "4a4a4a",
+ "CellText": "000000",
+ "CellTextActive": "ffffff",
+ "CellTextExternal": "008f87",
+ "CellTextExternalActive": "6fe6df"
+ },
+ "Atom": {
+ "Unknown": "eeeeee",
+ "Text": "000000",
+ "AlkaliMetal": "ffaa00",
+ "AlkaliEarthMetal": "f6f200",
+ "Lanthanide": "ffaa8b",
+ "Actinide": "deaacd",
+ "TransitionMetal": "de999c",
+ "PostTransitionMetal": "9cbaac",
+ "Metalloid": "52ce8b",
+ "Halogen": "00debd",
+ "ReactiveNonmetal": "00ee00",
+ "NobleGas": "8baaff",
+ "TableLines": "323532"
+ }
+ }
+}
diff --git a/themes/themes/local/omega_light/apps/atom_icon.png b/themes/themes/local/omega_light/apps/atom_icon.png
new file mode 100644
index 000000000..479517e6b
Binary files /dev/null and b/themes/themes/local/omega_light/apps/atom_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/calculation_icon.png b/themes/themes/local/omega_light/apps/calculation_icon.png
new file mode 100644
index 000000000..bea7ef39a
Binary files /dev/null and b/themes/themes/local/omega_light/apps/calculation_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/code_icon.png b/themes/themes/local/omega_light/apps/code_icon.png
new file mode 100644
index 000000000..5ecd11a51
Binary files /dev/null and b/themes/themes/local/omega_light/apps/code_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/external_icon.png b/themes/themes/local/omega_light/apps/external_icon.png
new file mode 100644
index 000000000..8079ebf49
Binary files /dev/null and b/themes/themes/local/omega_light/apps/external_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/graph_icon.png b/themes/themes/local/omega_light/apps/graph_icon.png
new file mode 100644
index 000000000..08f2ca7fb
Binary files /dev/null and b/themes/themes/local/omega_light/apps/graph_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/probability_icon.png b/themes/themes/local/omega_light/apps/probability_icon.png
new file mode 100644
index 000000000..5cc5aba6e
Binary files /dev/null and b/themes/themes/local/omega_light/apps/probability_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/regression_icon.png b/themes/themes/local/omega_light/apps/regression_icon.png
new file mode 100644
index 000000000..d6a099b80
Binary files /dev/null and b/themes/themes/local/omega_light/apps/regression_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/rpn_icon.png b/themes/themes/local/omega_light/apps/rpn_icon.png
new file mode 100644
index 000000000..7fbab9ee8
Binary files /dev/null and b/themes/themes/local/omega_light/apps/rpn_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/sequence_icon.png b/themes/themes/local/omega_light/apps/sequence_icon.png
new file mode 100644
index 000000000..f9904b763
Binary files /dev/null and b/themes/themes/local/omega_light/apps/sequence_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/settings_icon.png b/themes/themes/local/omega_light/apps/settings_icon.png
new file mode 100644
index 000000000..233db9a67
Binary files /dev/null and b/themes/themes/local/omega_light/apps/settings_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/solver_icon.png b/themes/themes/local/omega_light/apps/solver_icon.png
new file mode 100644
index 000000000..c3a01b7d5
Binary files /dev/null and b/themes/themes/local/omega_light/apps/solver_icon.png differ
diff --git a/themes/themes/local/omega_light/apps/stat_icon.png b/themes/themes/local/omega_light/apps/stat_icon.png
new file mode 100644
index 000000000..0d8ff1840
Binary files /dev/null and b/themes/themes/local/omega_light/apps/stat_icon.png differ
diff --git a/themes/themes/local/omega_light/exam_icon.png b/themes/themes/local/omega_light/exam_icon.png
new file mode 100644
index 000000000..ddd431adb
Binary files /dev/null and b/themes/themes/local/omega_light/exam_icon.png differ
diff --git a/themes/themes/local/omega_light/logo_icon.png b/themes/themes/local/omega_light/logo_icon.png
new file mode 100644
index 000000000..a738961cd
Binary files /dev/null and b/themes/themes/local/omega_light/logo_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/binomial_icon.png b/themes/themes/local/omega_light/probability/binomial_icon.png
new file mode 100644
index 000000000..1cd37632a
Binary files /dev/null and b/themes/themes/local/omega_light/probability/binomial_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/calcul1_icon.png b/themes/themes/local/omega_light/probability/calcul1_icon.png
new file mode 100644
index 000000000..dde561a15
Binary files /dev/null and b/themes/themes/local/omega_light/probability/calcul1_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/calcul2_icon.png b/themes/themes/local/omega_light/probability/calcul2_icon.png
new file mode 100644
index 000000000..8ccc3665c
Binary files /dev/null and b/themes/themes/local/omega_light/probability/calcul2_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/calcul3_icon.png b/themes/themes/local/omega_light/probability/calcul3_icon.png
new file mode 100644
index 000000000..e0e977ed5
Binary files /dev/null and b/themes/themes/local/omega_light/probability/calcul3_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/calcul4_icon.png b/themes/themes/local/omega_light/probability/calcul4_icon.png
new file mode 100644
index 000000000..da59c8212
Binary files /dev/null and b/themes/themes/local/omega_light/probability/calcul4_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/chi_squared_icon.png b/themes/themes/local/omega_light/probability/chi_squared_icon.png
new file mode 100644
index 000000000..75d6f6567
Binary files /dev/null and b/themes/themes/local/omega_light/probability/chi_squared_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/exponential_icon.png b/themes/themes/local/omega_light/probability/exponential_icon.png
new file mode 100644
index 000000000..e5d7a9233
Binary files /dev/null and b/themes/themes/local/omega_light/probability/exponential_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/fisher_icon.png b/themes/themes/local/omega_light/probability/fisher_icon.png
new file mode 100644
index 000000000..2fbc338fe
Binary files /dev/null and b/themes/themes/local/omega_light/probability/fisher_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_binomial_icon.png b/themes/themes/local/omega_light/probability/focused_binomial_icon.png
new file mode 100644
index 000000000..708f5e3fe
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_binomial_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_calcul1_icon.png b/themes/themes/local/omega_light/probability/focused_calcul1_icon.png
new file mode 100644
index 000000000..6be493131
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_calcul1_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_calcul2_icon.png b/themes/themes/local/omega_light/probability/focused_calcul2_icon.png
new file mode 100644
index 000000000..b27d66b7d
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_calcul2_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_calcul3_icon.png b/themes/themes/local/omega_light/probability/focused_calcul3_icon.png
new file mode 100644
index 000000000..fb176b3b8
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_calcul3_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_calcul4_icon.png b/themes/themes/local/omega_light/probability/focused_calcul4_icon.png
new file mode 100644
index 000000000..a6958bb83
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_calcul4_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_chi_squared_icon.png b/themes/themes/local/omega_light/probability/focused_chi_squared_icon.png
new file mode 100644
index 000000000..4e39938ef
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_chi_squared_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_exponential_icon.png b/themes/themes/local/omega_light/probability/focused_exponential_icon.png
new file mode 100644
index 000000000..be1c973a3
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_exponential_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_fisher_icon.png b/themes/themes/local/omega_light/probability/focused_fisher_icon.png
new file mode 100644
index 000000000..b232cf734
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_fisher_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_geometric_icon.png b/themes/themes/local/omega_light/probability/focused_geometric_icon.png
new file mode 100644
index 000000000..9c8f1a696
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_geometric_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_normal_icon.png b/themes/themes/local/omega_light/probability/focused_normal_icon.png
new file mode 100644
index 000000000..d4e5d1570
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_normal_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_poisson_icon.png b/themes/themes/local/omega_light/probability/focused_poisson_icon.png
new file mode 100644
index 000000000..8cdd14430
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_poisson_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_student_icon.png b/themes/themes/local/omega_light/probability/focused_student_icon.png
new file mode 100644
index 000000000..183899fc5
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_student_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/focused_uniform_icon.png b/themes/themes/local/omega_light/probability/focused_uniform_icon.png
new file mode 100644
index 000000000..10103f3a2
Binary files /dev/null and b/themes/themes/local/omega_light/probability/focused_uniform_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/geometric_icon.png b/themes/themes/local/omega_light/probability/geometric_icon.png
new file mode 100644
index 000000000..dd1c21567
Binary files /dev/null and b/themes/themes/local/omega_light/probability/geometric_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/normal_icon.png b/themes/themes/local/omega_light/probability/normal_icon.png
new file mode 100644
index 000000000..3401c5ff4
Binary files /dev/null and b/themes/themes/local/omega_light/probability/normal_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/poisson_icon.png b/themes/themes/local/omega_light/probability/poisson_icon.png
new file mode 100644
index 000000000..80dbdb306
Binary files /dev/null and b/themes/themes/local/omega_light/probability/poisson_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/student_icon.png b/themes/themes/local/omega_light/probability/student_icon.png
new file mode 100644
index 000000000..0a1b532ec
Binary files /dev/null and b/themes/themes/local/omega_light/probability/student_icon.png differ
diff --git a/themes/themes/local/omega_light/probability/uniform_icon.png b/themes/themes/local/omega_light/probability/uniform_icon.png
new file mode 100644
index 000000000..ce357069e
Binary files /dev/null and b/themes/themes/local/omega_light/probability/uniform_icon.png differ
diff --git a/themes/themes_manager.py b/themes/themes_manager.py
new file mode 100644
index 000000000..7690a2e74
--- /dev/null
+++ b/themes/themes_manager.py
@@ -0,0 +1,218 @@
+# themes_manager.py
+# Authors:
+# - Maxime "M4x1m3" FRIESS
+# - Quentin Guidee
+
+import sys
+import argparse
+import os
+import json
+import shutil
+import subprocess
+
+
+def check_for_git():
+ try:
+ output = subprocess.check_output(["git", "--version"])
+ return True
+ except FileNotFoundError:
+ print("ERROR: Git not found! Can't download theme from the internet.", file=sys.stderr)
+ return False
+
+
+def check_git_remote(remote_url):
+ try:
+ output = subprocess.check_output(["git", "ls-remote", remote_url], env=dict(os.environ, GIT_ASKPASS="/bin/true"), stderr=subprocess.PIPE)
+ return True
+ except subprocess.CalledProcessError:
+ print("ERROR: Invalid remote " + remote_url + "!", file=os.stderr)
+ return False
+
+
+def git_pull(folder):
+ try:
+ print("Updating " + folder + "...", file=sys.stderr)
+ output = subprocess.check_output(["git", "-C", folder, "pull"], env=dict(os.environ, GIT_ASKPASS="/bin/true"), stderr=subprocess.PIPE)
+ return True
+ except subprocess.CalledProcessError:
+ return False
+
+
+def git_clone(url, folder):
+ try:
+ print("Cloning " + url + " into " + folder + "...", file=sys.stderr)
+ output = subprocess.check_output(["git", "clone", url, folder, "--recurse-submodules"], env=dict(os.environ, GIT_ASKPASS="/bin/true"), stderr=subprocess.PIPE)
+ return True
+ except subprocess.CalledProcessError:
+ return False
+
+
+def get_icons_list():
+ """
+ Load icon list from file
+ """
+ with open(os.path.dirname(os.path.realpath(__file__)) + os.path.sep + "icons.json", "r") as json_file:
+ data = json.load(json_file)
+
+ return data
+
+
+def get_data(theme, path):
+ """
+ Load theme from file
+ """
+ try:
+ with open(path + os.path.sep + theme + ".json", "r") as json_file:
+ data = json.load(json_file)
+ except FileNotFoundError:
+ print("ERROR: Theme " + theme + " doesn't exist!", file=sys.stderr)
+ sys.exit(3)
+
+ return data
+
+
+def write_palette_h(data, file_p):
+ """
+ Write the header to file_p
+ """
+ file_p.write("#ifndef ESCHER_PALETTE_H\n")
+ file_p.write("#define ESCHER_PALETTE_H\n\n")
+ file_p.write("#include \n")
+ file_p.write("#include \n\n")
+ file_p.write("class Palette {\n")
+ file_p.write("public:\n")
+
+ for key in data["colors"].keys():
+ if type(data["colors"][key]) is str:
+ file_p.write(" constexpr static KDColor " + key + " = KDColor::RGB24(0x" + data["colors"][key] + ");\n")
+ else:
+ for sub_key in data["colors"][key].keys():
+ file_p.write(" constexpr static KDColor " + key + sub_key + " = KDColor::RGB24(0x" + data["colors"][key][sub_key] + ");\n")
+
+ # Default values - Sometimes never used
+ file_p.write(" constexpr static KDColor YellowDark = KDColor::RGB24(0xffb734);\n")
+ file_p.write(" constexpr static KDColor YellowLight = KDColor::RGB24(0xffcc7b);\n")
+ file_p.write(" constexpr static KDColor PurpleBright = KDColor::RGB24(0x656975);\n")
+ file_p.write(" constexpr static KDColor PurpleDark = KDColor::RGB24(0x414147);\n")
+ file_p.write(" constexpr static KDColor GreyWhite = KDColor::RGB24(0xf5f5f5);\n")
+ file_p.write(" constexpr static KDColor GreyBright = KDColor::RGB24(0xececec);\n")
+ file_p.write(" constexpr static KDColor GreyMiddle = KDColor::RGB24(0xd9d9d9);\n")
+ file_p.write(" constexpr static KDColor GreyDark = KDColor::RGB24(0xa7a7a7);\n")
+ file_p.write(" constexpr static KDColor GreyVeryDark = KDColor::RGB24(0x8c8c8c);\n")
+ file_p.write(" constexpr static KDColor Select = KDColor::RGB24(0xd4d7e0);\n")
+ file_p.write(" constexpr static KDColor SelectDark = KDColor::RGB24(0xb0b8d8);\n")
+ file_p.write(" constexpr static KDColor WallScreen = KDColor::RGB24(0xf7f9fa);\n")
+ file_p.write(" constexpr static KDColor WallScreenDark = KDColor::RGB24(0xe0e6ed);\n")
+ file_p.write(" constexpr static KDColor SubTab = KDColor::RGB24(0xb8bbc5);\n")
+ file_p.write(" constexpr static KDColor LowBattery = KDColor::RGB24(0xf30211);\n")
+ file_p.write(" constexpr static KDColor Red = KDColor::RGB24(0xff000c);\n")
+ file_p.write(" constexpr static KDColor RedLight = KDColor::RGB24(0xfe6363);\n")
+ file_p.write(" constexpr static KDColor Magenta = KDColor::RGB24(0xff0588);\n")
+ file_p.write(" constexpr static KDColor Turquoise = KDColor::RGB24(0x60c1ec);\n")
+ file_p.write(" constexpr static KDColor Pink = KDColor::RGB24(0xffabb6);\n")
+ file_p.write(" constexpr static KDColor Blue = KDColor::RGB24(0x5075f2);\n")
+ file_p.write(" constexpr static KDColor BlueLight = KDColor::RGB24(0x718fee);\n")
+ file_p.write(" constexpr static KDColor Orange = KDColor::RGB24(0xfe871f);\n")
+ file_p.write(" constexpr static KDColor Green = KDColor::RGB24(0x50c102);\n")
+ file_p.write(" constexpr static KDColor GreenLight = KDColor::RGB24(0x52db8f);\n")
+ file_p.write(" constexpr static KDColor Brown = KDColor::RGB24(0x8d7350);\n")
+ file_p.write(" constexpr static KDColor Purple = KDColor::RGB24(0x6e2d79);\n")
+ file_p.write(" constexpr static KDColor BlueishGrey = KDColor::RGB24(0x919ea4);\n")
+ file_p.write(" constexpr static KDColor Cyan = KDColorBlue;\n")
+ # End
+
+ file_p.write(" constexpr static KDColor DataColor[] = {Red, Blue, Green, YellowDark, Magenta, Turquoise, Pink, Orange};\n")
+ file_p.write(" constexpr static KDColor DataColorLight[] = {RedLight, BlueLight, GreenLight, YellowLight};\n")
+
+ file_p.write(" constexpr static KDColor AtomColor[] = {\n")
+ file_p.write(" AtomUnknown, AtomAlkaliMetal, AtomAlkaliEarthMetal, AtomLanthanide, AtomActinide, AtomTransitionMetal,\n")
+ file_p.write(" AtomPostTransitionMetal, AtomMetalloid, AtomHalogen, AtomReactiveNonmetal, AtomNobleGas\n")
+ file_p.write(" };\n\n")
+
+ file_p.write(" constexpr static size_t numberOfDataColors() { return sizeof(DataColor)/sizeof(KDColor); }\n")
+ file_p.write(" constexpr static size_t numberOfLightDataColors() { return sizeof(DataColorLight)/sizeof(KDColor); }\n")
+ file_p.write(" static KDColor nextDataColor(int * colorIndex);\n")
+ file_p.write("};\n\n")
+
+ file_p.write("#endif\n")
+
+
+def handle_git(args):
+ output_folder = os.path.basename(args.repo)
+ output_folder = output_folder[:-4] if output_folder.endswith(".git") else output_folder # Remove .git extension if present.
+
+ output_path = os.path.dirname(os.path.realpath(__file__)) + os.path.sep + "themes" + os.path.sep + "git" + os.path.sep + output_folder
+
+ if (not args.icon): # Assume .h is called before icons, avoiding lot of pull for nothing.
+ if (os.path.exists(output_path)): # If directory exists, try to pull
+ if (not git_pull(output_path)): # If can't pull, delete and re-clone.
+ shutil.rmtree(output_path)
+ git_clone(args.repo, output_path)
+ else: # If directory doesn't exist, clone.
+ git_clone(args.repo, output_path)
+
+ handle_theme(args, output_path)
+
+
+def handle_theme(args, path):
+ data = get_data(args.theme, path)
+
+ if (args.icon):
+ # Get the icon in the icon theme folder
+ icons = get_icons_list()
+
+ icon_path = path + os.path.sep + data["icons"] + os.path.sep + icons[args.output.replace(args.build_dir, "")]
+
+ # Check if the file exists
+ if os.path.isfile(icon_path):
+ # If yes, copy from theme
+ shutil.copyfile(icon_path, args.output)
+ else:
+ # If no, copy from src
+ print(" (!!) Icon " + icons[args.output.replace(args.build_dir, "")] + " not found in icon theme " + data["icons"] + ". Using default!")
+ shutil.copyfile(args.output.replace(args.build_dir, ""), args.output)
+ else:
+ if (args.stdout):
+ write_palette_h(data, sys.stdout)
+ else:
+ with open(args.output, "w") as palette_file:
+ write_palette_h(data, palette_file)
+
+
+def main(args):
+ if (args.list):
+ print(" ==== Local themes ====")
+ for file_info in os.listdir(os.path.dirname(os.path.realpath(__file__)) + os.path.sep + "themes" + os.path.sep + "local"):
+ if (file_info.endswith(".json")):
+ filename = os.path.splitext(file_info)[0]
+ print(filename)
+ sys.exit(0)
+ else:
+ if (args.theme == None or args.repo == None):
+ print("Please specify repo and theme or use --list!", file=sys.stderr)
+ sys.exit(2)
+
+ if args.repo == "local":
+ handle_theme(args, os.path.dirname(os.path.realpath(__file__)) + os.path.sep + "themes" + os.path.sep + "local")
+ else:
+ if check_for_git():
+ if (check_git_remote(args.repo)):
+ handle_git(args)
+ else:
+ sys.exit(5)
+ else:
+ sys.exit(6)
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Process the themes.")
+ parser.add_argument("repo", nargs="?", help="git remote from wtich to get the themes from. Set to \"local\" for included themes")
+ parser.add_argument("theme", nargs="?", help="the name of the theme")
+ parser.add_argument("output", nargs="?", help="path to the output header file")
+ parser.add_argument("build_dir", nargs="?", help="path to the output folder")
+ parser.add_argument("-l", "--list", help="list locals themes", action="store_true")
+ parser.add_argument("-i", "--icon", help="outputs an icon instead of a header", action="store_true")
+ parser.add_argument("--stdout", help="print palette.h to stdout", action="store_true")
+
+ args = parser.parse_args()
+ main(args)