diff --git a/lazy_player/__init__.py b/lazy_player/__init__.py
index 40fb9be..1ce6f27 100644
--- a/lazy_player/__init__.py
+++ b/lazy_player/__init__.py
@@ -231,6 +231,23 @@ class MainWindow(Gtk.ApplicationWindow):
         item.connect("notify::saved-position", update_icon)
         update_icon()
 
+    def _refresh(self):
+        selected = self.selection.full_path
+        self._populate_file_list()
+
+        for i in range(self.list_model.get_n_items()):
+            item = self.list_model.get_item(i)
+            if not item:
+                continue
+
+            file_item = cast(FileItem, item)
+
+            if file_item.full_path == selected:
+                self.list_view.scroll_to(
+                    i, Gtk.ListScrollFlags.SELECT | Gtk.ListScrollFlags.FOCUS, None
+                )
+                break
+
     def _navigate_to(self, path: Path):
         self.directory_history.append(Path(os.getcwd()))
         os.chdir(path)
@@ -262,8 +279,6 @@ class MainWindow(Gtk.ApplicationWindow):
                 )
                 break
 
-        return True
-
     def _on_selection_changed(
         self,
         selection_model: Gtk.SingleSelection,
@@ -373,6 +388,10 @@ class MainWindow(Gtk.ApplicationWindow):
             self.close()
             return True
 
+        elif keyval == Gdk.keyval_from_name("r"):
+            self._refresh()
+            return True
+
         elif keyval == Gdk.keyval_from_name("w"):
             self._toggle_watched_status()
             return True