diff --git a/README.md b/README.md
index bbd0e55..7143660 100644
--- a/README.md
+++ b/README.md
@@ -240,6 +240,40 @@ and vanishes as soon as you disconnect.
+### File-browser / tree integrations
+
+
+Oil.nvim
+
+`remote-sshfs.nvim` also provides convenience helpers for
+[oil.nvim](https://github.com/stevearc/oil.nvim):
+
+```lua
+-- lua/plugins/oil.lua / wherever you configure oil.nvim
+
+require("oil").setup {
+ columns = {
+ "icon",
+ require("remote-sshfs.filebrowser.oil").column { hl = "DiagnosticHint" },
+ "mtime",
+ },
+}
+
+-- Alternatively (or additionally) show the host in the win-bar of every Oil
+-- buffer:
+require("remote-sshfs.filebrowser.oil").attach_winbar { hl = "DiagnosticHint" }
+```
+
+Result (only while connected):
+
+```
+ myserver …
+```
+
+The helpers automatically hide themselves when you disconnect.
+
+
+
## 🤝 Contributing
If you find a bug or have a suggestion for how to improve remote-sshfs.nvim or additional functionality, please feel free to submit an issue or a pull request. We welcome contributions from the community and are committed to making remote-sshfs.nvim as useful as possible for everyone who uses it.
diff --git a/lua/remote-sshfs/filebrowser/oil.lua b/lua/remote-sshfs/filebrowser/oil.lua
new file mode 100644
index 0000000..326d513
--- /dev/null
+++ b/lua/remote-sshfs/filebrowser/oil.lua
@@ -0,0 +1,77 @@
+-- remote-sshfs ⇄ oil.nvim integration
+--
+-- This helper adds visual cues inside Oil buffers when the user browses a
+-- directory located on a remote-sshfs mount.
+--
+-- 1. Column – shows " " in the root row
+-- 2. Winbar – sets the same label in the local winbar for Oil buffers
+
+local helper = require "remote-sshfs.integration"
+
+local M = {}
+
+-------------------------------------------------------------------------------
+-- utils ----------------------------------------------------------------------
+-------------------------------------------------------------------------------
+
+local function host_label()
+ return helper.label()
+end
+
+-------------------------------------------------------------------------------
+-- 1. Column ------------------------------------------------------------------
+-------------------------------------------------------------------------------
+
+---Create an Oil column module displaying the current host label.
+---@param opts table|nil { hl = 'HighlightGroup' }
+function M.column(opts)
+ opts = opts or {}
+
+ return function()
+ local label = host_label()
+ if not label then
+ return nil
+ end
+
+ local hl = opts.hl or "DiagnosticHint"
+ return {
+ ---@param entry table Oil row entry
+ ---@return string, string? text, highlight
+ get_text = function(entry)
+ if entry.name == "." then
+ return label, hl
+ end
+ return "", nil
+ end,
+ column_width = #label,
+ }
+ end
+end
+
+-------------------------------------------------------------------------------
+-- 2. Winbar ------------------------------------------------------------------
+-------------------------------------------------------------------------------
+
+function M.attach_winbar(opts)
+ opts = opts or {}
+
+ vim.api.nvim_create_autocmd("FileType", {
+ pattern = "oil",
+ group = vim.api.nvim_create_augroup("RemoteSSHFSOilWinbar", { clear = true }),
+ callback = function()
+ local label = host_label()
+ if not label then
+ vim.opt_local.winbar = nil
+ return
+ end
+
+ local hl = opts.hl or "DiagnosticHint"
+ if hl and vim.fn.hlexists(hl) == 1 then
+ label = string.format("%%#%s#%s%%*", hl, label)
+ end
+ vim.opt_local.winbar = label
+ end,
+ })
+end
+
+return M
diff --git a/lua/remote-sshfs/integration.lua b/lua/remote-sshfs/integration.lua
new file mode 100644
index 0000000..76a5971
--- /dev/null
+++ b/lua/remote-sshfs/integration.lua
@@ -0,0 +1,44 @@
+-- Shared helper functions used by various optional UI integrations
+-- (statusline, file browser columns, etc.). Keeping them here avoids code
+-- duplication between individual adapters like *statusline.lua* or
+-- *filebrowser/oil.lua*.
+
+local M = {}
+
+-------------------------------------------------------------------------------
+-- Icon -----------------------------------------------------------------------
+-------------------------------------------------------------------------------
+
+M.icon = vim.g.remote_sshfs_status_icon or "" -- nf-mdi-server (similar to VSCode)
+
+-------------------------------------------------------------------------------
+-- Host info ------------------------------------------------------------------
+-------------------------------------------------------------------------------
+
+-- Returns current host table or nil
+local function current_host()
+ local ok, conn = pcall(require, "remote-sshfs.connections")
+ if not ok or type(conn) ~= "table" then
+ return nil
+ end
+ if not conn.is_connected or not conn.is_connected() then
+ return nil
+ end
+ if not conn.get_current_host then
+ return nil
+ end
+ return conn.get_current_host()
+end
+
+-- Public helper: Returns nil when not connected, else " hostname"
+function M.label()
+ local host = current_host()
+ if not host then
+ return nil
+ end
+
+ local name = host.Name or host.Host or host.HostName or host.host or "remote"
+ return string.format("%s %s", M.icon, name)
+end
+
+return M
diff --git a/lua/remote-sshfs/statusline.lua b/lua/remote-sshfs/statusline.lua
index 483ccc5..a0953ad 100644
--- a/lua/remote-sshfs/statusline.lua
+++ b/lua/remote-sshfs/statusline.lua
@@ -1,35 +1,14 @@
-local M = {}
-
--- Default icon displayed when a connection is active. Nerd-font compatible.
--- Users can override this by setting `vim.g.remote_sshfs_status_icon` before
--- the plugin is loaded or by changing `M.icon` afterwards.
-M.icon = vim.g.remote_sshfs_status_icon or "" -- nf-mdi-server
+local helper = require "remote-sshfs.integration"
--- Return a short human-readable string that represents the current connection
--- state. If no connection is active an empty string is returned so that the
--- statusline stays unchanged.
---
--- Examples:
--- "" – when not connected
--- " myserver" – when connected to host *myserver*
-function M.status()
- local ok, conn = pcall(require, "remote-sshfs.connections")
- if not ok or type(conn) ~= "table" then
- return ""
- end
+local M = {}
- if not conn.is_connected or not conn.is_connected() then
- return ""
- end
+-- Expose icon through the same table (backwards-compat).
+M.icon = helper.icon
- local host_tbl = conn.get_current_host and conn.get_current_host() or nil
- local name = "remote"
- if host_tbl and type(host_tbl) == "table" then
- -- Prefer the explicit entries we create while parsing the ssh-config.
- name = host_tbl.Name or host_tbl.Host or host_tbl.host or name
- end
+-- Delegated helpers ----------------------------------------------------------
- return string.format("%s %s", M.icon, name)
+function M.status()
+ return helper.label() or ""
end
-------------------------------------------------------------------------------