diff --git a/README.md b/README.md
index 329c271..74808c6 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,6 @@ sudo apt-get install python3 wget ffmpegthumbnailer steamcmd
# TODO
- Add "clear trash", "restore from trash" options.
-- Add drive size free and consumed info to bottom bar.
- Add simpleish plugin system to run bash/python scripts.
- Add DnD context awareness for over folder drop.
diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py
index 402138c..dd0f5d8 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py
@@ -45,7 +45,6 @@ class Controller(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin, \
def tear_down(self, widget=None, eve=None):
- event_system.monitor_events = False
event_system.send_ipc_message("close server")
self.window_controller.save_state()
time.sleep(event_sleep_time)
diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py
index f38a8f8..87babef 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py
@@ -12,6 +12,14 @@ from gi.repository import Gtk, GObject, Gio
class WidgetFileActionMixin:
+ def sizeof_fmt(self, num, suffix="B"):
+ for unit in ["", "K", "M", "G", "T", "Pi", "Ei", "Zi"]:
+ if abs(num) < 1024.0:
+ return f"{num:3.1f} {unit}{suffix}"
+ num /= 1024.0
+ return f"{num:.1f} Yi{suffix}"
+
+
def set_file_watcher(self, view):
if view.get_dir_watcher():
watcher = view.get_dir_watcher()
@@ -21,12 +29,12 @@ class WidgetFileActionMixin:
cur_dir = view.get_current_directory()
# Temp updating too much with current events we are checking for.
- # Causes invalid iter errors in WidbetMixin > update_store
+ # Seems to cause invalid iter errors in WidbetMixin > update_store
if cur_dir == "/tmp":
watcher = None
return
- dir_watcher = Gio.File.new_for_path(cur_dir) \
+ dir_watcher = Gio.File.new_for_path(cur_dir)
.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, Gio.Cancellable())
wid = view.get_wid()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py
index dc88ace..02369f4 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py
@@ -6,7 +6,7 @@ from os.path import isdir, isfile
# Lib imports
import gi
gi.require_version('Gdk', '3.0')
-from gi.repository import Gdk
+from gi.repository import Gdk, Gio
# Application imports
from . import TabMixin, WidgetMixin
@@ -79,7 +79,35 @@ class WindowMixin(TabMixin):
def set_bottom_labels(self, view):
- self.bottom_size_label.set_label("TBD")
+ _wid, _tid, _view, iconview, store = self.get_current_state()
+ selected_files = iconview.get_selected_items()
+ path_file = Gio.File.new_for_path( view.get_current_directory())
+ mount_file = path_file.query_filesystem_info(attributes="filesystem::*", cancellable=None)
+ formatted_mount_free = self.sizeof_fmt( int(mount_file.get_attribute_as_string("filesystem::free")) )
+ formatted_mount_size = self.sizeof_fmt( int(mount_file.get_attribute_as_string("filesystem::size")) )
+
+ # If something selected
+ self.bottom_size_label.set_label(f"{formatted_mount_free} free / {formatted_mount_size}")
+ self.bottom_path_label.set_label(view.get_current_directory())
+ if len(selected_files) > 0:
+ uris = self.format_to_uris(store, _wid, _tid, selected_files)
+ combined_size = 0
+ for uri in uris:
+ file = Gio.File.new_for_uri(uri).query_info(attributes="standard::size",
+ flags=Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
+ cancellable=None)
+ file_size = file.get_size()
+ combined_size += file_size
+
+ formatted_size = self.sizeof_fmt(combined_size)
+ if view.hide_hidden:
+ self.bottom_path_label.set_label(f" {len(uris)} / {view.get_files_count()} ({formatted_size})")
+ else:
+ self.bottom_path_label.set_label(f" {len(uris)} / {view.get_not_hidden_count()} ({formatted_size})")
+
+ return
+
+ # If nothing selected
if view.hide_hidden:
if view.get_hidden_count() > 0:
self.bottom_file_count_label.set_label(f"{view.get_not_hidden_count()} visible ({view.get_hidden_count()} hidden)")
@@ -87,7 +115,7 @@ class WindowMixin(TabMixin):
self.bottom_file_count_label.set_label(f"{view.get_files_count()} items")
else:
self.bottom_file_count_label.set_label(f"{view.get_files_count()} items")
- self.bottom_path_label.set_label(view.get_current_directory())
+
def set_window_title(self):