From 4f9fe37613b21b2db9fe130004b6fd6a84991ef6 Mon Sep 17 00:00:00 2001
From: itdominator <1itdominator@gmail.com>
Date: Fri, 25 Nov 2022 00:34:16 -0600
Subject: [PATCH] added disable plugin load arg, added disk usage plugin,
updated icon gen
---
plugins/disk_usage/__init__.py | 3 +
plugins/disk_usage/__main__.py | 3 +
plugins/disk_usage/du_usage.glade | 129 ++++++++++++++++++
plugins/disk_usage/manifest.json | 12 ++
plugins/disk_usage/plugin.py | 104 ++++++++++++++
.../solarfm-0.0.1/SolarFM/solarfm/__main__.py | 2 +
.../SolarFM/solarfm/core/controller.py | 3 +-
.../tabs/icons/mixins/desktopiconmixin.py | 12 +-
.../usr/share/solarfm/fileicons/3g2.png | Bin 0 -> 3780 bytes
.../usr/share/solarfm/fileicons/3gp.png | Bin 0 -> 3771 bytes
.../usr/share/solarfm/fileicons/ai.png | Bin 0 -> 3547 bytes
.../usr/share/solarfm/fileicons/air.png | Bin 0 -> 3170 bytes
.../usr/share/solarfm/fileicons/asf.png | Bin 0 -> 3126 bytes
.../usr/share/solarfm/fileicons/avi.png | Bin 0 -> 3208 bytes
.../usr/share/solarfm/fileicons/bib.png | Bin 0 -> 3531 bytes
.../usr/share/solarfm/fileicons/cls.png | Bin 0 -> 1763 bytes
.../usr/share/solarfm/fileicons/csv.png | Bin 0 -> 4519 bytes
.../usr/share/solarfm/fileicons/deb.png | Bin 0 -> 2915 bytes
.../usr/share/solarfm/fileicons/djvu.png | Bin 0 -> 4973 bytes
.../usr/share/solarfm/fileicons/dmg.png | Bin 0 -> 2523 bytes
.../usr/share/solarfm/fileicons/doc.png | Bin 0 -> 1536 bytes
.../usr/share/solarfm/fileicons/docx.png | Bin 0 -> 4144 bytes
.../usr/share/solarfm/fileicons/dwf.png | Bin 0 -> 4319 bytes
.../usr/share/solarfm/fileicons/dwg.png | Bin 0 -> 3107 bytes
.../usr/share/solarfm/fileicons/eps.png | Bin 0 -> 2299 bytes
.../usr/share/solarfm/fileicons/epub.png | Bin 0 -> 2772 bytes
.../usr/share/solarfm/fileicons/exe.png | Bin 0 -> 2651 bytes
user_config/usr/share/solarfm/fileicons/f.png | Bin 0 -> 2050 bytes
.../usr/share/solarfm/fileicons/f77.png | Bin 0 -> 2187 bytes
.../usr/share/solarfm/fileicons/f90.png | Bin 0 -> 2212 bytes
.../usr/share/solarfm/fileicons/flac.png | Bin 0 -> 1121 bytes
.../usr/share/solarfm/fileicons/flv.png | Bin 0 -> 3181 bytes
.../usr/share/solarfm/fileicons/gif.png | Bin 0 -> 2802 bytes
.../usr/share/solarfm/fileicons/gz.png | Bin 0 -> 1480 bytes
.../usr/share/solarfm/fileicons/ico.png | Bin 0 -> 3130 bytes
.../usr/share/solarfm/fileicons/indd.png | Bin 0 -> 4031 bytes
.../usr/share/solarfm/fileicons/iso.png | Bin 0 -> 2704 bytes
.../usr/share/solarfm/fileicons/jpeg.png | Bin 0 -> 3319 bytes
.../usr/share/solarfm/fileicons/jpg.png | Bin 0 -> 3319 bytes
.../usr/share/solarfm/fileicons/log.png | Bin 0 -> 2486 bytes
.../usr/share/solarfm/fileicons/m4a.png | Bin 0 -> 3806 bytes
.../usr/share/solarfm/fileicons/m4v.png | Bin 0 -> 3178 bytes
.../usr/share/solarfm/fileicons/midi.png | Bin 0 -> 3511 bytes
.../usr/share/solarfm/fileicons/mkv.png | Bin 0 -> 1915 bytes
.../usr/share/solarfm/fileicons/mov.png | Bin 0 -> 3197 bytes
.../usr/share/solarfm/fileicons/mp3.png | Bin 0 -> 4064 bytes
.../usr/share/solarfm/fileicons/mp4.png | Bin 0 -> 3156 bytes
.../usr/share/solarfm/fileicons/mpeg.png | Bin 0 -> 3195 bytes
.../usr/share/solarfm/fileicons/mpg.png | Bin 0 -> 3195 bytes
.../usr/share/solarfm/fileicons/msi.png | Bin 0 -> 2655 bytes
.../usr/share/solarfm/fileicons/odp.png | Bin 0 -> 2895 bytes
.../usr/share/solarfm/fileicons/ods.png | Bin 0 -> 2435 bytes
.../usr/share/solarfm/fileicons/odt.png | Bin 0 -> 3701 bytes
.../usr/share/solarfm/fileicons/oga.png | Bin 0 -> 3163 bytes
.../usr/share/solarfm/fileicons/ogg.png | Bin 0 -> 5100 bytes
.../usr/share/solarfm/fileicons/ogv.png | Bin 0 -> 5921 bytes
.../usr/share/solarfm/fileicons/pdf.png | Bin 0 -> 3408 bytes
.../usr/share/solarfm/fileicons/png.png | Bin 0 -> 3014 bytes
.../usr/share/solarfm/fileicons/pps.png | Bin 0 -> 3178 bytes
.../usr/share/solarfm/fileicons/ppsx.png | Bin 0 -> 3306 bytes
.../usr/share/solarfm/fileicons/ppt.png | Bin 0 -> 3390 bytes
.../usr/share/solarfm/fileicons/pptx.png | Bin 0 -> 3942 bytes
.../usr/share/solarfm/fileicons/psd.png | Bin 0 -> 3898 bytes
.../usr/share/solarfm/fileicons/pub.png | Bin 0 -> 3822 bytes
.../usr/share/solarfm/fileicons/py.png | Bin 0 -> 2431 bytes
.../usr/share/solarfm/fileicons/qt.png | Bin 0 -> 3731 bytes
.../usr/share/solarfm/fileicons/ra.png | Bin 0 -> 3141 bytes
.../usr/share/solarfm/fileicons/ram.png | Bin 0 -> 3269 bytes
.../usr/share/solarfm/fileicons/rar.png | Bin 0 -> 3168 bytes
.../usr/share/solarfm/fileicons/rm.png | Bin 0 -> 3185 bytes
.../usr/share/solarfm/fileicons/rpm.png | Bin 0 -> 3278 bytes
.../usr/share/solarfm/fileicons/rtf.png | Bin 0 -> 2400 bytes
.../usr/share/solarfm/fileicons/rv.png | Bin 0 -> 3136 bytes
.../usr/share/solarfm/fileicons/skp.png | Bin 0 -> 3208 bytes
.../usr/share/solarfm/fileicons/spx.png | Bin 0 -> 1283 bytes
.../usr/share/solarfm/fileicons/sql.png | Bin 0 -> 1883 bytes
.../usr/share/solarfm/fileicons/sty.png | Bin 0 -> 1301 bytes
.../usr/share/solarfm/fileicons/tar.png | Bin 0 -> 2781 bytes
.../usr/share/solarfm/fileicons/tex.png | Bin 0 -> 2936 bytes
.../usr/share/solarfm/fileicons/tgz.png | Bin 0 -> 1757 bytes
.../usr/share/solarfm/fileicons/tiff.png | Bin 0 -> 3127 bytes
.../usr/share/solarfm/fileicons/ttf.png | Bin 0 -> 2699 bytes
.../usr/share/solarfm/fileicons/txt.png | Bin 0 -> 1734 bytes
.../usr/share/solarfm/fileicons/vob.png | Bin 0 -> 3184 bytes
.../usr/share/solarfm/fileicons/wav.png | Bin 0 -> 3169 bytes
.../usr/share/solarfm/fileicons/wmv.png | Bin 0 -> 3205 bytes
.../usr/share/solarfm/fileicons/xls.png | Bin 0 -> 4439 bytes
.../usr/share/solarfm/fileicons/xlsx.png | Bin 0 -> 4560 bytes
.../usr/share/solarfm/fileicons/xml.png | Bin 0 -> 1596 bytes
.../usr/share/solarfm/fileicons/xpi.png | Bin 0 -> 4283 bytes
.../usr/share/solarfm/fileicons/zip.png | Bin 0 -> 2099 bytes
91 files changed, 266 insertions(+), 2 deletions(-)
create mode 100644 plugins/disk_usage/__init__.py
create mode 100644 plugins/disk_usage/__main__.py
create mode 100644 plugins/disk_usage/du_usage.glade
create mode 100644 plugins/disk_usage/manifest.json
create mode 100644 plugins/disk_usage/plugin.py
create mode 100644 user_config/usr/share/solarfm/fileicons/3g2.png
create mode 100644 user_config/usr/share/solarfm/fileicons/3gp.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ai.png
create mode 100644 user_config/usr/share/solarfm/fileicons/air.png
create mode 100644 user_config/usr/share/solarfm/fileicons/asf.png
create mode 100644 user_config/usr/share/solarfm/fileicons/avi.png
create mode 100644 user_config/usr/share/solarfm/fileicons/bib.png
create mode 100644 user_config/usr/share/solarfm/fileicons/cls.png
create mode 100644 user_config/usr/share/solarfm/fileicons/csv.png
create mode 100644 user_config/usr/share/solarfm/fileicons/deb.png
create mode 100644 user_config/usr/share/solarfm/fileicons/djvu.png
create mode 100644 user_config/usr/share/solarfm/fileicons/dmg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/doc.png
create mode 100644 user_config/usr/share/solarfm/fileicons/docx.png
create mode 100644 user_config/usr/share/solarfm/fileicons/dwf.png
create mode 100644 user_config/usr/share/solarfm/fileicons/dwg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/eps.png
create mode 100644 user_config/usr/share/solarfm/fileicons/epub.png
create mode 100644 user_config/usr/share/solarfm/fileicons/exe.png
create mode 100644 user_config/usr/share/solarfm/fileicons/f.png
create mode 100644 user_config/usr/share/solarfm/fileicons/f77.png
create mode 100644 user_config/usr/share/solarfm/fileicons/f90.png
create mode 100644 user_config/usr/share/solarfm/fileicons/flac.png
create mode 100644 user_config/usr/share/solarfm/fileicons/flv.png
create mode 100644 user_config/usr/share/solarfm/fileicons/gif.png
create mode 100644 user_config/usr/share/solarfm/fileicons/gz.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ico.png
create mode 100644 user_config/usr/share/solarfm/fileicons/indd.png
create mode 100644 user_config/usr/share/solarfm/fileicons/iso.png
create mode 100644 user_config/usr/share/solarfm/fileicons/jpeg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/jpg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/log.png
create mode 100644 user_config/usr/share/solarfm/fileicons/m4a.png
create mode 100644 user_config/usr/share/solarfm/fileicons/m4v.png
create mode 100644 user_config/usr/share/solarfm/fileicons/midi.png
create mode 100644 user_config/usr/share/solarfm/fileicons/mkv.png
create mode 100644 user_config/usr/share/solarfm/fileicons/mov.png
create mode 100644 user_config/usr/share/solarfm/fileicons/mp3.png
create mode 100644 user_config/usr/share/solarfm/fileicons/mp4.png
create mode 100644 user_config/usr/share/solarfm/fileicons/mpeg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/mpg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/msi.png
create mode 100644 user_config/usr/share/solarfm/fileicons/odp.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ods.png
create mode 100644 user_config/usr/share/solarfm/fileicons/odt.png
create mode 100644 user_config/usr/share/solarfm/fileicons/oga.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ogg.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ogv.png
create mode 100644 user_config/usr/share/solarfm/fileicons/pdf.png
create mode 100644 user_config/usr/share/solarfm/fileicons/png.png
create mode 100644 user_config/usr/share/solarfm/fileicons/pps.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ppsx.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ppt.png
create mode 100644 user_config/usr/share/solarfm/fileicons/pptx.png
create mode 100644 user_config/usr/share/solarfm/fileicons/psd.png
create mode 100644 user_config/usr/share/solarfm/fileicons/pub.png
create mode 100644 user_config/usr/share/solarfm/fileicons/py.png
create mode 100644 user_config/usr/share/solarfm/fileicons/qt.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ra.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ram.png
create mode 100644 user_config/usr/share/solarfm/fileicons/rar.png
create mode 100644 user_config/usr/share/solarfm/fileicons/rm.png
create mode 100644 user_config/usr/share/solarfm/fileicons/rpm.png
create mode 100644 user_config/usr/share/solarfm/fileicons/rtf.png
create mode 100644 user_config/usr/share/solarfm/fileicons/rv.png
create mode 100644 user_config/usr/share/solarfm/fileicons/skp.png
create mode 100644 user_config/usr/share/solarfm/fileicons/spx.png
create mode 100644 user_config/usr/share/solarfm/fileicons/sql.png
create mode 100644 user_config/usr/share/solarfm/fileicons/sty.png
create mode 100644 user_config/usr/share/solarfm/fileicons/tar.png
create mode 100644 user_config/usr/share/solarfm/fileicons/tex.png
create mode 100644 user_config/usr/share/solarfm/fileicons/tgz.png
create mode 100644 user_config/usr/share/solarfm/fileicons/tiff.png
create mode 100644 user_config/usr/share/solarfm/fileicons/ttf.png
create mode 100644 user_config/usr/share/solarfm/fileicons/txt.png
create mode 100644 user_config/usr/share/solarfm/fileicons/vob.png
create mode 100644 user_config/usr/share/solarfm/fileicons/wav.png
create mode 100644 user_config/usr/share/solarfm/fileicons/wmv.png
create mode 100644 user_config/usr/share/solarfm/fileicons/xls.png
create mode 100644 user_config/usr/share/solarfm/fileicons/xlsx.png
create mode 100644 user_config/usr/share/solarfm/fileicons/xml.png
create mode 100644 user_config/usr/share/solarfm/fileicons/xpi.png
create mode 100644 user_config/usr/share/solarfm/fileicons/zip.png
diff --git a/plugins/disk_usage/__init__.py b/plugins/disk_usage/__init__.py
new file mode 100644
index 0000000..d36fa8c
--- /dev/null
+++ b/plugins/disk_usage/__init__.py
@@ -0,0 +1,3 @@
+"""
+ Pligin Module
+"""
diff --git a/plugins/disk_usage/__main__.py b/plugins/disk_usage/__main__.py
new file mode 100644
index 0000000..a576329
--- /dev/null
+++ b/plugins/disk_usage/__main__.py
@@ -0,0 +1,3 @@
+"""
+ Pligin Package
+"""
diff --git a/plugins/disk_usage/du_usage.glade b/plugins/disk_usage/du_usage.glade
new file mode 100644
index 0000000..1b609dc
--- /dev/null
+++ b/plugins/disk_usage/du_usage.glade
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
diff --git a/plugins/disk_usage/manifest.json b/plugins/disk_usage/manifest.json
new file mode 100644
index 0000000..8bcb387
--- /dev/null
+++ b/plugins/disk_usage/manifest.json
@@ -0,0 +1,12 @@
+{
+ "manifest": {
+ "name": "Disk Usage",
+ "author": "ITDominator",
+ "version": "0.0.1",
+ "support": "",
+ "requests": {
+ "ui_target": "context_menu_plugins",
+ "pass_fm_events": "true"
+ }
+ }
+}
diff --git a/plugins/disk_usage/plugin.py b/plugins/disk_usage/plugin.py
new file mode 100644
index 0000000..790caa2
--- /dev/null
+++ b/plugins/disk_usage/plugin.py
@@ -0,0 +1,104 @@
+# Python imports
+import os, threading, subprocess, time, inspect
+
+# Lib imports
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+# Application imports
+from plugins.plugin_base import PluginBase
+
+
+# NOTE: Threads WILL NOT die with parent's destruction.
+def threaded(fn):
+ def wrapper(*args, **kwargs):
+ threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start()
+ return wrapper
+
+# NOTE: Threads WILL die with parent's destruction.
+def daemon_threaded(fn):
+ def wrapper(*args, **kwargs):
+ threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start()
+ return wrapper
+
+
+
+
+class Plugin(PluginBase):
+ def __init__(self):
+ super().__init__()
+
+ self.name = "Disk Usage" # NOTE: Need to remove after establishing private bidirectional 1-1 message bus
+ # where self.name should not be needed for message comms
+
+ self.path = os.path.dirname(os.path.realpath(__file__))
+ self._GLADE_FILE = f"{self.path}/du_usage.glade"
+ self._du_dialog = None
+ self._du_store = None
+
+
+ def run(self):
+ self._builder = Gtk.Builder()
+ self._builder.add_from_file(self._GLADE_FILE)
+
+ classes = [self]
+ handlers = {}
+ for c in classes:
+ methods = None
+ try:
+ methods = inspect.getmembers(c, predicate=inspect.ismethod)
+ handlers.update(methods)
+ except Exception as e:
+ print(repr(e))
+
+ self._builder.connect_signals(handlers)
+
+ self._du_dialog = self._builder.get_object("du_dialog")
+ self._du_store = self._builder.get_object("du_store")
+ self._current_dir_lbl = self._builder.get_object("current_dir_lbl")
+
+ self._event_system.subscribe("show_du_menu", self._show_du_menu)
+
+ def generate_reference_ui_element(self):
+ item = Gtk.ImageMenuItem(self.name)
+ item.set_image( Gtk.Image(stock=Gtk.STOCK_HARDDISK) )
+ item.connect("activate", self._show_du_menu)
+ item.set_always_show_image(True)
+ return item
+
+ def _get_state(self, widget=None, eve=None):
+ self._event_system.emit("get_current_state")
+
+ def _set_current_dir_lbl(self, widget=None, eve=None):
+ self._current_dir_lbl.set_label(f"Current Directory:\n{self._fm_state.tab.get_current_directory()}")
+
+ def _show_du_menu(self, widget=None, eve=None):
+ self._fm_state = None
+ self._get_state()
+ self._set_current_dir_lbl()
+ self.load_du_data()
+ self._du_dialog.run()
+
+ def load_du_data(self):
+ self._du_store.clear()
+
+ path = self._fm_state.tab.get_current_directory()
+ # NOTE: -h = human readable, -d = depth asigned to 1
+ command = ["du", "-h", "-d", "1", path]
+ proc = subprocess.Popen(command, stdout=subprocess.PIPE)
+ raw_data = proc.communicate()[0]
+ data = raw_data.decode("utf-8").strip() # NOTE: Will return data AFTER completion (if any)
+ parts = data.split("\n")
+
+ # NOTE: Last entry is curret dir. Move to top of list and pop off...
+ size, file = parts[-1].split("\t")
+ self._du_store.append([size, file.split("/")[-1]])
+ parts.pop()
+
+ for part in parts:
+ size, file = part.split("\t")
+ self._du_store.append([size, file.split("/")[-1]])
+
+ def _hide_du_menu(self, widget=None, eve=None):
+ self._du_dialog.hide()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py
index e256a29..91e1fd0 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/__main__.py
@@ -29,9 +29,11 @@ def run():
# Add long and short arguments
parser.add_argument("--debug", "-d", default="false", help="Do extra console messaging.")
parser.add_argument("--trace-debug", "-td", default="false", help="Disable saves, ignore IPC lock, do extra console messaging.")
+ parser.add_argument("--no-plugins", "-np", default="false", help="Do not load plugins.")
parser.add_argument("--new-tab", "-t", default="", help="Open a file into new tab.")
parser.add_argument("--new-window", "-w", default="", help="Open a file into a new window.")
+
# Read arguments (If any...)
args, unknownargs = parser.parse_known_args()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
index c301a38..661f72e 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
@@ -26,7 +26,8 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi
cm = ContextMenu()
cm.build_context_menu()
- self.plugins.launch_plugins()
+ if args.no_plugins == "false":
+ self.plugins.launch_plugins()
for arg in unknownargs + [args.new_tab,]:
if os.path.isdir(arg):
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/shellfm/windows/tabs/icons/mixins/desktopiconmixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/shellfm/windows/tabs/icons/mixins/desktopiconmixin.py
index 3ee2a50..93105fb 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/shellfm/windows/tabs/icons/mixins/desktopiconmixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/shellfm/windows/tabs/icons/mixins/desktopiconmixin.py
@@ -3,6 +3,11 @@ import os, subprocess, hashlib
from os.path import isfile
# Gtk imports
+import gi
+gi.require_version('Gtk', '3.0')
+
+from gi.repository import Gtk
+from gi.repository import Gio
# Application imports
from .xdg.DesktopEntry import DesktopEntry
@@ -36,8 +41,13 @@ class DesktopIconMixin:
elif os.path.exists(icon):
return self.create_scaled_image(icon, self.sys_icon_wh)
else:
- alt_icon_path = ""
+ gio_icon = Gio.Icon.new_for_string(icon)
+ gicon = Gtk.Image.new_from_gicon(gio_icon, 32)
+ pixbuf = gicon.get_pixbuf()
+ if pixbuf:
+ return pixbuf
+ alt_icon_path = ""
for dir in self.ICON_DIRS:
alt_icon_path = self.traverse_icons_folder(dir, icon)
if alt_icon_path != "":
diff --git a/user_config/usr/share/solarfm/fileicons/3g2.png b/user_config/usr/share/solarfm/fileicons/3g2.png
new file mode 100644
index 0000000000000000000000000000000000000000..cccf50a8fa973db06465c39ba1dbbcc99447af26
GIT binary patch
literal 3780
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
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/ai.png b/user_config/usr/share/solarfm/fileicons/ai.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddb172fe56041dd50f9ba44be8fa53adcebdeaae
GIT binary patch
literal 3547
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
VFXbTjN|XQq002ovPDHLkV1mFFyNCb)
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/air.png b/user_config/usr/share/solarfm/fileicons/air.png
new file mode 100644
index 0000000000000000000000000000000000000000..076f08e7d7ad9bff52bdcc623586ea0aa5387b37
GIT binary patch
literal 3170
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
IM6N<$f)KSF&Hw-a
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/asf.png b/user_config/usr/share/solarfm/fileicons/asf.png
new file mode 100644
index 0000000000000000000000000000000000000000..b700cf40b964016385688aece63ef41bd4ab9666
GIT binary patch
literal 3126
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
QJOBUy07*qoM6N<$f>?~xy#N3J
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/avi.png b/user_config/usr/share/solarfm/fileicons/avi.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4436f748617621c45659611fa536693577e874f
GIT binary patch
literal 3208
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
FV1m)ijs^e#
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/cls.png b/user_config/usr/share/solarfm/fileicons/cls.png
new file mode 100644
index 0000000000000000000000000000000000000000..4759ad6f01d3aad46c74f210a7fa461cd01610d9
GIT binary patch
literal 1763
zcmaKr2{hDu6vxNVixDS1A%%q3qD>`95oeTj456Wt^q!L4NTWiAu`gj%V~uKL?3HCO
zqd|~9mYNy#{0=RowxPwIsf~=|KIQa?)`l~=l+9{h)Y5+Nf-nI5z^Ixn}GN6
zjfbBXcUEST?Jv}|3uZW0EJR21qFqLh5s%{rBchv%07Jf0NUl|=7O}%xV*f)
zqN1X*vJw=js;b(oQ&Uq@TU%RKS65$O-_X#|*x1QuWR0A47K0pCD02+aTfk8n*p`oE+VPSw$
zL_|bnWMouSRCIK7OiTT6
zDskY@cT-c-(KSREA&rgQyl|laa|9UI9|lkYTz@k%`O_yb`5Qtv^n5pPC9ZF(ZY>1D
zyGIwUX{u8lZf5Ab+f4NQasy_nBf@Z^C>?vyOe*$*BFO}fdt%w9?88G#4booDT;W+2
z;6m-;8Rn!X$Y?E%=+pTmxDsxA0x>W6WD+^>W5*C-wsPrRR-SDmd9)Wj6TctQSi4&4
zhu1by%Q94X(DY05k$A3dc`f=cyJ6sPSjJYNO$rX9`;PLATq;vx4PKOwM-AkoaW>muc2b<8S#FC)q8bP>8LvIUNd{L
zM^=B*!!<2>N`}ByZKIJwb;1_N5`#;%uz1)<<#?ELDAKO!ly>I1>U)k;p7B%yI?~7M
zUW--PvR%^tQ;o$$BFb3IIkoxp3}b!Zw)u)6D(uuzJ?m`Y3pFdA7$bJ2)8WI5Q}5c|
z=zF+JzR)DX?ow=LD^8x*5<%A>q`b=yV_yVRNKvJjnk@R8Ej+3{us!#J4TOC}y|naR
zhK(r@Om-yW`8n3ue%EuYEQ7pQ_=$O1GA2zmOaRNjB*Ax9UO`QYRyR=AiM;`L7B^G0
zD1R|_fIA|CP(riGTt-~t!D^T_3Cm$GRHIZc&g66{1j@l|J5+voz1p6=OR&7&ZJx_B
zC?@0(PKaq>vZdFO?sKbX1@f~g`W5D?b&*#UZm(O_Fo#K!#ACrimCcyzmUkM4o7k#M
z{B7j~YzM9J4Ie7O?5nORz9l`1r7TA?+IML`{?$^lCf`11k*+IrV;S$==|?41G7H~l
nNbCtA+uj`A`P&hu1s_X;B7Q5&@=|&6#!srNjeuusS!4eMD2>Cb
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/csv.png b/user_config/usr/share/solarfm/fileicons/csv.png
new file mode 100644
index 0000000000000000000000000000000000000000..869e3541b739b1c4380b52eb52e7f7307535d51b
GIT binary patch
literal 4519
zcmV;Y5m@etP)!t2JSKyJPf%Ts}+re4bzwIdy|HRimO+plmKng^@8#tdY+)6j)p08$FjBb!1wN>zVjzr#$D#Jzt<5B>0~wCCt$;KdUHujM&EBna(>HFQk9&5|oh$C9o)ZVCYsOrf)!7A)r|9zwZYBefJbdbq7&=mK
zR5&V|&xzq@5xw$pX5ciXQyDC#C@;DM_%qpzKvQ$5G8~t(Dx1qu_a9tKGg_~rN1lC%
zb|2kE$Il(7cecMpscedR&-T*tc`GTFjL`?X-lLrdKcYx%h;|&<4g>#)-v8tsT5$Cu
z`sur`(r{uJPzsL4IdUhNO44`;6>;8Y1TM*qjF5ODN}cU9Km<9Oa&NiV+j0(DKFL*ISi`}F8NPasE3`ry-dY4NP3v~s~}s;jJ{
z_dotG(lvejN|5XpWin}u%$SkJxg5w~JZ6{_hNEFxIPW_8!4uEXovZGnfkSZ_mo$K>
z?ZmlWaDj$J&ZBcfXQ?VsMbA9+0`UK3`kT8Rqm93LgBJe90{ZUD>*W`$M0QF^JdPc+0(j^h+awJ)r)SUm;d%Pdh^3KXld6Cw7+*R
z;5007={p^<-*}tZ>%kQMlmT9zk
z$FJl(LkRT*3;&^b|J|MMfYrR?u_^VWfI5;)#pNEwUM`Y*-XM?LOHR!xi8@lLxw!E>{MGC7<5>k+G}i|%a-0LqFiuOOczW1!Y3}sb
z?|FnOf|X;OtE%c)0}!TY?~&s@t3J1;>+@YVhdged)2TS62w65}*;5ASklBDC;BdHv
z61fudq@0-POhT?@#^m2dB#3G!F5jm*G`bdWtgEOOgVjSTYVZ7vWc;OKj)drhsPUrQq$fC{pVjQBxkZ~Y-
zj21;#Xd-Ph*|C28`nxx5*zj+M4+n=HZGj9+YX33Drr|5&8O>}nn
z3_R;Yg?EwRa0}jR0}XUd^DG#fr=i3U9N{9D?vgxWXewn?%1%-2yx6;Uua3n#?c!Sy
z1MYcg896-~r6cJ&uNw5|@Mz3Di#osp%^?P`#4x~4{6O~V?F;^j&J6Z}bqH5@r#RSvi{CG?!M+xr=`C{?qWW8%FqP%kE8d
zI)0Mc+B&g#w=5)EC`t0AS1qR-uU-Wx88{C;14$51#aLUA3J-InAaCRu9I=9{K$V_K
z($!Kij1EUL!;vWKkD@)S%XVZeBQk{)DkO>x=r!o67y+c9j}x26imr7uZ`uu%$(e#v
z4VCvWBzY_v1ykv$uBJ%vHS^ZdO|x!8Wp-fknNj^1P7IQa$wK?
zT~M+yYOHLgFL&Pu=yc1%Iht0P{N=@kycN<2G3|0CW=JJarIVQ?xp98vh{d9*G!FZA
z>#~*DvU4DpFB$81qfbC3EW)UfqNF3)vcUA#BX3d9`MuQ9dNm#B*(Kg{I-PW`|19;N
z8lZ37`~-QOe$1C1ui9ZunwEjJ=1*NHT8O1Z0`enfCL}k8;)B#t*J0lWSrLsQ1yVdw
zVL}5&BfuU*@>K?_;VCE1B?YHC*kUk#injE;2^Q%ELl{(F+d|>tA?iJT3{xw@SfA|M
zNjvs!qh)he;u_b8XciKX{y?rnEphrT%lpiFIT){NZo=YCXrb(+5s)0P@&X@DpqgNv
zT(6QUiPv*>Cv88v8D5GDuQPcub~{?9(@=Pb28Y5}Fjxh7@zhJ-rks|hhU!M#?G&Nd
z7^(;7yK#SlHhuD%NEXg9uEHMF3wd|)@K6BJ*KFw!j)XY^SsVW}p#cn+EG#$JfKbT*
zPU?>VnSG}|lIBBI4Uqr^E?qD}L$Xetaupu*p|B3?p_AwP=sO$M)8a*o0F#_RrWJX?
zk7fftJ-!o=i9wDyB_iAlXtGnGf~viA|I+(W3pz?P3iu$;vNnW@lSCi~;W0#p;SfnI
z{144igCf-3xe|>IaGHurVPfoZ8_60!6beyOa|`X+w+EipkeoX8^_>R9j?>rHex15n
z=G)PSq|U@8s-k~b7%~HKG`U|uZy?%9xxh2w$WXFu@v>)g83Pnbq=xBq_!xCIbyC0;
z5>Incnpr>B?wBkQV=Tm&ty01oFb1$$(6N+$>HHb(Jn%6kOjB}a>$VT+!JAY`{&YS8
z&l!}!^?bk3Bnv>i6oq97Xt!An$C=2`_A3P{p#RJwbkc9kM
z;|i)d>>^Z<#j!!`y|((!(fO9oQ{in>c051@R8+H4WxLwCC=G#D>m`~(Ilvis%%_cv9wi2PTQG7^q~3i)J=nORZI%
z=(3`84noeOd*wIwZb@OPQsmGjia5-onYpIrTAI~18yX3^%kGKU5N5ZbL>NWPEfL`@
zmI7!Ig?L0pSuCA5;RsMGjO4x|=mz@)%WD7&O0=qYr8Aj)
zEFLq<@jr@Nk9XO)M1_eIl~fD&bs3>sL@LIaleemgq*4VLUV=30?p_=B-kV
z;O{IE7NY5yS~r7|`8fUi_E(Vy5vuanf++lWRtQD}DFEs2W20RRRhJY`(@bR}kx23i
z4X}iy8Y|mSaJ<03Nnx|!R-&bSqY=r$=NKy7<3cpka5^GADe7C!>6e~cAol%PJ*IKBCgb?I;1$RnR_d(xTe$~<#V_rl}?Uw@I(g4L`b0KP`h}V
z@yRNbJF0?EXGuA-8jx*BBqKwGKS#|-3Afw>kG@JhG1DaX4LoNODwlJ?1*pl6w`0V}
zqKHD?u~2Ol%50Z36S?8x=#@o)!>z*$jg>8OJ%?~n=gm@yQ=mQO`*rGraPA-tFev!i%)*jQ}2srAVF`5QITbU{uJ#iP;Qq
z-(86TJYh|!ff_1W;E}AriQ7Bo<)FLL=5a-y$eO7r8&X+0zhuU8;5sa7GG<08hK0sc
zaf)K_E!-PR4KRn{1g-%td#6Jw(`c4#vwIA;u%U|j!%{ktNM_0e^LPU;gp0ZTmbrh1
zFHnu3J8rlc*Bnu4Ht@0-Lc&Ul^rQuOkV2icGi68365N+6HA9dKRyvoWkSB;DX$nP7
ztDA6^SHKDtl#C~6
z@HAM(%%SNBQA1^uDAOumwQTr$xuBtyx**)#HKK4~{)_YDTIA=4YD
z(~PDWlFYn;90eRB$zfrof!LrJ#t~pSuVeZ|T&i%cycZZXpm+O#1fZC=PNrg+x3=Z?
z>Y^|4{A4)e%*1n!VgZ~9-#S%YaT{JG;0Y-ezDkI@8l^VaVATa0sj;rfXliN**4Nkh
zL)Af_TlcCZ<75Yfa)6_1sTX$W@Q>R~-cG3r)(8aUZ*G=V$|I&?mM%Cq&_5Wn3z&6L
zCGOqUFJaFlb9)Al#l8srt>H5b_QrKpRai}-8&M48hR$TfL9_22dFNGXF1O1W3vJDvWDst-<%omgcFoC;LuC%AWsQ88E*8r?TppyF`1fmPJh~iTDCN-w0XY2upSPl-A~ZA@PTBVq{x=P{5(5kNxRh}t3wD&fj~a$zs1HY?4j!dE
zB=i5;fXR%TD014keADbC&it+zFqv`rvhS%f!^Y6){{Y6!FSTcHAgBNU002ovPDHLk
FV1ml(uT%g4
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/deb.png b/user_config/usr/share/solarfm/fileicons/deb.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5581ad1f784062671ced5047881499c3bc6c461
GIT binary patch
literal 2915
zcmV-p3!LcMPX^bY(7z;HL
ziWnh3Fa;rz1!72`Tr3jff)SFU&_s#_q_9Mmg)F$c?Ci|+_mSKAZD5t4-4_gH
zYenuW`q{S4XfjzX3Mdgc#Ljfmtc!N8n2VlTe5jb2Pr8r$UQ<((R*M2^@O~UfrF--(
z;Ps_n=iLv$+SHDCp&yiqR{$G56qR9v02~r>_#jlLj{~Nup)tAek#AtcI#6FM0!nJBVUhID?naHxg30a!NEOw4)Tw`0?r%niFYZ5p^&Y?r7ei);Yzme6lYtE#1gxn6
znP~v_<^WHeMd$5f0B3sui#9^hhWrbEhT`USNI!cw8efvRpO%U?k8;f`q
zPf*)s`KPyI@t3cKJx59h_4e7Qf9Dp)hS!HYN^s4{O3uCxEc|E-bB~-B58SRE%ssG<
z!O!mn<14c(AjE%bQht2WAOS{Vo(+uk?zX;kb(*Q;eA!w)}$c3Om3s{{u
z88WXv427q+gSD~UgIC^y+;?9FW!wnRXHJMtC{R$1M@w8IML$LM4F0b;-S<9({4aJQ
z+K#uNM-4&av87-U{F+?=Jvq^?-#UY3_B_sv6*rcsg!BpvU?|g#5cMz(mR@roQ>T5R
z^n!Eb6cm5ISEePwrCzlHZEbC_?e?38!QOdLh+ur}1~6az1}H=7;?_`wM~Q0_?S=;C
zqf2Q(Z-Vu?Q$#F5;y{u2tG7Tdms0{)UxJXKaq}X1572J@G@8%c2`r^u5-LJq9y(}|
zx~IB!rrO*(L2Ei{`t7JL^OP=J_4ME#%nBVgwRNdM+R
zVC0#Ys(AkJVjhs?5S&t~hU%-KtAm&vCu)rH#1kPpuh3
z0mf-SuboUB2N}5yKkNo&LX!uVnCGQ23F|~y%43n`AXfzC>Jgw_H?bl!t91=1A#&zX
zXHc3NK!Q$?orO6(aUDF_jgkNupGwdeT6t2ri{+k+Xf`OL8Zr7p5<^xlLFOdW`&War
zvRPw8FRRahd$d!)A*l~`_W_*mD-F!OmbK%b3bE__l}jGiQ=}$0%A^1V
zK)i32W
z_dx1PE#CT)yp_+bLS87T%%feR+MB&OWI-xZ4
zD3u>W*9s9hl~PV3asebT`i{(*Bp8WuR8k>YNnSS*52Gk7bN@|@6Ex0a3R~U^RjH$%
z<5Hd~(kH}uqQQ@=;TM`%O>Q(U4b*3hht#q;US)zPGf(WJRcAT4C7nqrXtX*X*xxrm
z^$M7#smOF%LIP%ga2qIB4MqFtX((*{JH}Kl5-Sl=XvIB~sWu9dN{1U%CaYASv9VDN
z(P`=63$X6_dl_ew{ZG8Y$gL(qC6O;BKq&Ct0c=E(n|P6nF007`*=$xzm_;!|#)4+d
z{^SmDyFSK?-&}`0O_ZO<&2)63%T^61`Cc7>&%Eo39U62U8^fgb@(@z_wo;@vQ=Tn)
zlv%L=vX9-y9HIlg%h!T)-rlbH0?k$FMwkhDX7T;K^-!#
zI2F2ARY-q*9yDx!n3r4N;`cW~vF#9Gu5j4^B^T@v%EJ4w;WID#q|>HQ!f~9M6i^fD
zn{qPmwUg!bmWj~#mmj0K^m^?7;qTz%ML$D=RxIx0))oKjc^iIm*jOS!a^ZPG&)0!v
zS^28D5Vt_w=3J<76)k2NI?H_P^I+aJ53PMiSbo#rKq1bfO&ZO#PmKkl({eOL&(nxq
zDNlHTdx3c|F0Df$JijL4p{J+kY%L0?rR2Lxz7n)?%3v;>E>85z=3=w2l+c&U?*3k&
zc+5q495`^KrX8BNO}FxgF_uopW$s|=Sf2Kv4}(Athw#n?cU?a7
z3Iwo`$Li?lINaOYTc{-;sDO~XM5HhzF2$vNiTlBeM(ubA+e*Hkqs2eh}hAKtZVS6fR<
z%lVqB(|&oq0v__lTeRjAg;ThXw`M)z3G=pve9C6#SF86t@AnVv9y0*+{+tc>F1j2YALfAQ}&{{^bX&waX9Fy;UN
N002ovPDHLkV1mTxdba=o
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/djvu.png b/user_config/usr/share/solarfm/fileicons/djvu.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3ed05deba51cc39dea3fb3c8ae7284c946c3bfc
GIT binary patch
literal 4973
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
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/dmg.png b/user_config/usr/share/solarfm/fileicons/dmg.png
new file mode 100644
index 0000000000000000000000000000000000000000..b52c92cda4e20ea86d849748b2010cfa3cdd950f
GIT binary patch
literal 2523
zcmV<12_*K3P)%|1976&iCJu48x#WnY9L~
z$x-I$=5jf5I-N8$H1r#6>rS3Ld4RLdg79;nv|
z%aWB>WpF*w=Xba$*?B&)BfR^3K5_riqepb=)Tx7q4-C115yn_p3C-!fB*hN0|NtjWa3v>u3Tx1
zg_>OhWA@Rk3UZ!ev6xn`
z1B)6jB!X-uCt$#nauhYqD8o#D0d6J3BxF$+PFO6g`57)Uc|6vNR$}89z6+}5$)$#h
znBl{FMHW~sJEfCxI9a4bDo*pW
zabdjA=ckW9{u`dL(cs_!Aft+?FLZ#%XjluG>8;?{W~bj()4tUM#mn|j_w^~#p@lNTj-59wt)AO^!V{(TEB5UuG=8$CaI&NLuext
zM%B`zVF#+$0wqC)A}bWh<#Ip*#OaGK?$8GxoL}_)kN!M_cO*J==m_=o^$W}=;yD@{
z8>gPG9xzTp7|t+cuBh%AO%ZboGhi5{>*;hFP|@iJd)}e9-yVelfB-PA8>IydGY-pz
z`T2QpeU8?yZKH?d4@uW_a=JVuV@w{y9J-pWtLLuUf$GlrypG{jnhJv@pRd8Jq#cqI+>~?Fpff3~k`SLt+g~gWJ
zI9F5y&vsp~OiN2p2r;qJvO1W5N`@<-MFAt2gTgdqK4-`6R48g-F^+0!EH{chpD)y`
zwWi5wPPy5QOKQ?8F#hSMH}Ss>M#5%9mlr6S0%-9cV5KO~Hi*37cpMeLi}BCrvc*m+
z-ue8-O;Bi|JddrSR(a0l)PQ9rOUmlh7K;kqzduTeL;|aSi9G-%G6ibHOv+qumDuSL
z^oooqLq&U6ai62BQNZh?$FUeC)7f%u)m}R^>_Bx|c{!L!#L0ow|L~pf3neMDNJFPr
z(TKRP6<+IF00(wPFN$|Kx||6`mqc-AGFjTRc{6?QyWar`==eV+3cCh`q=p@M=EyUL
zR7Im(w{KA(5EKRpr6QH+Haam*iTNa@vKg=rj7712cH_FJ6^mqu>>iBejPiX+@LGr0_|=>js`4-DMT=d;w^(?edrmxljy4;aSc#p9#yH+Le+
zX~A4v+$yre-C4yy1tl-^R3PB5n(Mj1OZ8?zUswaYv92);jn=oXr`fqU8W%hQv#6R1
zxL6?*rYH%yuybcOZQs6)QY`jRs9ccT?6_}m<;UYG+OS~*sVI4*6yLaspk|B|RW4XM@1dBPB%Smp#M|4;c3RQvb$qVTa
z4EWH6ErQJyIK&WI4sF)0MxQN8NMJS?4wC_1pPZaPHuALP_17snIZcV=9L>!o02N-}
zYT}(Dn8<-f=de4;j=B0}Cn5YL&}h)D$SpkEpkI
z7X^bJNQr6SK8mOYY17v`sjJHcgOCZeAd1xE^ij5up*wf}O-bmU*pnxsxVT=XXOn`7
zT3bVvV5zFQ>}Bh+)o7JlqJTr8Af!Zy)~smYIHu1VF99RcDj4_9)0-XB`DD~
zC`dcWXjV4aj%6aUGV?k8{jYx^54x>vlK~$GDPSVMKSX`s`ZgfuBbU7t-R)i7fRept
z)|*-bCN5PN@(Fa%j&Hn4H_)IqZrm&~;c(gEfD>?NrxY65y?gh`hhnv1)y1-T7VCm`
zIQzAZUJ6HUAq(v^8Ff=U@rb^;yQ}#%u-L}%h{dAN_iF{yOiqr0T@vK?g~2|I|9N!b
zETFLtk++Kv08DspmzP{%tI>xeG(CBXEcSIEgie~BnZ&(aukQDOg;476e+vcqFHm5f
z-hKB+#L|bAC#y>mze<(Xw0*mKMAxo#aE_|Zx+e+R{4r_(luB9J+_9DV`upqp*0kab
z@C07q`u+ER-RvJQ>-tb;d6|s(f8XSDHVS3ANER($n3
z5Q#)q-GP_cu#|T)pz{`voA_gKxv0M?EE(nC^3R!LOWC=U11wH%V*lqVCqXGYR2K^w
l<;brV?MUT)(fR);zyRw|0z75LrJ?`;002ovPDHLkV1h<+y`caA
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/doc.png b/user_config/usr/share/solarfm/fileicons/doc.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f615d16fb5abf9dd468f56c691403c97ed3e2de
GIT binary patch
literal 1536
zcmW;LdpOez7zgl;IhovY6i3Cna5@r+BE}+S3Kc51O75jR$+}D`%}(V$k)95+sU5dm
z#!$HoD|5fMxy>zRZe!aIqc-Q~e4h7xzt8*k`@FH|T^y7Yv=kr^h>|15&K1m~TP-gO
zPTvuD1q1?RpLcS%2iKE6Z&ASor*G37BI=wTwOxoAycj!qDeTSV1fECIoM-Z)Cy^ig
zmLD1#dJhyeG^DXJlk#lJl~PTi+Gd
zkw_#mr7$Pw{rjS73aGr9Qq@nXoz5+-$(Xctw2T4pLcfT~W>XHXYV-7Tu=5!Qlw0eYX1-Y>4NuW#rV
zHhc#f8yguc(N_>l&;%L~HV*pwxie*M}STPcx9q*CeT=B8nvdmnSMk#AQ)Ip;Fy9OQWF6O)>ax7f=Uh@Yv^?Y~k!w}W)ha$V{lDc0uRfIAw
zm(<;#7G{`DL2YmBwlWXh*Dn*R$zULSKAYawLFDcKB4wlGB@)97|xGMM*19^cufJFlB^=
z1cWWGR^n`D5i0XnIGK|sJLHbVqnDyChnV>X=zqcLMaZMHW@Fs_jI`qka;$-{s_Xg`
z)V^We)P_kL{m&Zl8<|{cPfrh(s*5IDPTd`hP=?1k$Rb57rG%dLz5~<7bgpT=W3F2)
zhseHh!mmBZ!QKeA{qLw}8n}|IHQ`l<%m?PM^c|Yj9YH28Z#kVR{>%*++zm0c_MkF4
zOM*pet>1rSsjgNlqf^YYRJC!dw73~&jt&v3^+wnrNmJ}CAa@V(F
z;L|C{rm1qzPkMJa-*T+Uary4jdfW9pSl;g42#l+B#z}&=?tsx$CN!gmcJ$E;!TPcG
zR}sAdkz-#=iuumY6gNi;GTQt%jQaVj%)EmAI}rz+ALOwgDHy*i`Tb16Mzwo$pb6kL
zzhW_OC@+(dt+E||)Y9s4@crv|BZFFIewqh#&6EL{MD%-QB7#0fhZ;ZG92(LxP+=W8
zi;Fy{I`Yw*=rOS^wZ-(Lj=ZKu(8o*jYK)^U=oDR59t`4I=k4ih9sC$>MpL0%npj&~XGd7Pz48ejLWW0U
zbspv)AwA!$b4X8^$zdzZc)p`s`5U)WcU;0Y{-&6H&SO{0S`u`dS_o7u-99d7C~F`S
zA@+Ku9(i_#5LhHNijUV$&Sf3POYr^`v!zZ>9tPPkoM11b<0PZV+l(^&JXa37rvSSQ
zq}d@S%~fi&aprsi(*V&ISL`WNFNuoO&7<^zByBc1fH&Ipe*7O4OO{H;J-s0?Op7O
IZGG|o0m92xYybcN
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/docx.png b/user_config/usr/share/solarfm/fileicons/docx.png
new file mode 100644
index 0000000000000000000000000000000000000000..377ecc729ed4659b00b5635b7d3b2041496f0086
GIT binary patch
literal 4144
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
uUnHL)01JBKLp!*bvAd$Oy&&0000D
literal 0
HcmV?d00001
diff --git a/user_config/usr/share/solarfm/fileicons/dwf.png b/user_config/usr/share/solarfm/fileicons/dwf.png
new file mode 100644
index 0000000000000000000000000000000000000000..349610c2718c00cc023ea2f02b30b941d7cbac9a
GIT binary patch
literal 4319
zcmV<55Fqb~P)$mdpU^7(t=|#Y2$YjpK+ygaJ`tU>p_YD6)vb9TE;kgdh$AMkj0r
zvJjHc=_K7vr@O1Wy1KfSx86H{RFgo0lEm=G+;iTkdavr;-~Ha-@B7={6G|!mKM!Ni
z3sa^{(at~r{F`js)=Q;QSqLExra+|>N=8(?K&jAA7K-J*&d$ysIF5sqk}wQuX=&lg
zE3aVAoH@9z%jxsy)8E&}<11IP=Z5bEU~q8Ix$(vuuUAS@sZ_VL<59iHb=C>E)yt!2DW04W*G=l<~6?;l&dzjM9QV&8LC
z$6_%o)5NkYG7XLN^z{KSoX!4pKB_>HPCPJqft{Ks9hcV_EkYQ-3$ep({fCX>&P$u$KQc
zX7TL$A%3_v$H)KJ%W;qNaKlSEa=~sThoK~w8+n`BfBl%ls0nhh$&3oN-OFnepefPi6-QE4(0eEl}(l>1;Hv9yfI**07-%ZU}D_^R-eSGE0
z{+C{Q>ELrQOe-DTsS{0vRxF
zn3zIv!Bmaqy<_}K&S80*$A;I|kaq*(jzfJajTN^D0>y{UI;+)o9ChX8my3f6V9l@2
zL4Dx2U`}F(7Ux^*zY9~K{r$syXWIuM0N#L}^vCI*b{FN&Cc+X}*#esMsG#xDMvd=x
zP34+YmU~X?Bv%9#hJ;~=@B8F)c^+M{g5!=qp2Zhl*uUiKUvE1o02V*o#RKaXa#j0l
z{BryhzBKu6UcdEQT(<5h4!h(T&I{lKBhRVfGL9L%mX4>JAqku2J(biXnmR}vhDQfk-n=J@fdO;BS&q=AxP<L{7Ln@&pA4p7Jpny^chLHHtFm+MDZ@UjU*g;>~hE(+mhIP$)rd9ryvnd{6>Cn(*C9(B&(R45wQoGjh_cZYC96&(;GKhc>Lf-t%4L||(L`W;XOaI+9pcxA?sEL!(Wb;i&KzYLyFaipEz*AGFKb;d5$
z_|mNV&>k4Z9cYKdItZb=(n>aL=90$klzkH^t8$U5x&}aoa{mDYLJM1&NI>?nNh
z%&B~K@qN@8eeirIY{|e@mv78CkCWFu4MRYF4s4$V+ot1$c^+Eu5!A(k?$OzZ?`VrFVIa%@9<<=f4+u+?Z-f44xE0d#2_j`
z(Sw10PCfEa45OA%Ndy8BDnKD7G$5onkT_5!lSH5aK`3c!80QlweTpkSYBKkW0au^9
zk*g0~j%t?hKr?@Pc_FWUHN)s@O9sKN$*ID$}t03V(=M)Y<
zel_dwznsG}+d+#%q72q%sM!difH55c1=0uM!>|uyIiCDKyxKaA#T!>LddpcH_C`NM
zMs?xEF&H0%omp774ay@tbY3&_52>fiHA&Vu7`l!S)m%u0VwZdXCHK>fMgW>bi3p`d
zC>4Sbn5IQCQG*t<*wkO(mJ7~c=`9PH)M~SA$miU#G~aGGj=G(_JZ~hRzaIv6!nPiG
zbsG#1@R4KVthwY+W;LeR;+mvW2^`1S6>XK8kSQY6#LkC8?I#DMB8n8+TO*(l2qB2s
zG3rwpWF*-%nCIx39XxeIE6;B1=iUuF`P$%Y?r%Ai<9arMG7+X=c2j~6zQ2L9XSXoD
zv6lXl!dEexQ*|V25*VggW!oOcF6D$5iuRMl@03bU=n_LSh}kjH=`@CBFqF$7WyF!4
zEi9ecLdB0*tLBjmeJ=A#=%zufW1$d?1(Mf`8a446n(I;|5(!K@h9*Q+>wCz1Q@&t-
zH4sG*MF |