From 919c891498813f680a22cc3ccbaae82b50bdc313 Mon Sep 17 00:00:00 2001
From: Francesco <franzbianconero@gmail.com>
Date: Thu, 7 Sep 2017 14:01:28 +0200
Subject: [PATCH] 6.3j

---
 .../consolelauncher/LauncherActivity.java     |   1 -
 .../ohi/andre/consolelauncher/UIManager.java  | 156 ++++++----
 .../commands/main/MainPack.java               |   3 -
 .../commands/main/raw/tuixt.java              |   2 -
 .../commands/tuixt/TuixtActivity.java         |  59 ++--
 .../consolelauncher/managers/AppsManager.java |   6 +-
 .../consolelauncher/managers/SkinManager.java | 269 ------------------
 .../managers/TerminalManager.java             |  56 ++--
 .../managers/ThemesManager.java               |   2 -
 .../managers/XMLPrefsManager.java             |  57 +++-
 .../suggestions/SuggestionRunnable.java       | 121 ++++++--
 .../tuils/InputOutputReceiver.java            |   5 +-
 .../consolelauncher/tuils/TimeManager.java    |  28 +-
 .../andre/consolelauncher/tuils/Tuils.java    |  47 ++-
 app/src/main/res/values/strings.xml           |   2 +-
 15 files changed, 370 insertions(+), 444 deletions(-)
 delete mode 100755 app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java

diff --git a/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java b/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java
index ab8c991..735bd32 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/LauncherActivity.java
@@ -319,7 +319,6 @@ public class LauncherActivity extends AppCompatActivity implements Reloadable {
             startService(monitor);
 
             Intent timeColorIntent = new Intent(this, NotificationService.class);
-            Tuils.log(XMLPrefsManager.get(XMLPrefsManager.Theme.time_color));
             timeColorIntent.putExtra(XMLPrefsManager.Theme.time_color.label(), XMLPrefsManager.getColor(XMLPrefsManager.Theme.time_color));
             startService(timeColorIntent);
         }
diff --git a/app/src/main/java/ohi/andre/consolelauncher/UIManager.java b/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
index 189809a..4921455 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/UIManager.java
@@ -7,6 +7,7 @@ import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Typeface;
+import android.os.Build;
 import android.os.Handler;
 import android.text.Editable;
 import android.text.TextUtils;
@@ -28,7 +29,6 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -38,7 +38,6 @@ import ohi.andre.consolelauncher.commands.ExecutePack;
 import ohi.andre.consolelauncher.commands.main.MainPack;
 import ohi.andre.consolelauncher.commands.specific.RedirectCommand;
 import ohi.andre.consolelauncher.managers.MessagesManager;
-import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.TerminalManager;
 import ohi.andre.consolelauncher.managers.XMLPrefsManager;
 import ohi.andre.consolelauncher.managers.suggestions.SuggestionRunnable;
@@ -64,8 +63,6 @@ public class UIManager implements OnTouchListener {
 
     protected Context mContext;
 
-    private SkinManager skinManager;
-
     private DevicePolicyManager policy;
     private ComponentName component;
     private GestureDetector det;
@@ -103,40 +100,62 @@ public class UIManager implements OnTouchListener {
         }
     };
 
+    int batterySize, ramSize, storageSize, timeSize;
+
     private OnBatteryUpdate batteryUpdate = new OnBatteryUpdate() {
+
+        boolean manyStatus, loaded;
+        int colorHigh, colorMedium, colorLow;
+
         @Override
         public void update(float p) {
+            if(!loaded) {
+                loaded = true;
+
+                manyStatus = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.enable_battery_status);
+                colorHigh = XMLPrefsManager.getColor(XMLPrefsManager.Theme.battery_color_high);
+                colorMedium = XMLPrefsManager.getColor(XMLPrefsManager.Theme.battery_color_medium);
+                colorLow = XMLPrefsManager.getColor(XMLPrefsManager.Theme.battery_color_low);
+            }
+
             int percentage = (int) p;
 
             int color;
 
-            if(skinManager.manyColorsBattery) {
-                if(percentage > mediumPercentage) color = skinManager.battery_color_high;
-                else if(percentage > lowPercentage) color = skinManager.battery_color_medium;
-                else color = skinManager.battery_color_low;
+            if(manyStatus) {
+                if(percentage > mediumPercentage) color = colorHigh;
+                else if(percentage > lowPercentage) color = colorMedium;
+                else color = colorLow;
             } else {
-                color = skinManager.battery_color_high;
+                color = colorHigh;
             }
 
             if(batteryFormat == null) batteryFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.battery_format);
 
             String cp = batteryFormat.replaceAll("%[vV]", String.valueOf(percentage)).replaceAll("%[nN]", Tuils.NEWLINE);
-            batteryText = Tuils.color(cp, color);
+            batteryText = Tuils.span(mContext, cp, color, batterySize);
             UIManager.this.update(batteryIndex);
         }
     };
 
