diff --git a/lazy_player/__init__.py b/lazy_player/__init__.py
index 6dcaa38..7f471d4 100644
--- a/lazy_player/__init__.py
+++ b/lazy_player/__init__.py
@@ -11,6 +11,8 @@ from gi.repository import Gdk, Gtk  # NOQA: E402
 
 
 class MainWindow(Gtk.ApplicationWindow):
+    file_info_label: Gtk.Label
+
     def __init__(self, *args: Any, **kwargs: Any):
         super().__init__(*args, **kwargs)
 
@@ -30,8 +32,8 @@ class MainWindow(Gtk.ApplicationWindow):
         left_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
         left_box.set_valign(Gtk.Align.CENTER)
         left_box.set_halign(Gtk.Align.FILL)
-        left_label = Gtk.Label(label="Left Side")
-        left_box.append(left_label)
+        self.file_info_label = Gtk.Label(label="")
+        left_box.append(self.file_info_label)
 
         # Right two-thirds (2/3 width)
         right_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
@@ -46,7 +48,9 @@ class MainWindow(Gtk.ApplicationWindow):
         # Create list store and view
         list_store = Gtk.StringList()
         list_view = Gtk.ListView()
-        list_view.set_model(Gtk.SingleSelection.new(list_store))
+        selection_model = Gtk.SingleSelection.new(list_store)
+        selection_model.connect("selection-changed", self._on_selection_changed)
+        list_view.set_model(selection_model)
         list_view.set_vexpand(True)
 
         # Factory for list items
@@ -65,39 +69,56 @@ class MainWindow(Gtk.ApplicationWindow):
 
         self.set_child(main_box)
 
-    def _setup_list_item(self, factory: Gtk.SignalListItemFactory, list_item: Gtk.ListItem) -> None:
+    def _setup_list_item(self, factory: Gtk.SignalListItemFactory, list_item: Gtk.ListItem):
         label = Gtk.Label()
         label.set_halign(Gtk.Align.START)
         list_item.set_child(label)
 
-    def _bind_list_item(self, factory: Gtk.SignalListItemFactory, list_item: Gtk.ListItem) -> None:
+    def _bind_list_item(self, factory: Gtk.SignalListItemFactory, list_item: Gtk.ListItem):
         label = cast(Gtk.Label, list_item.get_child())
         item = cast(Gtk.StringObject, list_item.get_item())
         label.set_text(item.get_string())
 
+    def _on_selection_changed(
+        self,
+        selection_model: Gtk.SingleSelection,
+        position: int,
+        n_items: int,
+    ):
+        if selection_model.get_selected() == Gtk.INVALID_LIST_POSITION:
+            self.file_info_label.set_text("")
+        else:
+            selected_item = selection_model.get_selected_item()
+            if selected_item:
+                string_obj = cast(Gtk.StringObject, selected_item)
+                self.file_info_label.set_text(string_obj.get_string())
+
     def _populate_file_list(self, list_store: Gtk.StringList) -> None:
         # TODO: Implement proper version sort (strverscmp equivalent)
 
-        directories: list[str] = [".."]
+        directories: list[str] = ["../"]
         files: list[str] = []
 
         with os.scandir(".") as it:
             for entry in it:
                 if entry.name == ".." or not entry.name.startswith("."):
                     if entry.is_dir():
-                        directories.append(entry.name)
+                        directories.append(entry.name + "/")
                     else:
                         files.append(entry.name)
 
         directories.sort(key=lambda x: x.lower())
         files.sort(key=lambda x: x.lower())
 
-        for name in directories:
-            list_store.append(f"{name}/")
+        while list_store.get_n_items():
+            list_store.remove(0)
 
-        for name in files:
+        for name in directories + files:
             list_store.append(name)
 
+        all = directories + files
+        self.file_info_label.set_text(all[0] if all else "")
+
 
 class App(Gtk.Application):
     def __init__(self):