-    private final String INT_AV = "%iav";
-    private final String INT_TOT = "%itot";
-    private final String EXT_AV = "%eav";
-    private final String EXT_TOT = "%etot";
-
-    private List<Pattern> storagePatterns;
-    private String storageFormat;
     private Runnable storageRunnable = new Runnable() {
+
+        private final String INT_AV = "%iav";
+        private final String INT_TOT = "%itot";
+        private final String EXT_AV = "%eav";
+        private final String EXT_TOT = "%etot";
+
+        private List<Pattern> storagePatterns;
+        private String storageFormat;
+
+        int color;
+
         @Override
         public void run() {
-            if(storageFormat == null) storageFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.storage_format);
+            if(storageFormat == null) {
+                storageFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.storage_format);
+                color = XMLPrefsManager.getColor(XMLPrefsManager.Theme.storage_color);
+            }
 
             if(storagePatterns == null) {
                 storagePatterns = new ArrayList<>();
@@ -215,16 +234,25 @@ public class UIManager implements OnTouchListener {
             copy = storagePatterns.get(25).matcher(copy).replaceAll(Matcher.quoteReplacement(String.valueOf(Tuils.formatSize((long) eav, Tuils.GIGA))));
             copy = storagePatterns.get(26).matcher(copy).replaceAll(Matcher.quoteReplacement(String.valueOf(Tuils.formatSize((long) etot, Tuils.GIGA))));
 
-            storageText = Tuils.color(copy, info.skinManager.storageColor);
+            storageText = Tuils.span(mContext, copy, color, storageSize);
             update(storageIndex);
             ts[storageIndex].postDelayed(this, STORAGE_DELAY);
         }
     };
 
     private Runnable timeRunnable = new Runnable() {
+
+        boolean active;
+        int color;
+
         @Override
         public void run() {
-            timeText = TimeManager.replace("%t0", skinManager.time_color);
+            if(!active) {
+                active = true;
+                color = XMLPrefsManager.getColor(XMLPrefsManager.Theme.time_color);
+            }
+
+            timeText = TimeManager.replace(mContext, timeSize, "%t0", color);
             update(timeIndex);
             ts[timeIndex].postDelayed(this, TIME_DELAY);
         }
@@ -233,15 +261,23 @@ public class UIManager implements OnTouchListener {
     private ActivityManager.MemoryInfo memory;
     private ActivityManager activityManager;
 
-    private final String AV = "%av";
-    private final String TOT = "%tot";
-
-    List<Pattern> ramPatterns;
-    String ramFormat;
     private Runnable ramRunnable = new Runnable() {
+
+        private final String AV = "%av";
+        private final String TOT = "%tot";
+
+        List<Pattern> ramPatterns;
+        String ramFormat;
+
+        int color;
+
         @Override
         public void run() {
-            if(ramFormat == null) ramFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.ram_format);
+            if(ramFormat == null) {
+                ramFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.ram_format);
+
+                color = XMLPrefsManager.getColor(XMLPrefsManager.Theme.ram_color);
+            }
 
             if(ramPatterns == null) {
                 ramPatterns = new ArrayList<>();
@@ -282,7 +318,7 @@ public class UIManager implements OnTouchListener {
 
             copy = ramPatterns.get(11).matcher(copy).replaceAll(Matcher.quoteReplacement(Tuils.NEWLINE));
 
-            ramText = Tuils.color(copy, info.skinManager.ramColor);
+            ramText = Tuils.span(mContext, copy, color, ramSize);
             update(ramIndex);
             ts[ramIndex].postDelayed(this, RAM_DELAY);
         }
@@ -324,7 +360,7 @@ public class UIManager implements OnTouchListener {
 
     private TextView terminalView;
     private Thread lastSuggestionThread;
-    private Handler activityHandler;
+    private Handler handler = new Handler();
     private Runnable removeAllSuggestions = new Runnable() {
         @Override
         public void run() {
@@ -397,29 +433,19 @@ public class UIManager implements OnTouchListener {
 
         if (suggestionViewParams == null) {
             suggestionViewParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-            suggestionViewParams.setMargins(SkinManager.SUGGESTION_MARGIN, 0, SkinManager.SUGGESTION_MARGIN, 0);
+            suggestionViewParams.setMargins(15, 0, 15, 0);
             suggestionViewParams.gravity = Gravity.CENTER_VERTICAL;
         }
 
         if(suggestionRunnable == null) {
-            suggestionRunnable = new SuggestionRunnable(skinManager, suggestionsView, suggestionViewParams, (HorizontalScrollView) suggestionsView.getParent());
-        }
-
-        if(activityHandler == null) {
-            Field field;
-            try {
-                field = mContext.getClass().getSuperclass().getDeclaredField("mHandler");
-                field.setAccessible(true);
-                activityHandler = (Handler) field.get(mContext);
-            }
-            catch (Exception e) {}
+            suggestionRunnable = new SuggestionRunnable(suggestionsView, suggestionViewParams, (HorizontalScrollView) suggestionsView.getParent());
         }
 
         if (lastSuggestionThread != null) {
             lastSuggestionThread.interrupt();
             suggestionRunnable.interrupt();
-            if(activityHandler != null) {
-                activityHandler.removeCallbacks(suggestionRunnable);
+            if(handler != null) {
+                handler.removeCallbacks(suggestionRunnable);
             }
         }
 
@@ -530,14 +556,11 @@ public class UIManager implements OnTouchListener {
         final Typeface lucidaConsole = Typeface.createFromAsset(context.getAssets(), "lucida_console.ttf");
 
         imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
-        skinManager = new SkinManager();
 
-        this.info.skinManager = skinManager;
-
-        if (!skinManager.useSystemWp || !canApplyTheme) {
-            rootView.setBackgroundColor(skinManager.bgColor);
+        if (!XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_wallpaper) || !canApplyTheme) {
+            rootView.setBackgroundColor(XMLPrefsManager.getColor(XMLPrefsManager.Theme.bg_color));
         } else {
-            rootView.setBackgroundColor(skinManager.overlayColor);
+            rootView.setBackgroundColor(XMLPrefsManager.getColor(XMLPrefsManager.Theme.overlay_color));
         }
 
 //        scrolllllll
@@ -559,6 +582,11 @@ public class UIManager implements OnTouchListener {
         topMM = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.top_margin_mm);
         bottomMM = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.bottom_margin_mm);
 
+        timeSize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.time_size);
+        ramSize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.ram_size);
+        batterySize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.battery_size);
+        storageSize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.storage_size);
+
         DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
         rootView.setPadding(Tuils.mmToPx(metrics, leftMM), Tuils.mmToPx(metrics, topMM), Tuils.mmToPx(metrics, rightMM), Tuils.mmToPx(metrics, bottomMM));
 
@@ -589,7 +617,7 @@ public class UIManager implements OnTouchListener {
         final int BATTERY = 4;
         final int STORAGE = 5;
 
-        Typeface t = skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole;
+        final Typeface t = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_font) ? Typeface.DEFAULT : lucidaConsole;
 
         AllowEqualsSequence sequence = new AllowEqualsSequence(new int[] {rIndex, dIndex, bIndex, tIndex, sIndex}, new Integer[] {RAM, DEVICE, BATTERY, TIME, STORAGE});
         for(int count = 0; count < ts.length; count++) {
@@ -619,7 +647,6 @@ public class UIManager implements OnTouchListener {
 
             if(count >= sequence.getMinKey() && count <= sequence.getMaxKey() && os.length > 0) {
                 ts[count].setTypeface(t);
-                ts[count].setTextSize(skinManager.getTextSize());
             } else {
                 ts[count].setVisibility(View.GONE);
             }
@@ -642,11 +669,17 @@ public class UIManager implements OnTouchListener {
 
             String deviceFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.device_format);
 
-            deviceFormat = USERNAME.matcher(deviceFormat).replaceAll(Matcher.quoteReplacement(skinManager.username != null ? skinManager.username : "null"));
-            deviceFormat = DV.matcher(deviceFormat).replaceAll(Matcher.quoteReplacement(skinManager.deviceName != null ? skinManager.deviceName : "null"));
+            String username = XMLPrefsManager.get(XMLPrefsManager.Ui.username);
+            String deviceName = XMLPrefsManager.get(XMLPrefsManager.Ui.deviceName);
+            if (deviceName == null || deviceName.length() == 0) {
+                deviceName = Build.DEVICE;
+            }
+
+            deviceFormat = USERNAME.matcher(deviceFormat).replaceAll(Matcher.quoteReplacement(username != null ? username : "null"));
+            deviceFormat = DV.matcher(deviceFormat).replaceAll(Matcher.quoteReplacement(deviceName));
             deviceFormat = NEWLINE.matcher(deviceFormat).replaceAll(Matcher.quoteReplacement(Tuils.NEWLINE));
 
-            deviceText = Tuils.color(deviceFormat, skinManager.deviceColor);
+            deviceText = Tuils.span(mContext, deviceFormat, XMLPrefsManager.getColor(XMLPrefsManager.Theme.device_color), XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.device_size));
             update(this.deviceIndex);
         }
 
@@ -658,8 +691,6 @@ public class UIManager implements OnTouchListener {
             mediumPercentage = XMLPrefsManager.get(int.class, XMLPrefsManager.Behavior.battery_medium);
             lowPercentage = XMLPrefsManager.get(int.class, XMLPrefsManager.Behavior.battery_low);
 
-            if(mediumPercentage < lowPercentage) skinManager.manyColorsBattery = false;
-
             Tuils.registerBatteryReceiver(context, batteryUpdate);
         } else {
             batteryUpdate = null;
@@ -705,7 +736,7 @@ public class UIManager implements OnTouchListener {
             pasteView = (ImageButton) inputOutputView.findViewById(R.id.paste_view);
         }
 
-        if (skinManager.showSuggestions) {
+        if (XMLPrefsManager.get(boolean.class, XMLPrefsManager.Suggestions.show_suggestions)) {
             showSuggestions = true;
 
             HorizontalScrollView sv = (HorizontalScrollView) rootView.findViewById(R.id.suggestions_container);
@@ -726,6 +757,9 @@ public class UIManager implements OnTouchListener {
             suggestionsManager = new SuggestionsManager();
 
             this.suggestionViewDecorer = new SuggestionViewDecorer() {
+
+                final int PADDING = 15;
+
                 @Override
                 public TextView getSuggestionView(Context context) {
                     TextView textView = new TextView(mContext);
@@ -735,14 +769,14 @@ public class UIManager implements OnTouchListener {
                     textView.setLongClickable(false);
                     textView.setClickable(true);
 
-                    textView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-                    textView.setTextSize(skinManager.getSuggestionSize());
+                    textView.setTypeface(t);
+                    textView.setTextSize(XMLPrefsManager.get(int.class, XMLPrefsManager.Suggestions.suggestions_size));
 
-                    textView.setPadding(SkinManager.SUGGESTION_PADDING_HORIZONTAL, SkinManager.SUGGESTION_PADDING_VERTICAL,
-                            SkinManager.SUGGESTION_PADDING_HORIZONTAL, SkinManager.SUGGESTION_PADDING_VERTICAL);
+                    textView.setPadding(PADDING, PADDING, PADDING, PADDING);
 
                     textView.setLines(1);
                     textView.setMaxLines(1);
+
                     return textView;
                 }
             };
@@ -761,7 +795,7 @@ public class UIManager implements OnTouchListener {
             det = null;
         } else initDetector();
 
-        mTerminalAdapter = new TerminalManager(terminalView, inputView, prefixView, submitView, backView, nextView, deleteView, pasteView, skinManager, context, mainPack);
+        mTerminalAdapter = new TerminalManager(terminalView, inputView, prefixView, submitView, backView, nextView, deleteView, pasteView, context, mainPack);
         mTerminalAdapter.setInputListener(inputListener);
 
         if(XMLPrefsManager.get(boolean.class, XMLPrefsManager.Behavior.show_hints)) {
diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/main/MainPack.java b/app/src/main/java/ohi/andre/consolelauncher/commands/main/MainPack.java
index 6d7f55a..6d32798 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/commands/main/MainPack.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/commands/main/MainPack.java
@@ -15,7 +15,6 @@ import ohi.andre.consolelauncher.commands.ExecutePack;
 import ohi.andre.consolelauncher.managers.AliasManager;
 import ohi.andre.consolelauncher.managers.AppsManager;
 import ohi.andre.consolelauncher.managers.ContactManager;
-import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.XMLPrefsManager;
 import ohi.andre.consolelauncher.managers.flashlight.TorchManager;
 import ohi.andre.consolelauncher.managers.music.MusicManager2;
@@ -34,8 +33,6 @@ public class MainPack extends ExecutePack {
     //	current directory
     public File currentDirectory;
 
-    public SkinManager skinManager;
-
     //	resources references
     public Resources res;
 
diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/main/raw/tuixt.java b/app/src/main/java/ohi/andre/consolelauncher/commands/main/raw/tuixt.java
index 9872dd3..1bf4339 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/commands/main/raw/tuixt.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/commands/main/raw/tuixt.java
@@ -32,7 +32,6 @@ public class tuixt implements CommandAbstraction {
         Intent intent = new Intent(info.context, TuixtActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.putExtra(TuixtActivity.PATH, file.getAbsolutePath());
-        intent.putExtra(TuixtActivity.SKIN, info.skinManager);
         ((Activity) info.context).startActivityForResult(intent, LauncherActivity.TUIXT_REQUEST);
 
         return Tuils.EMPTYSTRING;
@@ -82,7 +81,6 @@ public class tuixt implements CommandAbstraction {
 
         Intent intent = new Intent(info.context, TuixtActivity.class);
         intent.putExtra(TuixtActivity.PATH, file.getAbsolutePath());
-        intent.putExtra(TuixtActivity.SKIN, info.skinManager);
         ((Activity) info.context).startActivityForResult(intent, LauncherActivity.TUIXT_REQUEST);
 
         return Tuils.EMPTYSTRING;
diff --git a/app/src/main/java/ohi/andre/consolelauncher/commands/tuixt/TuixtActivity.java b/app/src/main/java/ohi/andre/consolelauncher/commands/tuixt/TuixtActivity.java
index cc7bd3d..9aeacbf 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/commands/tuixt/TuixtActivity.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/commands/tuixt/TuixtActivity.java
@@ -3,7 +3,6 @@ package ohi.andre.consolelauncher.commands.tuixt;
 import android.app.Activity;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.res.Resources;
 import android.graphics.Typeface;
 import android.net.Uri;
 import android.os.Bundle;
@@ -31,7 +30,7 @@ import ohi.andre.consolelauncher.commands.Command;
 import ohi.andre.consolelauncher.commands.CommandGroup;
 import ohi.andre.consolelauncher.commands.CommandTuils;
 import ohi.andre.consolelauncher.managers.FileManager;
-import ohi.andre.consolelauncher.managers.SkinManager;
+import ohi.andre.consolelauncher.managers.XMLPrefsManager;
 import ohi.andre.consolelauncher.tuils.Tuils;
 
 /**
@@ -47,7 +46,6 @@ public class TuixtActivity extends Activity {
     private long lastEnter;
 
     public static String PATH = "path";
-    public static String SKIN = "skin";
 
     public static String ERROR_KEY = "error";
 
@@ -77,23 +75,19 @@ public class TuixtActivity extends Activity {
 
         CommandGroup group = new CommandGroup(this, "ohi.andre.consolelauncher.commands.tuixt.raw");
 
-        SkinManager skinManager = intent.getParcelableExtra(SKIN);
-        if(skinManager == null) {
-            try {
-                Resources res = getResources();
-                skinManager = new SkinManager();
-            } catch (Exception e) {
-                return;
-            }
+        try {
+            XMLPrefsManager.create(this);
+        } catch (Exception e) {
+            finish();
         }
 
-        if (!skinManager.useSystemWp) {
-            rootView.setBackgroundColor(skinManager.bgColor);
+        if (!XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_wallpaper)) {
+            rootView.setBackgroundColor(XMLPrefsManager.getColor(XMLPrefsManager.Theme.bg_color));
         } else {
             setTheme(R.style.Custom_SystemWP);
         }
 
-        final boolean inputBottom = skinManager.inputBottom;
+        final boolean inputBottom = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.input_bottom);
         int layoutId = inputBottom ? R.layout.tuixt_view_input_down : R.layout.tuixt_view_input_up;
 
         LayoutInflater inflater = getLayoutInflater();
@@ -107,21 +101,26 @@ public class TuixtActivity extends Activity {
         TextView prefixView = (TextView) inputOutputView.findViewById(R.id.prefix_view);
 
         ImageButton submitView = (ImageButton) inputOutputView.findViewById(R.id.submit_tv);
-        boolean showSubmit = skinManager.showSubmit;
+        boolean showSubmit = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.show_enter_button);
         if (!showSubmit) {
             submitView.setVisibility(View.GONE);
             submitView = null;
         }
 
-        String prefix = skinManager.prefix;
+        String prefix = XMLPrefsManager.get(XMLPrefsManager.Ui.input_prefix);
+
+        Typeface t = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_font) ? Typeface.DEFAULT : lucidaConsole;
+        int ioSize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.input_output_size);
+        int outputColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.output_color);
+        int inputColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.input_color);
 
-        prefixView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        prefixView.setTextColor(skinManager.inputColor);
-        prefixView.setTextSize(skinManager.getTextSize());
+        prefixView.setTypeface(t);
+        prefixView.setTextColor(inputColor);
+        prefixView.setTextSize(ioSize);
         prefixView.setText(prefix.endsWith(Tuils.SPACE) ? prefix : prefix + Tuils.SPACE);
 
         if (submitView != null) {
-            submitView.setColorFilter(skinManager.inputColor);
+            submitView.setColorFilter(XMLPrefsManager.getColor(XMLPrefsManager.Theme.enter_color));
             submitView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -130,9 +129,9 @@ public class TuixtActivity extends Activity {
             });
         }
 
-        fileView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        fileView.setTextSize(skinManager.getTextSize());
-        fileView.setTextColor(skinManager.outputColor);
+        fileView.setTypeface(t);
+        fileView.setTextSize(ioSize);
+        fileView.setTextColor(outputColor);
         fileView.setOnTouchListener(new View.OnTouchListener() {
             @Override
             public boolean onTouch(View v, MotionEvent event) {
@@ -145,16 +144,16 @@ public class TuixtActivity extends Activity {
             }
         });
 
-        outputView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        outputView.setTextSize(skinManager.getTextSize());
-        outputView.setTextColor(skinManager.outputColor);
+        outputView.setTypeface(t);
+        outputView.setTextSize(ioSize);
+        outputView.setTextColor(outputColor);
         outputView.setMovementMethod(new ScrollingMovementMethod());
         outputView.setVisibility(View.GONE);
 
-        inputView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        inputView.setTextSize(skinManager.getTextSize());
-        inputView.setTextColor(skinManager.inputColor);
-        inputView.setHint(Tuils.getHint(skinManager, path));
+        inputView.setTypeface(t);
+        inputView.setTextSize(ioSize);
+        inputView.setTextColor(inputColor);
+        inputView.setHint(Tuils.getHint(path));
 
         inputView.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
         inputView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/AppsManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/AppsManager.java
index 177a104..5078618 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/AppsManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/AppsManager.java
@@ -754,8 +754,8 @@ public class AppsManager implements XMLPrefsManager.XmlPrefsElement {
     public static class Group implements MainManager.Group {
         List<LaunchInfo> apps;
 
-        int bgColor = SkinManager.COLOR_NOT_SET;
-        int foreColor = SkinManager.COLOR_NOT_SET;
+        int bgColor = Integer.MAX_VALUE;
+        int foreColor = Integer.MAX_VALUE;
 
         String name;
 
@@ -1286,7 +1286,7 @@ public class AppsManager implements XMLPrefsManager.XmlPrefsElement {
             builder.append("launched_times: ").append(app.launchedTimes).append(Tuils.NEWLINE).append(Tuils.NEWLINE);
 
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
-                builder.append("Install: ").append(TimeManager.replace("%t0", info.firstInstallTime, SkinManager.COLOR_NOT_SET)).append(Tuils.NEWLINE).append(Tuils.NEWLINE);
+                builder.append("Install: ").append(TimeManager.replace("%t0", info.firstInstallTime, Integer.MAX_VALUE)).append(Tuils.NEWLINE).append(Tuils.NEWLINE);
             }
 
             ActivityInfo[] a = info.activities;
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java
deleted file mode 100755
index 4708be1..0000000
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/SkinManager.java
+++ /dev/null
@@ -1,269 +0,0 @@
-package ohi.andre.consolelauncher.managers;
-
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Build;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import ohi.andre.consolelauncher.managers.suggestions.SuggestionsManager;
-
-public class SkinManager implements Parcelable {
-
-    public static final int SUGGESTION_PADDING_VERTICAL = 15;
-    public static final int SUGGESTION_PADDING_HORIZONTAL = 15;
-    public static final int SUGGESTION_MARGIN = 20;
-
-    private static final int suggestionScale = 0;
-
-    private static final int textScale = 3;
-
-    public static final int COLOR_NOT_SET = 16777216;
-
-    public int globalFontSize;
-
-    public String deviceName;
-    public int deviceColor, inputColor, outputColor, ramColor, bgColor, overlayColor, toolbarColor, toolbarBg, enter_color, time_color, battery_color_high, battery_color_medium, battery_color_low,
-            storageColor;
-
-    public boolean useSystemWp, showSuggestions, systemFont, inputBottom, showSubmit, manyColorsBattery;
-
-    public String username = null, prefix = null, ssnInfoFormat = null;
-
-    private int suggDefaultText, suggDefaultBg, suggAliasText, suggAliasBg, suggSongText, suggSongBg, suggContactText, suggContactBg, suggAppText, suggAppBg, suggCmdText, suggCmdBg, suggFileText, suggFileBg;
-    private boolean transparentSuggestions;
-
-    public SkinManager() {
-        systemFont = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_font);
-        inputBottom = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.input_bottom);
-        showSubmit = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.show_enter_button);
-
-        manyColorsBattery = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.enable_battery_status);
-
-        globalFontSize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.font_size);
-
-        useSystemWp = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_wallpaper);
-        overlayColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.overlay_color);
-        bgColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.bg_color);
-
-        deviceColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.device_color);
-        ramColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.ram_color);
-        inputColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.input_color);
-        outputColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.output_color);
-        toolbarColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_color);
-        toolbarBg = XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_bg);
-        enter_color = XMLPrefsManager.getColor(XMLPrefsManager.Theme.enter_color);
-        time_color = XMLPrefsManager.getColor(XMLPrefsManager.Theme.time_color);
-        storageColor = XMLPrefsManager.getColor(XMLPrefsManager.Theme.storage_color);
-        battery_color_high = XMLPrefsManager.getColor(XMLPrefsManager.Theme.battery_color_high);
-        if(manyColorsBattery) {
-            battery_color_medium = XMLPrefsManager.getColor(XMLPrefsManager.Theme.battery_color_medium);
-            battery_color_low = XMLPrefsManager.getColor(XMLPrefsManager.Theme.battery_color_low);
-        }
-
-        prefix = XMLPrefsManager.get(String.class, XMLPrefsManager.Ui.input_prefix);
-
-        deviceName = XMLPrefsManager.get(String.class, XMLPrefsManager.Ui.deviceName);
-        if (deviceName.length() == 0 || deviceName.equals("null")) {
-            deviceName = Build.DEVICE;
-        }
-
-        username = XMLPrefsManager.get(String.class, XMLPrefsManager.Ui.username);
-
-        ssnInfoFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.session_info_format);
-
-        showSuggestions = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Suggestions.show_suggestions);
-        if (showSuggestions) {
-
-            suggDefaultText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.default_text_color);
-            suggDefaultBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.default_bg_color);
-            transparentSuggestions = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Suggestions.transparent_suggestions);
-
-            if(transparentSuggestions && suggDefaultText == bgColor) {
-                suggDefaultText = Color.GREEN;
-            } else {
-                suggAppText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.apps_text_color);
-                suggAppBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.apps_bg_color);
-
-                suggAliasText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.alias_text_color);
-                suggAliasBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.alias_bg_color);
-
-                suggCmdText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.cmd_text_color);
-                suggCmdBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.cmd_bg_color);
-
-                suggContactText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.contact_text_color);
-                suggContactBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.contact_bg_color);
-
-                suggFileText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.file_text_color);
-                suggFileBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.file_bg_color);
-
-                suggSongText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.song_text_color);
-                suggSongBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.song_bg_color);
-            }
-        }
-    }
-
-    protected SkinManager(Parcel in) {
-        globalFontSize = in.readInt();
-        deviceName = in.readString();
-        deviceColor = in.readInt();
-        inputColor = in.readInt();
-        outputColor = in.readInt();
-        ramColor = in.readInt();
-        bgColor = in.readInt();
-        overlayColor = in.readInt();
-        toolbarColor = in.readInt();
-        toolbarBg = in.readInt();
-        enter_color = in.readInt();
-        time_color = in.readInt();
-        battery_color_high = in.readInt();
-        battery_color_medium = in.readInt();
-        battery_color_low = in.readInt();
-        useSystemWp = in.readByte() != 0;
-        showSuggestions = in.readByte() != 0;
-        systemFont = in.readByte() != 0;
-        inputBottom = in.readByte() != 0;
-        showSubmit = in.readByte() != 0;
-        manyColorsBattery = in.readByte() != 0;
-        username = in.readString();
-        ssnInfoFormat = in.readString();
-        suggDefaultText = in.readInt();
-        suggDefaultBg = in.readInt();
-        suggAliasText = in.readInt();
-        suggAliasBg = in.readInt();
-        suggSongText = in.readInt();
-        suggSongBg = in.readInt();
-        suggContactText = in.readInt();
-        suggContactBg = in.readInt();
-        suggAppText = in.readInt();
-        suggAppBg = in.readInt();
-        suggCmdText = in.readInt();
-        suggCmdBg = in.readInt();
-        suggFileText = in.readInt();
-        suggFileBg = in.readInt();
-        transparentSuggestions = in.readByte() != 0;
-        prefix = in.readString();
-    }
-
-    public static final Creator<SkinManager> CREATOR = new Creator<SkinManager>() {
-        @Override
-        public SkinManager createFromParcel(Parcel in) {
-            return new SkinManager(in);
-        }
-
-        @Override
-        public SkinManager[] newArray(int size) {
-            return new SkinManager[size];
-        }
-    };
-
-    public ColorDrawable getSuggestionBg(Integer type) {
-        if(transparentSuggestions) {
-            return new ColorDrawable(Color.TRANSPARENT);
-        } else {
-            switch (type) {
-                case SuggestionsManager.Suggestion.TYPE_APP:
-                    return new ColorDrawable(suggAppBg);
-                case SuggestionsManager.Suggestion.TYPE_ALIAS:
-                    return new ColorDrawable(suggAliasBg);
-                case SuggestionsManager.Suggestion.TYPE_COMMAND:
-                    return new ColorDrawable(suggCmdBg);
-                case SuggestionsManager.Suggestion.TYPE_CONTACT:
-                    return new ColorDrawable(suggContactBg);
-                case SuggestionsManager.Suggestion.TYPE_FILE:
-                    return new ColorDrawable(suggFileBg);
-                case SuggestionsManager.Suggestion.TYPE_SONG:
-                    return new ColorDrawable(suggSongBg);
-                default:
-                    return new ColorDrawable(suggDefaultBg);
-            }
-        }
-    }
-
-    public int getSuggestionTextColor(Integer type) {
-        int chosen;
-
-        switch (type) {
-            case SuggestionsManager.Suggestion.TYPE_APP:
-                chosen = suggAppText;
-                break;
-            case SuggestionsManager.Suggestion.TYPE_ALIAS:
-                chosen = suggAliasText;
-                break;
-            case SuggestionsManager.Suggestion.TYPE_COMMAND:
-                chosen = suggCmdText;
-                break;
-            case SuggestionsManager.Suggestion.TYPE_CONTACT:
-                chosen = suggContactText;
-                break;
-            case SuggestionsManager.Suggestion.TYPE_FILE:
-                chosen = suggFileText;
-                break;
-            case SuggestionsManager.Suggestion.TYPE_SONG:
-                chosen = suggSongText;
-                break;
-            default:
-                chosen = suggDefaultText;
-                break;
-        }
-
-        if(chosen == COLOR_NOT_SET) chosen = suggDefaultText;
-        return chosen;
-    }
-
-    public int getTextSize() {
-        return globalFontSize - textScale;
-    }
-
-    public int getSuggestionSize() {
-        return globalFontSize - suggestionScale;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(globalFontSize);
-        dest.writeString(deviceName);
-        dest.writeInt(deviceColor);
-        dest.writeInt(inputColor);
-        dest.writeInt(outputColor);
-        dest.writeInt(ramColor);
-        dest.writeInt(bgColor);
-        dest.writeInt(overlayColor);
-        dest.writeInt(toolbarColor);
-        dest.writeInt(toolbarBg);
-        dest.writeInt(enter_color);
-        dest.writeInt(time_color);
-        dest.writeInt(battery_color_high);
-        dest.writeInt(battery_color_medium);
-        dest.writeInt(battery_color_low);
-        dest.writeByte((byte) (useSystemWp ? 1 : 0));
-        dest.writeByte((byte) (showSuggestions ? 1 : 0));
-        dest.writeByte((byte) (systemFont ? 1 : 0));
-        dest.writeByte((byte) (inputBottom ? 1 : 0));
-        dest.writeByte((byte) (showSubmit ? 1 : 0));
-        dest.writeByte((byte) (manyColorsBattery ? 1 : 0));
-        dest.writeString(username);
-        dest.writeString(ssnInfoFormat);
-        dest.writeInt(suggDefaultText);
-        dest.writeInt(suggDefaultBg);
-        dest.writeInt(suggAliasText);
-        dest.writeInt(suggAliasBg);
-        dest.writeInt(suggSongText);
-        dest.writeInt(suggSongBg);
-        dest.writeInt(suggContactText);
-        dest.writeInt(suggContactBg);
-        dest.writeInt(suggAppText);
-        dest.writeInt(suggAppBg);
-        dest.writeInt(suggCmdText);
-        dest.writeInt(suggCmdBg);
-        dest.writeInt(suggFileText);
-        dest.writeInt(suggFileBg);
-        dest.writeByte((byte) (transparentSuggestions ? 1 : 0));
-        dest.writeString(prefix);
-    }
-}
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalManager.java
index 09d2a94..04e876c 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/TerminalManager.java
@@ -79,8 +79,6 @@ public class TerminalManager {
         }
     };
 
-    private SkinManager mSkinManager;
-
     private UIManager.OnNewInputListener mInputListener;
 //    private UIManager.SuggestionNavigator mSuggestionNavigator;
 
@@ -106,15 +104,14 @@ public class TerminalManager {
     private Context mContext;
 
     public TerminalManager(final TextView terminalView, EditText inputView, TextView prefixView, ImageButton submitView, final ImageButton backView, ImageButton nextView, ImageButton deleteView,
-                           ImageButton pasteView, SkinManager skinManager, final Context context, MainPack mainPack) {
-        if (terminalView == null || inputView == null || prefixView == null || skinManager == null)
+                           ImageButton pasteView, final Context context, MainPack mainPack) {
+        if (terminalView == null || inputView == null || prefixView == null)
             throw new UnsupportedOperationException();
 
         this.mContext = context;
 
         final Typeface lucidaConsole = Typeface.createFromAsset(context.getAssets(), "lucida_console.ttf");
 
-        this.mSkinManager = skinManager;
         this.mainPack = mainPack;
 
         this.clearAfterMs = XMLPrefsManager.get(int.class, XMLPrefsManager.Behavior.clear_after_seconds) * 1000;
@@ -124,17 +121,20 @@ public class TerminalManager {
         inputFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.input_format);
         outputFormat = XMLPrefsManager.get(String.class, XMLPrefsManager.Behavior.output_format);
 
-        prefix = skinManager.prefix;
+        prefix = XMLPrefsManager.get(XMLPrefsManager.Ui.input_prefix);
         suPrefix = XMLPrefsManager.get(String.class, XMLPrefsManager.Ui.input_root_prefix);
 
-        prefixView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        prefixView.setTextColor(this.mSkinManager.inputColor);
-        prefixView.setTextSize(this.mSkinManager.getTextSize());
+        int ioSize = XMLPrefsManager.get(int.class, XMLPrefsManager.Ui.input_output_size);
+
+        Typeface t = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.system_font) ? Typeface.DEFAULT : lucidaConsole;
+        prefixView.setTypeface(t);
+        prefixView.setTextColor(XMLPrefsManager.getColor(XMLPrefsManager.Theme.input_color));
+        prefixView.setTextSize(ioSize);
         prefixView.setText(prefix.endsWith(Tuils.SPACE) ? prefix : prefix + Tuils.SPACE);
         this.mPrefix = prefixView;
 
         if (submitView != null) {
-            submitView.setColorFilter(mSkinManager.enter_color);
+            submitView.setColorFilter(XMLPrefsManager.getColor(XMLPrefsManager.Theme.enter_color));
             submitView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -144,8 +144,8 @@ public class TerminalManager {
         }
 
         if (backView != null) {
-            ((View) backView.getParent()).setBackgroundColor(mSkinManager.toolbarBg);
-            backView.setColorFilter(this.mSkinManager.toolbarColor);
+            ((View) backView.getParent()).setBackgroundColor(XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_bg));
+            backView.setColorFilter(XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_color));
             backView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -155,7 +155,7 @@ public class TerminalManager {
         }
 
         if (nextView != null) {
-            nextView.setColorFilter(this.mSkinManager.toolbarColor);
+            nextView.setColorFilter(XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_color));
             nextView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -165,7 +165,7 @@ public class TerminalManager {
         }
 
         if (pasteView != null) {
-            pasteView.setColorFilter(this.mSkinManager.toolbarColor);
+            pasteView.setColorFilter(XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_color));
             pasteView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -178,7 +178,7 @@ public class TerminalManager {
         }
 
         if (deleteView != null) {
-            deleteView.setColorFilter(this.mSkinManager.toolbarColor);
+            deleteView.setColorFilter(XMLPrefsManager.getColor(XMLPrefsManager.Theme.toolbar_color));
             deleteView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -188,8 +188,8 @@ public class TerminalManager {
         }
 
         this.mTerminalView = terminalView;
-        this.mTerminalView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        this.mTerminalView.setTextSize(mSkinManager.getTextSize());
+        this.mTerminalView.setTypeface(t);
+        this.mTerminalView.setTextSize(ioSize);
         this.mTerminalView.setFocusable(false);
         setupScroller();
 
@@ -231,10 +231,10 @@ public class TerminalManager {
         this.mScrollView = (ScrollView) v;
 
         this.mInputView = inputView;
-        this.mInputView.setTextSize(mSkinManager.getTextSize());
-        this.mInputView.setTextColor(mSkinManager.inputColor);
-        this.mInputView.setTypeface(skinManager.systemFont ? Typeface.DEFAULT : lucidaConsole);
-        this.mInputView.setHint(Tuils.getHint(skinManager, mainPack.currentDirectory.getAbsolutePath()));
+        this.mInputView.setTextSize(ioSize);
+        this.mInputView.setTextColor(XMLPrefsManager.getColor(XMLPrefsManager.Theme.input_color));
+        this.mInputView.setTypeface(t);
+        this.mInputView.setHint(Tuils.getHint(mainPack.currentDirectory.getAbsolutePath()));
         this.mInputView.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
         this.mInputView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
 
@@ -271,7 +271,7 @@ public class TerminalManager {
         mInputView.setText(Tuils.EMPTYSTRING);
 
         if(defaultHint) {
-            mInputView.setHint(Tuils.getHint(mSkinManager, mainPack.currentDirectory.getAbsolutePath()));
+            mInputView.setHint(Tuils.getHint(mainPack.currentDirectory.getAbsolutePath()));
         }
 
         requestInputFocus();
@@ -329,8 +329,8 @@ public class TerminalManager {
             return;
         }
 
-        if(color == SkinManager.COLOR_NOT_SET) {
-            color = mSkinManager.outputColor;
+        if(color == Integer.MAX_VALUE) {
+            color = XMLPrefsManager.getColor(XMLPrefsManager.Theme.output_color);
         }
 
         SpannableString si = new SpannableString(output);
@@ -398,9 +398,9 @@ public class TerminalManager {
 
                 boolean su = t.toString().startsWith("su ") || suMode;
 
-                SpannableString si = Tuils.color(inputFormat, mSkinManager.inputColor);
+                SpannableString si = Tuils.span(inputFormat, XMLPrefsManager.getColor(XMLPrefsManager.Theme.input_color));
 
-                s = TimeManager.replace(si, mSkinManager.time_color);
+                s = TimeManager.replace(si,XMLPrefsManager.getColor(XMLPrefsManager.Theme.time_color));
                 s = TextUtils.replace(s,
                         new String[] {FORMAT_INPUT, FORMAT_PREFIX, FORMAT_NEWLINE,
                                 FORMAT_INPUT.toUpperCase(), FORMAT_PREFIX.toUpperCase(), FORMAT_NEWLINE.toUpperCase()},
@@ -410,7 +410,7 @@ public class TerminalManager {
             case CATEGORY_OUTPUT:
                 t = t.toString().trim();
 
-                SpannableString so = Tuils.color(outputFormat, mSkinManager.outputColor);
+                SpannableString so = Tuils.span(outputFormat, XMLPrefsManager.getColor(XMLPrefsManager.Theme.output_color));
 
                 s = TextUtils.replace(so,
                         new String[] {FORMAT_OUTPUT, FORMAT_NEWLINE, FORMAT_OUTPUT.toUpperCase(), FORMAT_NEWLINE.toUpperCase()},
@@ -456,7 +456,7 @@ public class TerminalManager {
         defaultHint = true;
 
         if(mInputView != null) {
-            mInputView.setHint(Tuils.getHint(mSkinManager, mainPack.currentDirectory.getAbsolutePath()));
+            mInputView.setHint(Tuils.getHint(mainPack.currentDirectory.getAbsolutePath()));
         }
     }
 
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/ThemesManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/ThemesManager.java
index 46509c6..409b59d 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/ThemesManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/ThemesManager.java
@@ -117,8 +117,6 @@ public class ThemesManager {
                 Tuils.addPrefix(strings, Tuils.DOUBLE_SPACE);
                 Tuils.insertHeaders(strings, false);
 
-                Tuils.log(strings.toString());
-
                 Tuils.sendOutput(context, Tuils.toPlanString(strings, Tuils.NEWLINE));
             }
 
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/XMLPrefsManager.java b/app/src/main/java/ohi/andre/consolelauncher/managers/XMLPrefsManager.java
index d68c60f..2eecd7c 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/XMLPrefsManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/XMLPrefsManager.java
@@ -2,6 +2,7 @@ package ohi.andre.consolelauncher.managers;
 
 import android.content.Context;
 import android.graphics.Color;
+import android.os.Build;
 import android.os.Environment;
 
 import org.w3c.dom.Document;
@@ -203,10 +204,40 @@ public class XMLPrefsManager {
                 return "false";
             }
         },
-        font_size {
+        ram_size {
             @Override
             public String defaultValue() {
-                return "15";
+                return "13";
+            }
+        },
+        battery_size {
+            @Override
+            public String defaultValue() {
+                return "13";
+            }
+        },
+        device_size {
+            @Override
+            public String defaultValue() {
+                return "13";
+            }
+        },
+        time_size {
+            @Override
+            public String defaultValue() {
+                return "13";
+            }
+        },
+        storage_size {
+            @Override
+            public String defaultValue() {
+                return "13";
+            }
+        },
+        input_output_size {
+            @Override
+            public String defaultValue() {
+                return "13";
             }
         },
         input_bottom {
@@ -260,7 +291,7 @@ public class XMLPrefsManager {
         deviceName {
             @Override
             public String defaultValue() {
-                return "";
+                return Build.DEVICE;
             }
         },
         system_wallpaper {
@@ -358,6 +389,12 @@ public class XMLPrefsManager {
             public String defaultValue() {
                 return "true";
             }
+        },
+        show_session_info {
+            @Override
+            public String defaultValue() {
+                return "true";
+            }
         };
 
         @Override
@@ -516,6 +553,12 @@ public class XMLPrefsManager {
             public String defaultValue() {
                 return "true";
             }
+        },
+        suggestions_size {
+            @Override
+            public String defaultValue() {
+                return "12";
+            }
         };
 
         @Override
@@ -931,7 +974,11 @@ public class XMLPrefsManager {
 
     private XMLPrefsManager() {}
 
+    static boolean called = false;
     public static void create(Context context) throws Exception {
+        if(called) return;
+        called = true;
+
         File folder = Tuils.getFolder();
 
         for(XMLPrefsRoot element : XMLPrefsRoot.values()) {
@@ -1267,13 +1314,13 @@ public class XMLPrefsManager {
         } catch (Exception e) {
             String def = prefsSave.defaultValue();
             if(def == null || def.length() == 0) {
-                return SkinManager.COLOR_NOT_SET;
+                return Integer.MAX_VALUE;
             }
 
             try {
                 return (int) transform(def, Color.class);
             } catch (Exception e1) {
-                return SkinManager.COLOR_NOT_SET;
+                return Integer.MAX_VALUE;
             }
         }
     }
diff --git a/app/src/main/java/ohi/andre/consolelauncher/managers/suggestions/SuggestionRunnable.java b/app/src/main/java/ohi/andre/consolelauncher/managers/suggestions/SuggestionRunnable.java
index b8c3180..3efc0a5 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/managers/suggestions/SuggestionRunnable.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/managers/suggestions/SuggestionRunnable.java
@@ -15,6 +15,9 @@ See the License for the specific language governing permissions and
 limitations under the License.*/
 
 import android.app.Activity;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.HorizontalScrollView;
@@ -23,7 +26,7 @@ import android.widget.TextView;
 
 import ohi.andre.consolelauncher.R;
 import ohi.andre.consolelauncher.managers.AppsManager;
-import ohi.andre.consolelauncher.managers.SkinManager;
+import ohi.andre.consolelauncher.managers.XMLPrefsManager;
 
 public class SuggestionRunnable implements Runnable {
 
@@ -44,12 +47,9 @@ public class SuggestionRunnable implements Runnable {
 
     private SuggestionsManager.Suggestion[] suggestions;
 
-    private SkinManager skinManager;
-
     private boolean interrupted;
 
-    public SuggestionRunnable(SkinManager skinManager, ViewGroup suggestionsView, LinearLayout.LayoutParams suggestionViewParams, HorizontalScrollView parent) {
-        this.skinManager = skinManager;
+    public SuggestionRunnable(ViewGroup suggestionsView, LinearLayout.LayoutParams suggestionViewParams, HorizontalScrollView parent) {
         this.suggestionsView = suggestionsView;
         this.suggestionViewParams = suggestionViewParams;
         this.scrollView = parent;
@@ -97,8 +97,8 @@ public class SuggestionRunnable implements Runnable {
                 toRecycle[count].setText(s);
 
 //                bg and fore
-                int bgColor = SkinManager.COLOR_NOT_SET;
-                int foreColor = SkinManager.COLOR_NOT_SET;
+                int bgColor = Integer.MAX_VALUE;
+                int foreColor = Integer.MAX_VALUE;
                 if(suggestions[count].type == SuggestionsManager.Suggestion.TYPE_APP) {
 
                     Object o = suggestions[count].object;
@@ -119,10 +119,10 @@ public class SuggestionRunnable implements Runnable {
                     }
                 }
 
-                if(bgColor != SkinManager.COLOR_NOT_SET) toRecycle[count].setBackgroundColor(bgColor);
-                else toRecycle[count].setBackgroundDrawable(skinManager.getSuggestionBg(suggestions[count].type));
-                if(foreColor != SkinManager.COLOR_NOT_SET) toRecycle[count].setTextColor(foreColor);
-                else toRecycle[count].setTextColor(skinManager.getSuggestionTextColor(suggestions[count].type));
+                if(bgColor != Integer.MAX_VALUE) toRecycle[count].setBackgroundColor(bgColor);
+                else toRecycle[count].setBackgroundDrawable(getSuggestionBg(suggestions[count].type));
+                if(foreColor != Integer.MAX_VALUE) toRecycle[count].setTextColor(foreColor);
+                else toRecycle[count].setTextColor(getSuggestionTextColor(suggestions[count].type));
 //                end bg and fore
 
                 if(suggestions[count].type == SuggestionsManager.Suggestion.TYPE_CONTACT) {
@@ -140,8 +140,8 @@ public class SuggestionRunnable implements Runnable {
                     toAdd[space].setText(s);
 
 //                    bg and fore
-                    int bgColor = SkinManager.COLOR_NOT_SET;
-                    int foreColor = SkinManager.COLOR_NOT_SET;
+                    int bgColor = Integer.MAX_VALUE;
+                    int foreColor = Integer.MAX_VALUE;
                     if(suggestions[count].type == SuggestionsManager.Suggestion.TYPE_APP) {
 
                         Object o = suggestions[count].object;
@@ -162,10 +162,12 @@ public class SuggestionRunnable implements Runnable {
                         }
                     }
 
-                    if(bgColor != SkinManager.COLOR_NOT_SET) toAdd[space].setBackgroundColor(bgColor);
-                    else toAdd[space].setBackgroundDrawable(skinManager.getSuggestionBg(suggestions[count].type));
-                    if(foreColor != SkinManager.COLOR_NOT_SET) toAdd[space].setTextColor(foreColor);
-                    else toAdd[space].setTextColor(skinManager.getSuggestionTextColor(suggestions[count].type));
+                    if(bgColor != Integer.MAX_VALUE) toAdd[space].setBackgroundColor(bgColor);
+                    else toAdd[space].setBackgroundDrawable(getSuggestionBg(suggestions[count].type));
+                    if(foreColor != Integer.MAX_VALUE) toAdd[space].setTextColor(foreColor);
+                    else {
+                        toAdd[space].setTextColor(getSuggestionTextColor(suggestions[count].type));
+                    }
 //                    end bg and fore
 
                     if(toAdd[space].getParent() == null) {
@@ -195,4 +197,89 @@ public class SuggestionRunnable implements Runnable {
     public void reset() {
         interrupted = false;
     }
+
+    static boolean transparentSuggestions, bgLoad = false, textLoad = false;
+    static int suggAppBg, suggAliasBg, suggCmdBg, suggContactBg, suggFileBg, suggSongBg, suggDefaultBg;
+    static int suggAppText, suggAliasText, suggCmdText, suggContactText, suggFileText, suggSongText, suggDefaultText;
+
+    public static Drawable getSuggestionBg(int type) {
+        if(!bgLoad) {
+            bgLoad = true;
+
+            transparentSuggestions = XMLPrefsManager.get(boolean.class, XMLPrefsManager.Suggestions.transparent_suggestions);
+            if(!transparentSuggestions) {
+                suggAppBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.apps_bg_color);
+                suggAliasBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.alias_bg_color);
+                suggCmdBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.cmd_bg_color);
+                suggContactBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.contact_bg_color);
+                suggFileBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.file_bg_color);
+                suggSongBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.song_bg_color);
+                suggDefaultBg = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.default_bg_color);
+            }
+        }
+
+        if(transparentSuggestions) {
+            return new ColorDrawable(Color.TRANSPARENT);
+        } else {
+            switch (type) {
+                case SuggestionsManager.Suggestion.TYPE_APP:
+                    return new ColorDrawable(suggAppBg);
+                case SuggestionsManager.Suggestion.TYPE_ALIAS:
+                    return new ColorDrawable(suggAliasBg);
+                case SuggestionsManager.Suggestion.TYPE_COMMAND:
+                    return new ColorDrawable(suggCmdBg);
+                case SuggestionsManager.Suggestion.TYPE_CONTACT:
+                    return new ColorDrawable(suggContactBg);
+                case SuggestionsManager.Suggestion.TYPE_FILE:
+                    return new ColorDrawable(suggFileBg);
+                case SuggestionsManager.Suggestion.TYPE_SONG:
+                    return new ColorDrawable(suggSongBg);
+                default:
+                    return new ColorDrawable(suggDefaultBg);
+            }
+        }
+    }
+
+    public static int getSuggestionTextColor(int type) {
+        if(!textLoad) {
+            textLoad = true;
+
+            suggAppText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.apps_text_color);
+            suggAliasText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.alias_text_color);
+            suggCmdText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.cmd_text_color);
+            suggContactText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.contact_text_color);
+            suggDefaultText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.default_text_color);
+            suggFileText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.file_text_color);
+            suggSongText = XMLPrefsManager.getColor(XMLPrefsManager.Suggestions.song_text_color);
+        }
+
+        int chosen;
+
+        switch (type) {
+            case SuggestionsManager.Suggestion.TYPE_APP:
+                chosen = suggAppText;
+                break;
+            case SuggestionsManager.Suggestion.TYPE_ALIAS:
+                chosen = suggAliasText;
+                break;
+            case SuggestionsManager.Suggestion.TYPE_COMMAND:
+                chosen = suggCmdText;
+                break;
+            case SuggestionsManager.Suggestion.TYPE_CONTACT:
+                chosen = suggContactText;
+                break;
+            case SuggestionsManager.Suggestion.TYPE_FILE:
+                chosen = suggFileText;
+                break;
+            case SuggestionsManager.Suggestion.TYPE_SONG:
+                chosen = suggSongText;
+                break;
+            default:
+                chosen = suggDefaultText;
+                break;
+        }
+
+        if(chosen == Integer.MAX_VALUE) chosen = suggDefaultText;
+        return chosen;
+    }
 }
diff --git a/app/src/main/java/ohi/andre/consolelauncher/tuils/InputOutputReceiver.java b/app/src/main/java/ohi/andre/consolelauncher/tuils/InputOutputReceiver.java
index 4d6cd7a..4f21af2 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/tuils/InputOutputReceiver.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/tuils/InputOutputReceiver.java
@@ -7,7 +7,6 @@ import android.os.Bundle;
 import android.support.v4.app.NotificationManagerCompat;
 import android.support.v4.app.RemoteInput;
 
-import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.TerminalManager;
 import ohi.andre.consolelauncher.tuils.interfaces.CommandExecuter;
 import ohi.andre.consolelauncher.tuils.interfaces.Outputable;
@@ -48,9 +47,9 @@ public class InputOutputReceiver extends BroadcastReceiver {
             if(intent.getAction().equals(ACTION_CMD)) {
                 executer.exec(text.toString());
             } else {
-                int color = intent.getIntExtra(COLOR, SkinManager.COLOR_NOT_SET);
+                int color = intent.getIntExtra(COLOR, Integer.MAX_VALUE);
 
-                if(color != SkinManager.COLOR_NOT_SET) {
+                if(color != Integer.MAX_VALUE) {
                     outputable.onOutput(color, text);
                 }
                 else {
diff --git a/app/src/main/java/ohi/andre/consolelauncher/tuils/TimeManager.java b/app/src/main/java/ohi/andre/consolelauncher/tuils/TimeManager.java
index 32fe762..8aec731 100644
--- a/app/src/main/java/ohi/andre/consolelauncher/tuils/TimeManager.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/tuils/TimeManager.java
@@ -1,16 +1,17 @@
 package ohi.andre.consolelauncher.tuils;
 
+import android.content.Context;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.format.Time;
+import android.text.style.AbsoluteSizeSpan;
 import android.text.style.ForegroundColorSpan;
 
 import java.util.Arrays;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.XMLPrefsManager;
 
 /**
@@ -44,7 +45,7 @@ public class TimeManager {
     }
 
     public static CharSequence replace(CharSequence cs) {
-        return replace(cs, -1, SkinManager.COLOR_NOT_SET);
+        return replace(cs, -1, Integer.MAX_VALUE);
     }
 
     public static CharSequence replace(CharSequence cs, int color) {
@@ -52,6 +53,14 @@ public class TimeManager {
     }
 
     public static CharSequence replace(CharSequence cs, long tm, int color) {
+        return replace(null, Integer.MAX_VALUE, cs, tm, color);
+    }
+
+    public static CharSequence replace(Context context, int size, CharSequence cs, int color) {
+        return replace(context, size, cs, -1, color);
+    }
+
+    public static CharSequence replace(Context context, int size, CharSequence cs, long tm, int color) {
         if(tm == -1) {
             time.setToNow();
         } else {
@@ -66,13 +75,16 @@ public class TimeManager {
 
                 String tf = time.format(t);
 
-                SpannableString spannableString = null;
-                if(color != SkinManager.COLOR_NOT_SET) {
-                    spannableString = new SpannableString(tf);
-                    spannableString.setSpan(new ForegroundColorSpan(color), 0, tf.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+                SpannableString spannableString = new SpannableString(tf);
+                if(color != Integer.MAX_VALUE) {
+                    spannableString.setSpan(new ForegroundColorSpan(color), 0, tf.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+                }
+
+                if(size != Integer.MAX_VALUE && context != null) {
+                    spannableString.setSpan(new AbsoluteSizeSpan(Tuils.convertSpToPixels(size, context)), 0, tf.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                 }
 
-                cs = TextUtils.replace(cs, new String[] {"%t" + matcher.group(count)}, new CharSequence[] {spannableString != null ? spannableString : tf});
+                cs = TextUtils.replace(cs, new String[] {"%t" + matcher.group(count)}, new CharSequence[] {spannableString});
             }
         }
 
@@ -82,7 +94,7 @@ public class TimeManager {
         String tf = time.format(t);
 
         SpannableString spannableString = null;
-        if(color != SkinManager.COLOR_NOT_SET) {
+        if(color != Integer.MAX_VALUE) {
             spannableString = new SpannableString(tf);
             spannableString.setSpan(new ForegroundColorSpan(color), 0, tf.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
         }
diff --git a/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java b/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java
index 8a9f63f..0d13ed7 100755
--- a/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java
+++ b/app/src/main/java/ohi/andre/consolelauncher/tuils/Tuils.java
@@ -23,6 +23,7 @@ import android.provider.Settings;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.TextUtils;
+import android.text.style.AbsoluteSizeSpan;
 import android.text.style.ForegroundColorSpan;
 import android.util.DisplayMetrics;
 import android.util.Log;
@@ -53,7 +54,6 @@ import java.util.regex.Pattern;
 
 import dalvik.system.DexFile;
 import ohi.andre.consolelauncher.BuildConfig;
-import ohi.andre.consolelauncher.managers.SkinManager;
 import ohi.andre.consolelauncher.managers.XMLPrefsManager;
 import ohi.andre.consolelauncher.managers.music.MusicManager2;
 import ohi.andre.consolelauncher.managers.music.Song;
@@ -287,12 +287,25 @@ public class Tuils {
         return round(result, 2);
     }
 
-    public static SpannableString color(String text, int color) {
+    public static SpannableString span(String text, int color) {
+        return span(null, text, color, Integer.MAX_VALUE);
+    }
+
+    public static SpannableString span(Context context, int size, String text) {
+        return span(context, text, Integer.MAX_VALUE, size);
+    }
+
+    public static SpannableString span(Context context, String text, int color, int size) {
         SpannableString spannableString = new SpannableString(text);
-        spannableString.setSpan(new ForegroundColorSpan(color), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        if(size != Integer.MAX_VALUE && context != null) spannableString.setSpan(new AbsoluteSizeSpan(convertSpToPixels(size, context)), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        if(color != Integer.MAX_VALUE) spannableString.setSpan(new ForegroundColorSpan(color), 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         return spannableString;
     }
 
+    public static int convertSpToPixels(float sp, Context context) {
+        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics());
+    }
+
     public static void delete(File dir) {
         for(File f : dir.listFiles()) {
             if(f.isDirectory()) delete(f);
@@ -336,7 +349,7 @@ public class Tuils {
     }
 
     public static void sendOutput(Context context, int res) {
-        sendOutput(SkinManager.COLOR_NOT_SET, context, res);
+        sendOutput(Integer.MAX_VALUE, context, res);
     }
 
     public static void sendOutput(int color, Context context, int res) {
@@ -344,7 +357,7 @@ public class Tuils {
     }
 
     public static void sendOutput(Context context, int res, int type) {
-        sendOutput(SkinManager.COLOR_NOT_SET, context, res, type);
+        sendOutput(Integer.MAX_VALUE, context, res, type);
     }
 
     public static void sendOutput(int color, Context context, int res, int type) {
@@ -352,7 +365,7 @@ public class Tuils {
     }
 
     public static void sendOutput(Context context, CharSequence s) {
-        sendOutput(SkinManager.COLOR_NOT_SET, context, s);
+        sendOutput(Integer.MAX_VALUE, context, s);
     }
 
     public static void sendOutput(int color, Context context, CharSequence s) {
@@ -360,7 +373,7 @@ public class Tuils {
     }
 
     public static void sendOutput(Context context, CharSequence s, int type) {
-        sendOutput(SkinManager.COLOR_NOT_SET, context, s, type);
+        sendOutput(Integer.MAX_VALUE, context, s, type);
     }
 
     public static void sendOutput(int color, Context context, CharSequence s, int type) {
@@ -481,12 +494,22 @@ public class Tuils {
     static Pattern pd = Pattern.compile("%d", Pattern.CASE_INSENSITIVE | Pattern.LITERAL);
     static Pattern pu = Pattern.compile("%u", Pattern.CASE_INSENSITIVE | Pattern.LITERAL);
     static Pattern pp = Pattern.compile("%p", Pattern.CASE_INSENSITIVE | Pattern.LITERAL);
-    public static String getHint(SkinManager skinManager, String currentPath) {
-        String format = skinManager.ssnInfoFormat;
+    public static String getHint(String currentPath) {
+        if(!XMLPrefsManager.get(boolean.class, XMLPrefsManager.Ui.show_session_info)) return null;
+
+        String format = XMLPrefsManager.get(XMLPrefsManager.Behavior.session_info_format);
         if(format.length() == 0) return null;
 
-        format = pd.matcher(format).replaceAll(Matcher.quoteReplacement(skinManager.deviceName));
-        format = pu.matcher(format).replaceAll(Matcher.quoteReplacement(skinManager.username));
+        String deviceName = XMLPrefsManager.get(XMLPrefsManager.Ui.deviceName);
+        if(deviceName == null || deviceName.length() == 0) {
+            deviceName = Build.DEVICE;
+        }
+
+        String username = XMLPrefsManager.get(XMLPrefsManager.Ui.username);
+        if(username == null) username = Tuils.EMPTYSTRING;
+
+        format = pd.matcher(format).replaceAll(Matcher.quoteReplacement(deviceName));
+        format = pu.matcher(format).replaceAll(Matcher.quoteReplacement(username));
         format = pp.matcher(format).replaceAll(Matcher.quoteReplacement(Tuils.getNicePath(currentPath)));
 
         return format;
@@ -562,6 +585,8 @@ public class Tuils {
     }
 
     public static void log(Object o) {
+//        Log.e("andre", Arrays.toString(Thread.currentThread().getStackTrace()));
+
         if(o instanceof Throwable) {
             Log.e("andre", "", (Throwable) o);
         } else {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 14be3fc..67ee18d 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -42,7 +42,7 @@
     <string name="hint_googlep">Did you know? Our official Google+ community is full of tips, experimental apks and discussions.\nYou can have a look with the cmd \"$ tui -googlep\"</string>
     <string name="hint_tutorial">Did you read the tutorial? If you don\'t remember how to view it, the cmd is \"$ tutorial\"</string>
     <string name="hint_theme">Did you know that you can easily switch your theme? Have a look at the cmd \"$ theme\"</string>
-    <string name="hint_theme2">Did you know? You can create your custom theme and share it to other users. Have a look at the cmd \"$ theme -new\"</string>
+    <string name="hint_theme2">Did you know? You can create your custom theme and share it to other users. Have a look at the cmd \"$ theme -create\"</string>
     <string name="hint_help">Are you having any doubts about a command? Just use the cmd \"$ help cmdName\"</string>
     <string name="hint_music">Did you know? You can listen your music without launching other apps but t-ui. Have a look at the cmd \"$ music\"</string>
     <string name="hint_appgroups">Did you know? t-ui 6.4 introduced App Groups, a feature that let\'s you customize your app suggestions, creating different categories.\nYou can get more details with the cmd
-- 
GitLab